51单片机基础:GPIO、中断与定时器详解
1. GPIO输出模式与输入模式
GPIO(通用输入输出)是单片机与外部设备交互的基本接口。
- 输出模式:单片机通过引脚向外输出高电平(通常为VCC)或低电平(通常为GND),用于驱动LED、继电器、蜂鸣器等设备。
- 输入模式:单片机读取外部引脚的电平状态(高电平或低电平),用于检测按键、传感器信号等。
在51单片机中,通常通过配置端口寄存器(如P0、P1)的相应位来设置引脚模式。
2. 中断概念
中断是单片机响应外部或内部紧急事件的一种机制。当某个特定事件发生时,CPU会暂停当前正在执行的程序,转而去执行一段预先编写好的服务程序(中断服务程序,ISR),执行完毕后再返回原程序继续执行。
中断的主要作用是提高CPU效率,实现实时响应。
3. 51单片机中断源类型及个数
标准51单片机(如8051内核)通常有5个中断源:
- 外部中断0(INT0)
- 外部中断1(INT1)
- 定时器/计数器0中断(TF0)
- 定时器/计数器1中断(TF1)
- 串行口中断(RI/TI)
部分增强型51单片机(如STC系列)会增加更多中断源,如定时器2中断、ADC中断等。
4. 什么是外部中断
外部中断是由单片机外部引脚上的电平变化(下降沿、上升沿或低电平)触发的中断。51单片机通常有INT0和INT1两个外部中断引脚。
外部中断常用于处理需要立即响应的外部事件,如按键按下、传感器信号到达等。
5. 中断处理流程
- 中断请求:中断源事件发生,相应标志位被置位。
- 中断响应:若该中断被允许(中断使能位打开)且当前没有更高优先级的中断在执行,CPU响应中断。
- 保护现场:CPU自动将当前程序计数器(PC)压入堆栈,保护断点。
- 执行中断服务程序(ISR):CPU跳转到该中断对应的固定入口地址执行ISR。
- 恢复现场:ISR执行完毕,通过RETI指令返回,CPU从堆栈弹出PC,恢复原程序执行。
6. 51单片机中有几个定时器
标准51单片机有2个定时器/计数器:定时器/计数器0(T0)和定时器/计数器1(T1)。
增强型51单片机(如STC89C52)通常有3个定时器:T0、T1和T2。
7. 定时器工作模式
51单片机的定时器/计数器通常有4种工作模式(通过TMOD寄存器设置):
- 模式0:13位定时器/计数器模式。
- 模式1:16位定时器/计数器模式(最常用)。
- 模式2:8位自动重装载模式。
- 模式3:仅适用于T0,将T0拆分为两个8位定时器。
8. 定时器配置流程
- 选择工作模式:配置TMOD寄存器。
- 设置初值:计算并写入THx/TLx寄存器。
- 中断设置:如需使用中断,则开启总中断(EA)和定时器中断(ETx)。
- 启动定时器:将TCON寄存器中的TRx位置1。
9. 8位自动重装载定时器工作原理
在模式2(8位自动重装载)下,定时器使用TLx作为8位计数器,THx作为重装载值寄存器。
工作原理:TLx从初值开始加1计数,溢出时不仅会置位TFx标志位,还会自动将THx中的值重新装入TLx,然后TLx继续从该值开始计数。此模式无需在中断服务程序中手动重装初值,适用于需要精确固定频率的场合,如串口通信的波特率发生器。
10. PWM周期
PWM(脉冲宽度调制)周期是指一个完整PWM波形(包含一个高电平和低电平)所经历的时间,通常用T表示,单位是秒(s)或毫秒(ms)。
计算公式:周期 T = 1 / 频率 f。例如,频率为1kHz的PWM,其周期为1ms。
11. PWM占空比
PWM占空比是指在一个PWM周期内,高电平持续时间与整个周期时间的比值。
计算公式:占空比 = (高电平时间 / 周期时间) × 100%。
占空比决定了输出信号的平均电压,是调节LED亮度、电机速度等模拟量的关键参数。
12. 有源蜂鸣器与无源蜂鸣器
| 类型 | 有源蜂鸣器 | 无源蜂鸣器 |
|---|---|---|
| 驱动方式 | 直流电压驱动(如3V、5V) | 需要一定频率的方波信号驱动 |
| 内部结构 | 内置振荡电路 | 无振荡电路,相当于一个微型扬声器 |
| 发声控制 | 给电即响,声音频率固定 | 需外部提供PWM信号才能发声,可通过改变频率发出不同音调 |
| 引脚区分 | 通常标有“+”和“-”极性 | 无极性,或标有“S”和“-” |
| 应用场景 | 简单报警、提示音 | 音乐播放、多音调报警 |
| 单片机控制 | GPIO输出高低电平即可 | 需GPIO输出特定频率的PWM信号 |
