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

硬件(二) 中断、定时器、PWM

一、独立按键模块

1. 硬件原理

P14刚开始为高电平(没按),按下K1后变低电平;

判断某个寄存器的值是否为零:eg:判断P1的第四位是否为零:if((P1 & (1<<4))== 0)

二、中断系统

1、什么是中断?什么是中断源?

2、中断处理流程是什么?

3、什么是中断嵌套?

4、什么是中断向量表?

5、51单片机的定时器工作原理是什么?

6、什么是PWM?PWM有哪些重要参数?

1.中断:CPU再执行当前事情的时候,外界发生了紧急事件的请求,然后要CPU暂停当前正在执行的事情而去执行这个紧急事件,处理完紧急事件,转而继续回到原来被打断的地方继续原来的工作;中断源:请求CPU进行中断的请求源。

2.①终端源发出中断请求;②内核检查是否需要响应中断,以及该中断是否被屏蔽;③内核检查中断的中断优先级;④保护现场;⑤执行中断服务函数;⑥恢复现场;

3.CPU在处理中断的时候,遇到了一个优先级更高的中断请求;如果当前CPU可以暂停处理该中断,转而去处理优先级更高的中断,处理结束后,再去处理当前处理的优先级较低的中断的话,这样的过程就叫中断嵌套。注意:51单片机可以执行二级中断嵌套。

4.就是存储中断函数的指针的数组,中断函数共有八种,分别是四个外部中断,三个定时中断,还有1个串口中断。

5.51单片机的晶振是用于提供系统时钟的,通过压电效应产生固定频率的机械振动,转化为电信号后输出方波。内部通常将晶振信号12分频后作为机器周期;单片机的定时器有两个16位的计数器(自增),每经过一个机器周期,计数器就会自动加一;在计数器计数超出所在范围后,会产生溢出,只要开启计数器,内核会检测到溢出位置一,就会发生一次中断。然后对CPU中断再进行一系列处理。

6.PWM就是脉冲调制,跳变方波;它有两个重要参数:周期和占空比。周期表示一个脉冲信号的长度;占空比表示高电平在一个周期内所占的时间比。

中断源中断向量地址中断请求标志位中断允许控制位对应引脚
外部中断 0(INT0)0003HIE0EX0P3.2
定时器 0(T0)000BHTF0ET0-
外部中断 1(INT1)0013HIE1EX1P3.3
定时器 1(T1)001BHTF1ET1-
串口中断(UART)0023HRI+TIESP3.0(RXD)、P3.1(TXD)

  • 中断优先级:支持 4 级优先级(通过 IP/IPH 寄存器配置),低优先级不可打断高优先级,同优先级按 “查询次序” 响应(外部中断 0 > 定时器 0 > 外部中断 1 > 定时器 1 > 串口)。

1. 中断执行流程

  1. 中断请求:中断源触发(如外部引脚电平变化、定时器溢出),置位对应请求标志位(如 IE0、TF0);
  2. 中断检测:CPU 每执行完一条指令,检查 “中断总开关(EA)是否打开” 及 “该中断是否被允许(如 EX0、ET0)”;
  3. 优先级判断:优先响应高优先级中断;
  4. 保护现场:自动保存当前程序计数器(PC)值(用于后续返回);
  5. 执行服务函数:跳转到中断向量地址,执行用户编写的中断服务函数;
  6. 恢复现场:执行完后自动恢复 PC 值,返回原任务继续执行。

2. 中断与轮询的区别

对比维度中断机制轮询机制
触发方式设备主动通知 CPUCPU 主动循环检查设备
资源占用仅中断触发时占用 CPU,效率高持续占用 CPU 周期,浪费资源
实时性实时性强(紧急事件立即响应)实时性差(依赖检查间隔)
实现方式硬件触发 + 服务函数软件循环判断
适用场景紧急事件(如按键、传感器)低速、非紧急设备(如 LED 闪烁)

三、定时器 / 计数器

1. 工作原理

  • 本质:16 位 / 8 位加法计数器,从 “初值” 开始计数,每 1 个机器周期加 1,计满溢出后置位中断标志(如 TF0),触发中断。
  • 核心公式
    机器周期 Tcy​=fosc​12​(fosc​ 为晶振频率,51 单片机固定 12 分频);
    定时时间 最大计数值初值。
  • 常用晶振:12MHz(Tcy​=1μs,计算方便)、11.0592MHz(串口波特率无误差)。

2. 关键寄存器

(1)定时器控制寄存器(TCON,地址 88H,可位寻址)
位号B7B6B5B4B3B2B1B0
符号TF1TR1TF0TR0IE1IT1IE0IT0
功能T1 溢出标志T1 启动位(TR1=1 启动)T0 溢出标志T0 启动位(TR0=1 启动)INT1 请求标志INT1 触发方式INT0 请求标志INT0 触发方式
(2)工作模式寄存器(TMOD,地址 89H,不可位寻址)
  • 高 4 位控制定时器 1,低 4 位控制定时器 0,以定时器 0 为例:
    | 位号 | B3 | B2 | B1 | B0 |
    |------|-----|-----|-----|-----|
    | 符号 | GATE | C/T | M1 | M0 |
    | 功能 | 门控位(0 = 仅 TR0 控制启动) | 模式选择(0 = 定时器,1 = 计数器) | 工作模式配置 | 工作模式配置 |

  • 常用工作模式:

    • 模式 1(16 位定时器):M1=0、M0=1,TH0(高 8 位)+TL0(低 8 位)共 16 位,最大计数值 65536;
    • 模式 2(8 位自动重装载):M1=1、M0=0,TL0 计数,溢出后自动加载 TH0 的值,无需手动重置初值。

四、PWM 与蜂鸣器

1. PWM(脉冲宽度调制)

  • 定义:通过数字信号的 “高电平时间占比” 控制模拟量的技术。
  • 核心指标
    周期(T):PWM 信号一个高低电平循环的时间;
    占空比(D):高电平时间 / 周期,范围 0%~100%(如 D=50% 表示高低电平各占一半时间)。
  • 51 单片机实现:通过定时器中断翻转引脚电平,调整初值改变周期,调整高电平持续时间改变占空比。

2. 蜂鸣器控制

(1)蜂鸣器分类
  • 有源蜂鸣器:内部含振荡电路,通直流电即可发声(频率固定);
  • 无源蜂鸣器:无振荡电路,需输入 PWM 信号(高低电平交替)才能发声(频率可通过 PWM 调整)。
(2)软件实现(按键控制无源蜂鸣器频率)

3. 定时器初值计算(以 11.0592MHz 晶振、200Hz 为例)

  1. 计算机器周期:Tcy​=12/11.0592MHz≈1.085μs;
  2. 计算 PWM 周期:200Hz 对应的周期 T=1/200=5ms=5000μs;
    (定时器中断一次翻转电平,故中断周期为 T/2=2500μs);
  3. 计算计数次数:N=2500μs/1.085μs≈2304;
  4. 计算初值:模式 1 最大计数值为 65536,故初值 = 65536 - 2304 = 63232(与定义的 HZ200=63231 接近,误差源于四舍五入)。
http://www.xdnf.cn/news/20226.html

相关文章:

  • 当电力设计遇上AI:良策金宝AI如何重构行业效率边界?
  • Linux2.6内核进程O(1)调度队列
  • 电机控制(三)-电机控制方法基础
  • Java集合---Collection接口和Map接口
  • C++:类和对象(中)
  • 在线测评系统---第n天
  • 执行select * from a where rownum<1;,数据库子进程崩溃,业务中断。
  • LabVIEW--二维数组、三维数组、四维数组
  • Pydantic模型验证测试:你的API数据真的安全吗?
  • Selenium 页面加载超时pageLoadTimeout与 iframe加载关系解析
  • 静态电流Iq 和 ICONT_MAX
  • GD32入门到实战32--产品配置参数存储方案 (NORFLASH)
  • rabbitmq 入门知识点
  • Go 自建库的使用教程与测试
  • 脑卒中目标检测含完整数据集
  • CSS 优先级详解:理解选择器权重和层叠规则
  • 鸿蒙NEXT动画开发指南:组件与页面典型动画场景解析
  • 【C++练习】06.输出100以内的所有素数
  • Java 攻克 PDF 表格数据提取:从棘手挑战到自动化实践
  • 深度学习——数据增强
  • devcpp 5.11的详细安装步骤
  • 上位机知识篇---conda run
  • 文华财经多空提示指标公式 变色K线多空明确指标 文华wh6赢顺多空买卖提示指标
  • 平衡车 --- 测量减速比 M法、T法测速
  • 当公司在你电脑上安装了IP-guard,你必须知道的事
  • 【面试题】你在项目中做过哪些相关性优化?
  • 【sft技巧】模型微调技巧
  • 零样本学习与少样本学习
  • 下载及交叉编译libconfig
  • 惊爆!耐达讯自动化RS485转Profinet,电机连接的“逆天神器”?