中断响应过程
- 中断检测
在每一个条指令结束后,系统自动检测中断请求信号.有过有中断请求且中断允许位为真,则响应中断. - 保护现场
响应中断后,系统将当前PC指针压入堆栈,但是PSW和A中内容不会保存.如果需要保护则需要手动入栈.保护现场前需要关闭终端,防止有更高优先级中断发生而破坏现场 - 中断服务
中断函数 - 清除中断标志位
- 恢复现场
弹出堆栈内保护数据.在恢复时也要关闭中断. - 中断返回
弹出PC指针,继续进行原程序
中断源
名称 | 说明 |
---|---|
INT0 | 外部中断0请求,P3.2输入,请求标志位IE0 |
INT1 | 外部中断1请求,P3.3输入,请求标志位IE1 |
T0 | 定时/计数器0溢出请求,请求标志位TF0 |
T1 | 定时/计数器1溢出请求,请求标志位TF1 |
串行口 | 完成一帧数据的发送和接收后请求中断,请求标志位TI或RI |
中断控制寄存器
TCON
中断请求控制
位定义 | 位地址 | 说明 |
---|---|---|
TF1 | 8FH | 内部定时/计数器1溢出中断请求标志位 |
TR1 | 8EH | 与中断无关 |
TF0 | 8DH | 内部定时/计数器0溢出中断请求标志位 |
TR0 | 8CH | 与中断无关 |
IE1 | 8BH | 外部中断1请求标志位 |
IT1 | 8AH | 外部中断1中断触发方式 |
IE0 | 89H | 外部中断0请求标志位 |
IT0 | 88H | 外部中断1中断触发方式 |
以IT0为例说明中断触发方式:
- IT0=0
低电平触发,低电平有效 - IT0=1
下降沿触发
SCON
串行口控制器
IE
中断允许控制
位定义 | 位地址 | 说明 |
---|---|---|
EA | AFH | 总中断允许位 |
ES | ACH | 串行口中断允许位. |
ET1 | ABH | 定时/计数器1中断允许位 |
EX1 | AAH | 外部中断1中断允许位 |
ET0 | A9H | 定时/计数器0中断允许位 |
EX0 | A8H | 外部中断0中断允许位 |
中断控制采用两级控制方式,EA为总开关,EA=0屏蔽所有中断;EA=1开放所有中断.
当EA=1后,其余中断允许方可响应中断,如果只有特定中断允许,但是总控位不允许,那么也不能响应中断
IP
中断优先级控制
位定义 | 位地址 | 说明 |
---|---|---|
PS | BC | 串行中断优先级控制位 |
PT1 | BB | 定时/计数器1中断优先级控制位 |
PX1 | BA | 外部中断1优先级控制位 |
PT0 | B9 | 定时/计数器0中断优先级控制位 |
PX0 | B8 | 外部中断0优先级控制位 |
各中断优先级由用户控制,置1优先级最高
默认情况下优先级为
IE0 TF0 IE1 TF1 RI/TI
中断号
类型 | 中断号 |
---|---|
外部中断0 | 0 |
定时/计数器0 | 1 |
外部中断1 | 2 |
定时/计数器1 | 3 |
串行口中 | 4 |