51单片机进阶中断、定时器、IO电路与时序
一、中断系统
中断核心思想:CPU正常执行主程序,外部/内部事件触发中断,CPU暂停主程序,跳转执行中断服务函数,处理完毕返回继续运行主程序。
- 中断向量:51内置中断源,对应固定入口地址
- External interrupt 0 外部中断0
- Timer0 定时器0中断
- Timer1 定时器1中断
- External interrupt 1 外部中断1
- UART串口中断
- 中断触发方式
- 电平触发:引脚低电平触发中断
- 边沿触发:引脚电平下降沿(高→低跳变)触发中断
- 中断配置流程
开启中断总开关 → 开启对应外设中断使能 → 设置触发方式 → 编写中断服务函数 - 注意:中断服务函数尽量简短,不要放耗时代码。
二、定时器/计数器
定时器本质:硬件计数器,对机器周期脉冲计数。计数溢出后触发中断。
- 定时器模式:对内部系统时钟计数,用来做延时、定时。
- 计数器模式:对外部引脚脉冲计数,统计外部信号次数。
- 寄存器: TMOD (模式配置)、 THx 、 TLx (计数高低字节,装载初值)
- 自动重装:溢出后自动把初值重新载入寄存器,循环定时,不用软件反复赋值。
- 时序波形:时钟脉冲不断输入,计数器逐次累加,达到最大值溢出,产生中断信号。
三、IO口驱动电路(重点:灌电流、拉电流)
- LED电路(普中开发板)
LED阳极接VCC,阴极接单片机IO引脚。
- IO输出低电平 → 电流流入芯片引脚(灌电流),LED点亮。
- IO输出高电平 → 无电流,LED熄灭。
51的P0口是开漏输出,必须外接上拉电阻才能输出高电平;P1/P2/P3内置上拉电阻。
- 独立按键电路
一端接IO,一端接GND。
- 按键未按下:IO为高电平。
- 按键按下:IO拉低到GND。
按键消抖:机械按键按下/松开瞬间存在电平抖动(数ms),会误触发多次检测。
两种消抖方案:软件延时消抖;外部硬件电容消抖。
四、时序基础
- 机器周期:单片机执行一条基础指令的最小时间单元。12M晶振下,1机器周期=1μs。
- 时钟周期:晶振原始振荡周期,机器周期由多个时钟周期构成。
- 波形图:方波高低电平,边沿(上升沿、下降沿)是触发信号的关键。
五、寄存器与位运算复用
定时器、中断的配置,依旧使用位运算操作SFR特殊功能寄存器:
// 置位使能
IE |= (1 << 0);
// 清零关闭
TMOD &= ~(1 << 0);