当前位置: 首页 > news >正文

C51单片机学习笔记——定时器与中断

51单片机的定时器/计数器是其实现精确时间控制、延时、脉冲计数、PWM、串口波特率生成等功能的基石。中断系统则提供了CPU及时响应这些定时器溢出事件(或其他内外事件)的机制,使单片机能够“同时”处理多个任务或在后台进行定时操作。

一、定时器

1、什么是定时器

在51单片机中的定时器属于内部资源,其他电路的连接和运转都是在单片机的内部执行的。

2、定时器的作用

(1)用于计时系统,可实现软件计时,使程序每隔固定的一段时间执行一项操作。

(2)提高CPU的运行效率和处理速度。

(3)STC89C52定时器资源,定时器的个数有三个(T0、T1、T2),T0与T1的传统51单片机兼容,T2是此型号单片机增加的内部资源。

注:定时器的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,T0和T1的操作方式是所有51单片机所共有的。

3、定时器的工作模式

我们通常使用16位定时器/计数器,其核心原理是

  • 由两个8位寄存器 THx(高8位)和 TLx(低8位)组成(x=0/1对应定时器0/1)。

  • 计数器从初值开始每个机器周期加1,溢出时产生中断。

  • 最大计数值 = 216=65536216=65536(从 0x0000 到 0xFFFF)。

  1. 时钟来源(由 TMOD 寄存器控制):

    • 定时器模式C/T=0):
      计数脉冲 = 单片机晶振频率 f /12
      (传统8051的1个机器周期 = 12个时钟周期)。

    • 计数器模式C/T=1):
      计数脉冲 = 外部引脚(T0/P3.4 或 T1/P3.5)的下降沿。 

  2. 中断系统:

    • 本质: 一种硬件机制,允许CPU在执行主程序时,暂停当前任务,立即响应来自内部或外部的紧急事件(中断请求),执行一段特定的程序(中断服务程序 - ISR),执行完毕后返回到主程序被中断的地方继续执行。

    • 中断源 (Interrupt Sources): 51单片机有5个(或6个,取决于型号)基本中断源:

      • INT0 - 外部中断0 (P3.2引脚)

      • INT1 - 外部中断1 (P3.3引脚)

      • TF0 - 定时器/计数器T0溢出中断

      • TF1 - 定时器/计数器T1溢出中断

      • TI/RI - 串行口发送完成/接收完成中断 (通常共享一个中断向量)

      • TF2/EXF2 - (增强型51如AT89S52等) 定时器T2溢出/捕获中断

    • 中断处理流程:

      1. 中断请求 (Interrupt Request): 中断源事件发生,相应的中断请求标志位(如TF0IE0等)被硬件置1

      2. 中断响应 (Interrupt Response):

        • 当前指令执行完毕。

        • CPU检查全局中断允许位 (EA)该中断源的中断允许位 (ETxEXx等)是否都为1。

        • 检查中断优先级(如果存在更高优先级中断正在执行或被挂起,则需等待)。

        • 满足响应条件后,CPU硬件自动完成:

          • 当前程序计数器(PC)值压入堆栈(保护断点)。

          • 根据中断源,跳转到固定的程序存储器地址(中断向量地址)

      3. 执行中断服务程序 (Interrupt Service Routine - ISR):

        • 程序员在中断向量地址处放置一条跳转指令 (LJMPAJMP),跳转到实际的ISR代码。

        • ISR中:

          • 通常首先保护现场(将ISR中会用到的寄存器如ACCPSWDPTR等压入堆栈)。

          • 执行处理该中断事件的核心代码

          • 清除中断请求标志位(对于TF0TF1等需要软件清零的标志位,必须在ISR中清除,否则会不断触发中断)。

          • 恢复现场(弹出堆栈恢复寄存器)。

          • RETI (Return from Interrupt) 指令结束。RETI不仅弹出断点地址到PC,还会通知CPU中断处理结束。

      4. 中断返回: 执行RETI后,CPU从堆栈弹出断点地址到PC,继续执行主程序。

    • 主要寄存器:

      • IE (Interrupt Enable Register): 中断允许寄存器。控制各个中断源的开关以及总开关。

        • 关键位:EA (全局中断允许位), ETx (定时器x中断允许位), EXx (外部中断x允许位), ES (串口中断允许位)。

      • IP (Interrupt Priority Register): 中断优先级寄存器。51单片机有2个优先级(高优先级和低优先级)。通过IP可以设置每个中断源的优先级。高优先级中断可以打断正在执行的低优先级中断,同优先级中断按自然优先级顺序响应(INT0 > TF0 > INT1 > TF1 > RI/TI)。

      • TCON / SCON: 也包含部分中断请求标志位 (TFxIE0IE1TIRI)。

http://www.dtcms.com/a/289250.html

相关文章:

  • Image Processing 【Normlize和DeNormlize】
  • 【Linux】3. Shell语言
  • Oracle触发器:数据世界的“隐形守护者“
  • EXPLAIN 用法详解(表格)
  • 数据结构-线性表顺序表示
  • 【Linux内核模块】导出符号详解:模块间的“资源共享”机制
  • 子查询转连接查询
  • 30天打牢数模基础-模糊综合评价讲解
  • Vue基础(21)_Vue生命周期
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 用户注册实现
  • 《拆解WebRTC:NAT穿透的探测逻辑与中继方案》
  • 力扣49:字母异形词分组
  • 处理Electron Builder 创建新进程错误 spawn ENOMEM
  • 下载win10的方法
  • 构建一个简单的Java框架来测量并发执行任务的时间
  • Linux安装jdk和maven教程
  • 论文解读:基于时域相干累积的UWB Radar 生命体征检测
  • PyTorch里的张量及张量的操作
  • The FastMCP Client
  • 反欺诈业务 Elasticsearch 分页与导出问题分析及解决方案
  • Kotlin函数式接口
  • 第六章 提炼:萃取本质--创建第二大脑读书笔记
  • 【esp32s3】4 - 从零开始入门 MQTT
  • Selenium 处理动态网页与等待机制详解
  • 谷歌开源项目MCP Toolbox for Databases实操:Docker一键部署与配置指南
  • zabbix服务器告警处理
  • 搜索文本2.6.2(从word、wps、excel、pdf和txt文件中查找文本的工具)
  • Web服务压力测试工具hey学习一:使用方法
  • seo优化
  • UE5多人MOBA+GAS 番外篇:移植Lyra的伤害特效(没用GameplayCue,因为我失败了┭┮﹏┭┮)