一、工作模式
输出模式
单片机给定引脚一个电平(高电平(5V) 低电平(0V)),控制引脚实现高低电平
输入模式
检测引脚电平变化
二、按键
按键K1,两个引脚被接到GND和P1_4引脚,当K1按键被按下时,P1_4引脚会和GND短路到一起,P1_4引脚会呈现低电平
判断按键是否被按下:只需要检测对应的引脚是否为低电平
独立按键模块:

检测哪个按键被按下


三、中断
1. 相关概念
1. 中断
CPU在执行一个任务时,被外界更为紧急的事件打断,转而去执行更为紧急的任务,执行完后再回到刚才的地方继续向下执行,这一过程叫做中断
2. 中断源
打断CPU执行当前任务的事件源头叫做中断源,51单片机中5个中断源
3. 中断源分类(51单片机)
外部中断0、外部中断1、定时器/计数器0、定时器/计数器1、串口中断
4. 外部中断
单片机上的引脚电平变化所引发的中断(INT0(P3-2)、INT1(P3-3))
**外部中断:**低电平触发,下降沿触发
**串口中断:**由发送完成或接收完成触发
**定时器中断:**定时器溢出时触发
5. 中断优先级
CPU再去处理中断任务时候,会去比较多个中断的优先级,优先去处理优先级高的中断
高优先级中断可打断正在执行的低优先级中断
统计终端或低优先级中断不能相互打断
同时发生时,按自然优先级顺序响应
6. 中断嵌套
处理一个中断时,再嵌套另外的中断;
51单片机只允许嵌套2层
同级中断无法嵌套
2. 中断步骤
中断源发出中断请求 => 检查CPU是否响应中断及该中断源是否被屏蔽 =>
比较中断优先级 => 保护现场 => 执行中断服务函数(回调函数) =>
恢复现场


3. 中断相关寄存器
1. IE寄存器(中断允许寄存器)

2.TCON寄存器(定时器寄存器)

通过中断实现低电平触发时数码管变化


四、定时器
1. 相关概念
能够产生一个精准的定时,不同外设对时序的要求高(高电平和低电平时间是精准的)
51单片机内部有两个定时器,分别为timer0、timer1,所使用自增型定时器(计数器 16位)
2. 工作模式
定时器/计数器0有4种工作模式:
模式0(13位定时器/计数器), 模式1(16位定时器/计数器模式),
模式2(8位自动重装模式), 模式3(两个8位定时器/计数器)。
定时器/计数器1除模式3外,其他工作模式与定时器/计数器0相同,T1在模式3时无效,停止计数。
3. 定时步骤
-
先配置TMOD模式选择寄存器,将低四位清0,再将bit0置1代表工作在16位定时器
-
向TH0和TL0中装入定时器的初值(1ms -> 64535)
-
将TCON寄存器中的bit6置1,代表允许定时器开始计数
-
将IE寄存器中的bit7和bit1置1,开启中断总开关和定时器0的子开关
-
编写定时器0的中断服务函数
4. 定时器相关寄存器
1. TCON寄存器
(1)bit4置1,TMOD寄存器中的Gate位清0, 代表允许定时器开始计数

2. TMOD寄存器
(1)定时器0->低四位清0
(2)将TMOD寄存器中的M0,bit0置1,代表定时器0工作在16位定时器/计数器模式

3. IE寄存器(中断)
(1)将IE寄存器中的bit7置1,代表CPU能够响应所有中断
(2)将IE寄存器中的bit1置1,代表允许定时器0产生中断
5. 计算初值
晶振有12MHZ / 11.0592KHZ
计算步骤:
51单片机达不到12MHZ,将12MHZ进行12分频,12MHZ/12 = 1MHZ
51单片机完成一条指令运算:1/1MHZ = 1us
通过定时器0实现1ms定时:1ms = 1000us
定时器初值:65535 - 1000 = 64535
计算初值(11.0592KHZ)

实现隔 1s LED翻转一次


五、PWM控制蜂鸣器
1. 相关概念
脉冲宽度调制,能够让引脚产生一个方波,周期性的让引脚的电平发生翻转
PWM周期:一个方波所经历的周期(从上升沿到上升沿所经历的时间/从下降沿到下降沿所经历的时间)
PWM占空比:在一个周期内高电平所占的比例
2. 蜂鸣器
震荡源 -> 声音(波)-> 音调不同 -> 波的频率发生变化 -> 高音 高频 低音 低频 音量不同 -> 波的振幅 -> 能量
有源蜂鸣器:存在震荡源,通电后蜂鸣器会发出持续频率的声音
无源蜂鸣器:不存在震荡源,通电后蜂鸣器不会发出声音,需要给蜂鸣器一个震荡
计算初值 :(11.0592KHZ)

实现定时器溢出中断时通过PWM控制蜂鸣器

