GPIO
GPIO:Genral Purpose Input/Output,通用目的输入输出
引脚输入输出
两种工作模式:
1.输出模式:给定单片机引脚电平,控制引脚输出高/低电平(LED控制、数码管控制、蜂鸣器控制)
2.输入模式:检测引脚电平变化(用于检测外部电平信号 按键检测、检测ADC信号)

按键
- 按键一端接到GND,另外一端接到GPIO引脚
- 如果按键被按下,GND会和引脚短路到一起,此时引脚呈现低电平,代表按键被按下
中断
概念:CPU在处理某个任务时,被外界更为紧急的事件打断,要求CPU优先去处理这个更为紧急的事件;处理完紧急事件后,再回到之前被打断的地方继续向下执行

中断源
打断CPU执行当前的任务源头/事件
中断源分类
外部中断0、外部中断1、定时器0、定时器1、串口
外部中断
引脚电平变化所引发的中断
INT0:P3_2引脚 INT1:P3_3引脚
中断优先级
CPU总是先处理优先级高的中断,处理完优先级高的中断后再处理优先级低中断
优先级:INT0>TIMER0>INT1>TIMER1>UART
中断嵌套
CPU处理一个中断时再去嵌套另外一个中断任务(最多两层嵌套)
中断处理流程(中断源->CPU过程)
1.中断源发出中断请求
2.检查CPU是否允许中断(总开关 能够响应外部中断)及该中断源是否被屏蔽(子开关 能够产生对应的中断)
3.比较中断优先级
4.保护现场
5.执行中断服务函数(回调函数)
6.恢复现场
中断向量表:本质是一个数组,数组中存放的是中断服务函数的入口地址
中断向量:中断向量表中的标号,通过标号可以访问到对应中断服务函数


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

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

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


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


IE寄存器(中断)
- 将IE寄存器中的bit7置1,代表CPU能够响应所有中断
- 将IE寄存器中的bit1置1,代表允许定时器0产生中断
计算初值
晶振有12MHZ / 11.0592KHZ
计算步骤:
- 51单片机达不到12MHZ,将12MHZ进行12分频,12MHZ/12 = 1MHZ
- 51单片机完成一条指令运算:1/1MHZ = 1us
- 通过定时器0实现1ms定时:1ms = 1000us
- 定时器初值:65535 - 1000 = 64535
PWM控制蜂鸣器
概念:脉冲宽度调制,能够让引脚产生一个方波,周期性的让引脚的电平发生翻转
PWM周期:一个方波所经历的周期(从上升沿到上升沿所经历的时间/从下降沿到下降沿所经历的时间)
PWM占空比:在一个周期内高电平所占的比例
蜂鸣器
有源蜂鸣器:内部存在震荡源,通电后可以发出持续固定频率的声音
无源蜂鸣器:不存在震荡源,需要给定对应引脚一个高低电平产生震荡(可以输出指定频率音调)
计算初值
