单片机的中断系统
概念
中断发生:CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理。
中断响应和中断服务:CPU暂时中断当前的工作,转去处理事件B。
中断返回:将事件B处理完毕后,回到事件A被中断的地方继续处理事件A。
中断源:引起CPU中断的根源。
断点:被中断的地方。
优点
- 分时操作:可以分时为多个I/O设备服务
- 实时响应
- 可靠性高
中断源
五个中断源(2个优先级,二级中断嵌套)
外部中断
I
N
T
0
‾
\overline{INT0}
INT0
I
N
T
1
‾
\overline{INT1}
INT1
定时器/计数器
T
0
T0
T0
T
1
T1
T1
串口中断
U
A
R
T
UART
UART
查询优先级
优先级 | 中断标志 | 中断号 |
---|---|---|
INT0 | P3.2口,低电平有效 | 0 |
T0 | 溢出 | 1 |
INT1 | P3.3口,低电平有效 | 2 |
T1 | 溢出 | 3 |
URAT | 4 |
当CPU查询各个中断标志位的时候,会依照上述5个查询优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高优先级的中断标志,但并不代表高优先级的中断可以打断已经并且执行的低查询优先级的中断服务。
执行优先级
中断的执行优先级就是对中断优先级控制器的设置。
中断系统:中断源、中断标志、中断允许控制寄存器、中断优先级控制寄存器构成。
中断请求标志
- TCON寄存器
符号 | 字节地址 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
TCON | 88H | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 | 00000000 |
- IT0:外部中断0触发方式选择位。外部中断有两种触发方式:电平触发方式和跳变触发方式。当IT0=0时,为电平触发方式,引脚INT0上出现低电平时向CPU申请中断。当IT0=1时,为跳变触发方式,引脚INT0出现高电平到低电平的跳变时向CPU申请中断。
- IE0:外部中断0请求标志位。表示外部中断0正在向CPU请求中断。在电平触发方式下,若INT0为低电平,则IE0置1,否则清0。
- IT1:外部中断1触发方式选择位。
- IE1:外部中断1请求标志位。
- TF0:定时器/计数器0溢出中断请求标志位。定时/计数器0计数溢出时,TF0置1,向CPU请求中断。
- TF1:定时器/计数器0溢出中断请求标志位。
- TR0和TR1与中断无关,仅与定时器/计数器T1和T0有关。
-
SCON寄存器
串行口控制寄存器
符号 | 字节地址 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
SCON | 98H | SM0/FE | SM1 | SM2 | REN | TB8 | RB8 | TI | RI | 0000 0000 |
- TI:串行口的发送中断请求标志位,自动置1。
- RI:串行口的接收中断请求标志位,自动置1。
中断允许控制寄存器
- IE寄存器
符号 | 字节地址 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
IE | A8H | EA | ES | ET1 | EX1 | ET0 | EX0 | 00000000 |
- EX0:外部中断0中断允许控制位。EX0=0,禁止中断,EX0=1,允许中断。
- ET0:定时器/计数器0溢出中断允许控制位。ET0=0,禁止中断,ET0=1,允许中断。
- EX1:外部中断1中断允许控制位。EX1=0,禁止中断,EX1=1,允许中断。
- ET1:定时器/计数器1溢出中断允许控制位。ET1=0,禁止中断,ET1=1,允许中断。
- ES:串行口中断允许控制位。ES=0,禁止中断,ES=1,允许中断。
- EA:CPU中断允许控制位。EA=0,CPU屏蔽所有的中断请求,EA=1,CPU允许所有的中断请求。
中断优先级控制寄存器
中断的三条原则
- CPU同时接受到几个中断时,首先响应优先级别最高的中断源。
- 正在进行的中断过程,不能被低优先级和同级的中断请求中断。
- 正在进行的中断过程,能被高优先级的中断请求打断。
为了实现2和3,中断系统内部设有两个用户不能寻址的优先级状态寄存器。IP和IPH。
符号 | 字节地址 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 位名称 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
IP | B8H | PS | PT1 | PX1 | PT0 | PX0 | 0000 0000 |
1:PS:串行口中断优先级控制位。PS=1,串行口为高优先级中断;PS=0,串行口为低优先级中断。
2:PT1:定时器T1中断优先级控制位。PT1=1,定时器T1为高优先级中断;PT1=0,定时器T1为低优先级中断。
3:PX1:外部中断1优先级控制位。PX1=1,外部中断1为高优先级中断;PX1=0,外部中断1为低优先级中断
4:PT0:定时器T0中断优先级控制位。PT0=1,定时器T1为高优先级中断;PT1=0,定时器T0为低优先级中断
5:PX0:外部中断0优先级控制位。PX0=1,外部中断0为高优先级中断;PX0=0,外部中断0为低优先级中断
CPU的中断响应条件(同时满足)
- 有中断源发出中断请求
- 中断总允许位EA=1,即CPU允许所有中断源申请中断。
- 申请中断的中断源允许位为1,即此中断源可以向CPU申请中断。