51单片机--中断/定时/PWM 📅 2026/7/13 22:04:58 GPIOGPIOGenral Purpose Input/Output通用目的输入输出引脚输入输出两种工作模式1.输出模式给定单片机引脚电平控制引脚输出高/低电平LED控制、数码管控制、蜂鸣器控制2.输入模式检测引脚电平变化用于检测外部电平信号 按键检测、检测ADC信号按键1.按键一端接到GND另外一端接到GPIO引脚2.如果按键被按下GND会和引脚短路到一起此时引脚呈现低电平代表按键被按下中断概念CPU在处理某个任务时被外界更为紧急的事件打断要求CPU优先去处理这个更为紧急的事件处理完紧急事件后再回到之前被打断的地方继续向下执行中断源打断CPU执行当前的任务源头/事件中断源分类外部中断0、外部中断1、定时器0、定时器1、串口外部中断引脚电平变化所引发的中断INT0P3_2引脚INT1P3_3引脚中断优先级CPU总是先处理优先级高的中断处理完优先级高的中断后再处理优先级低中断优先级INT0TIMER0INT1TIMER1UART中断嵌套CPU处理一个中断时再去嵌套另外一个中断任务最多两层嵌套中断处理流程中断源-CPU过程1.中断源发出中断请求2.检查CPU是否允许中断总开关 能够响应外部中断及该中断源是否被屏蔽子开关 能够产生对应的中断3.比较中断优先级4.保护现场5.执行中断服务函数回调函数6.恢复现场中断向量表本质是一个数组数组中存放的是中断服务函数的入口地址中断向量中断向量表中的标号通过标号可以访问到对应中断服务函数中断相关寄存器IE寄存器中断允许寄存器TCON寄存器定时器寄存器定时器概念能够产生一个精准的定时不同外设对时序的要求高高电平和低电平时间是精准的51单片机内部有两个定时器分别为timer0、timer1所使用自增型定时器计数器 16位工作模式定时器/计数器0有4种工作模式模式013位定时器/计数器模式116位定时器/计数器模式模式28位自动重装模式模式3两个8位定时器/计数器定时器/计数器1除模式3外其他工作模式与定时器/计数器0相同T1在模式3时无效停止计数。定时步骤1. 先配置TMOD模式选择寄存器将低四位清0再将bit0置1代表工作在16位定时器2. 向TH0和TL0中装入定时器的初值(1ms - 64535)3. 将TCON寄存器中的bit6置1代表允许定时器开始计数4. 将IE寄存器中的bit7和bit1置1开启中断总开关和定时器0的子开关5. 编写定时器0的中断服务函数定时器相关寄存器TCON寄存器bit4置1TMOD寄存器中的Gate位清0, 代表允许定时器开始计数TMOD寄存器定时器0-低四位清0将TMOD寄存器中的M0bit0置1代表定时器0工作在16位定时器/计数器模式IE寄存器中断将IE寄存器中的bit7置1代表CPU能够响应所有中断将IE寄存器中的bit1置1代表允许定时器0产生中断计算初值晶振有12MHZ / 11.0592KHZ计算步骤51单片机达不到12MHZ将12MHZ进行12分频12MHZ/12 1MHZ51单片机完成一条指令运算1/1MHZ 1us通过定时器0实现1ms定时1ms 1000us定时器初值65535 - 1000 64535PWM控制蜂鸣器概念脉冲宽度调制能够让引脚产生一个方波周期性的让引脚的电平发生翻转PWM周期一个方波所经历的周期从上升沿到上升沿所经历的时间/从下降沿到下降沿所经历的时间PWM占空比在一个周期内高电平所占的比例蜂鸣器有源蜂鸣器内部存在震荡源通电后可以发出持续固定频率的声音无源蜂鸣器不存在震荡源需要给定对应引脚一个高低电平产生震荡可以输出指定频率音调计算初值