一、外部中断
1.1 中断
关于中断的概念在上一篇博客中已经提到了。(传送门:51单片机入门教程(5)——定时器中断)
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
51单片机的中断源优先级与向量号如下表:
中断源 | 优先级 | 中断向量号 |
---|---|---|
INT0 – 外部中断0 | 最高 | 0 |
T0 – 定时器/计数器0中断 | 第2 | 1 |
INT1 – 外部中断1 | 第3 | 2 |
T1 – 定时器/计数器1中断 | 第4 | 3 |
串口中断 | 第5 | 4 |
T2 – 定时器/计数器2中断 | 最低 | 5 |
1.2 外部中断
除了定时器中断外,51单片机还有两个外部中断源——外部中断0、外部中断1。分别由单片机的12号引脚(INT0/P3.2)、13号(INT1/P3.3)引脚的低电平/负跳变触发。
和定时器中断一样,要使用这两个外部中断,首先要进行初始化操作,即写入相关的寄存器。初始化外部中断需要写入下面两个寄存器。
1、IE – 中断允许控制寄存器
2、TCON – 控制寄存器
以初始化0号外部中断为例,说明寄存器的设置方法。
- IE 中断允许控制寄存器
序号 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
符号 | EA | – | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
说明:
EA 全局中断允许位,当此位是1时中断可用。(重要)
ET2 定时器/计数器2中断允许位
ES 串口中断允许位
ET1 定时器/计数器1中断允许位
EX1 外部中断1允许位
ET0 定时器/计数器0中断允许位
EX0 外部中断0允许位 (重要)
和定时器中断类似,使用外部中断需要开启全局中断允许位EA
,以及开启外部中断0允许位EX0
EA = 1; //开启总中断
EX0 = 1; //开启0号外部中断
- TCON 控制寄存器
序号 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
符号 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
说明:
TF1 定时器1溢出标志位
TR1 定时器1运行控制位
TF0 定时器0溢出标志位
TR0 定时器0运行控制位
IE1 外部中断1请求标志 IE1=1则外部中断1在向CPU请求中断,当CPU响应中断时硬件清0。一般不用手动设置。
IT1 外部中断1触发方式选择位 该位为0时INT1引脚上的低电平信号可触发外部中断1。该位为1时INT1引脚上的负跳变信号可触发外部中断1。
IE0 外部中断0请求标志 IE0=1则