十、GPIO
- Genral Purpose Input Output,通用输入输出,是与外界交互最基本的形式,可以独立的将引脚配置为输入模式/输出模式
输出模式:控制引脚输出高电平/低电平(给定控制信号)
- 开漏输出
- 推挽输出
- 复用开漏
- 复用推挽
输入模式:检测引脚的电平(接收外部信号)
- 上拉输入
- 下拉输入
- 浮空输入
- 模拟输入
十一、独立按键
1.原理图

2.工作原理
当按键未被按下时,引脚会呈现高电平,当按键被按下时,会造成引脚和GND短路到一起,此时对应的引脚会呈现低电平。
判断按键是否被按下,只需要判断引脚是否为低电平即可。
十二、中断
1. 中断概念:
- 当CPU正在执行某个任务的时候,此时外界发生了一个紧急的事件,要求CPU能够暂停当前的任务,转而去执行这个更为紧急的事件,执行完这个紧急事件再回到刚才被打断的地方,继续执行,这个过程叫做中断。
2. 中断源:
外部中断:引脚电平的变化所引发的中断
- 外部中断0
INT0 -> P32引脚
- 外部中断1
INT1 -> P33引脚
- 定时器0
- 定时器1
- 串口
4. 中断优先级:
- 当CPU在执行一个任务的时候,此时可能有多个中断源同时发起中断请求,此时CPU比较中断源的优先级,优先处理优先级高的中断

5. 中断嵌套:
- CPU在处理一个中断任务的时候,再去嵌套另外的一个中断任务(51单片机中最多允许嵌套两层)
6. 中断处理流程
- 中断源发出中断请求
- 检查CPU是否允许中断及该中断源是否被屏蔽
- 比较中断优先级
- 保护现场
- 执行中断处理函数(回调函数)
- 恢复现场
7.中断相关寄存器:

(1)中断允许寄存器 IE寄存器

EA:
- 置1:代表CPU允许所有中断请求
- 置0:代表CPU屏蔽所有的中断请求
EX0:
- 置1:允许外部中断0产生中断
- 置0:禁止外部中断0产生中断
(2)定时器/计数器中断控制寄存器 TCON寄存器:

IT0:
- 置1:代表外部中断0引脚(P32引脚)下降沿触发中断
- 置0:代表外部中断0引脚(P32引脚)低电平触发中断
十三、定时器
1.定时器
- 产生精准时间,不同外设对时间要求是精准的
- 51单片机中有两个定时器,分别是Timer0和Timer1,是自增型定时器
2. 定时器工作原理:
- 定时器内部有个16位的计数器,给定计数器一个初值,会按照1us的速率进行自增,加到65535溢出时向CPU发起中断请求,CPU响应定时器中断并执行中断处理函数
3. 定时器寄存器:
TMOD 定时器模式配置寄存器

-
将TMOD寄存器中的低4位清0
-
将M0置1,M1清0,代表定时器0工作在16位定时器模式下

TCON 定时器控制寄存器:

将TCON寄存器中的TR0这一位置1,代表打开定时器,开始计数

将IE寄存器中的bit7和bit1置1,代表允许CPU响应所有中断 + 允许定时器0产生中断

十四、PWM
- 脉冲宽度调制,能够让引脚产生一个方波,让引脚电平周期性的翻转
- PWM周期:一个方波所经历的周期(从上升沿/下降沿到下一个上升沿/下降沿所经历的时间)
- PWM占空比:高电平在一个PWM周期内所占的比例

蜂鸣器:

震荡源 声音(波)-> 音调 -> 波的频率发生了变化 -> 高音 (高频) 低音(低频)-> 音量 -> 振幅 能量大小
- 有源蜂鸣器:有源蜂鸣器内部有震荡源,上电后会持续发出一个固定频率的声音
- 无源蜂鸣器:无源蜂鸣器内部没有震荡源,需要给定蜂鸣器一个震荡