一、GPIO
Genral Purpose Input Output,通用目的输入输出
输出模式:给定引脚电平,控制引脚高低电平的变化
推挽 输出
开漏输出 LED 数码管
复用 推挽
复用 开漏
输入模式: 检测引脚电平变化
上拉 输入
下拉 输入
浮空 输入
模拟 输入
例:利用按键和数码管实现按哪个键数码管就显示几



二、中断
1、概念:当CPU执行某个任务时,外界发生了一个紧急事件,要求CPU放下当前的任务,转而去执行这个更为紧 急的事件,执行完紧急事件后再回到原来被打断的地方 继续向下执行
2、中断源:打断CPU执行当前任务的源头/事件
5个:外部中断0、外部中断1、定时器0、定时器1、串口
外部中断:引脚电平的变化所引发的中断(P3_2 P3_3)
3、中断优先级:CPU去执行中断任务时,会去比较多个中断的优先级,优先去执 行优先级更高的中断
51单片机中最多允许中断嵌套两层
4、中断 处理流程:
(1)中断源发出中断请求
(2)检查CPU是否响应中断(总开关)及该中断源被屏蔽(子开关)
(3)比较中断优先级
(4)保护现场
(5)执行中断服务函数
(6)恢复现场
5、中断向量表:本质就是一个数组 ,数组中存放的是中断服务函数入口地址
6、中断向量:本质上是一个标号, 可以通过标号在中断向量表中找到中断服务函数的入口地址
练习:利用外部中断0实现P32引脚接地(产生下降沿时)数码管加1


三、定时器
timer0 计数器0 16位模式定时器 65535 自增型定时器
timer1 计数器1
12MHZ -> 定时器
11.0592MHZ -> 波特率
分频器: 12MHZ / 12 = 1MHZ
11.0592MHZ / 12 = 0.9216MHZ
时间: 1 / 1MHZ = 1us
1 / 0.9216MHZ = 1.085us
用定时器0定时1ms:
1ms = 1000us
1000us / 1us = 1000
1000us / 1.085us = 922
初值:65535 - 1000 = 64535 12MHZ
65535 - 922 = 64,613 11.0592MHZ
练习:利用定时器0中断实现每隔0.5秒LED翻转一次


四、PWM:
1、脉冲宽度调制,能够使引脚 产生一个方波
2、PWM可以让引脚电平周期性进行翻转
3、PWM周期:一个PWM方波所经历的时间(从上升沿/下降沿到下一个上升沿/下降沿所经 历的时间)
4、PWM占空比:高电平在一个周期内所占的比例
五、蜂鸣器
有源蜂鸣器:内部会存在震荡源,上 电后蜂鸣器会发出固定频率的声音
无源蜂鸣器:内部不存在震荡源,上 电后不会发出声音,需要给定一个震荡
震荡源
波 -> 音调不同 高音 高频 低音 低频 音量 -> 振幅大小
例:频率:200HZ,占空比:50%,利用定时器使蜂鸣器发出声调
定时器定时时间:1 / 200HZ = 0.005s
0.005 / 2 = 0.0025s
12MHZ * 10 ^ 6 = 12,000,000HZ
12分频: 12,000,000 / 12 = 1000 000HZ
时间:1 / 1000 000HZ = 0.000001s
计数次数: 0.0025s / 0.000001s = 2500
初值:65535 - 2500 = 63035
练习:利用定时器0中断实现蜂鸣器发出400HZ 的声调

