标签:order 允许 堆栈 标志位 技术分享 高电平 第一条 span val
1.什么是中断
中断是CPU在执行程序是不需要管中断源的状态,当中断源满足中断触发条件时CPU再去进行终端处理
2.中断源
80C51共五个中断源分别是两个外部中断源:INT0、INT1,两个定时中断源T0、T1,一个串行口中断源
每个中断源对应着一个中断入口地址
中断源 |
入口地址 |
外部中断源INT0 |
0003H |
定时器T0 |
000BH |
外部中断源INT1 |
0013H |
定时器T1 |
001BH |
串行口中断 |
0023H |
3.中断控制
3.1. 定时控制寄存器TCON
控制对象 |
T1 |
T0 |
INT1 |
INT0 |
||||
位序 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位名 |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
TF 定时器溢出标志
TR 定时器运行控制位
IE 中断请求标志
IT 中断触发方式:1时下降沿触发,0时低电平触发
3.2. 串行控制寄存器SCON
D0 位名为RI 发送中断标志
D1位名是TI 接受中断标志
接收或发送完一桢数据时相应的D0或D1置1,且需要在中断服务程序中进行复位
3.3. 中断允许控制寄存器IE
位序 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位名 |
EA |
/ |
/ |
ES |
ET1 |
EX1 |
ET0 |
EX0 |
EA cpu中断总允许位
ES 串行口中断允许位
ET1定时器1中断允许位
EX1外部中断1允许位
3.4. 中断优先级控制寄存器
位序 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位名 |
/ |
/ |
/ |
PS |
PT1 |
PX1 |
PT0 |
PX0 |
PS 串行口中断优先级
PT 定时器中断优先级
PX外部中断优先级
值为1则为高优先级
值为0则为低优先级
4.中断处理过程
4.1. 采样
中断采样发生在每个机器中期的S5P2期间,对INT0 INT1引脚进行检测,根据检测结果设置IE0、IE1
若为下降沿有效的中断则其高电平和低电平的时间都不得小于一个机器周期
若为电平触发则有效信号不小于一个机器周期
4.2. 查询
在每个机器周期的S6期间按先后顺序对各个中断标志位进行查询,若有中断则按中断优先级在下一个机器周期进行中断处理(装入中断矢量),
中断查询顺序:IE0->TF0->IE1->TF1->RI和TI
4.3. 响应
4.3.1 响应条件
中断源发出中断请求,CPU开中断EA=1
相应的中断使能位开启ES,ET1ET0,EX1,EX0
无同级或更高级的终端服务,当前机器周期不是当前指令的最后一个周期
4.3.2. 响应
包括两个部分:断点保护和转向中断程序服务入口。
断点保护:把断点位置的PC压入堆栈
把中断矢量赋给PC
全部由硬件自动完成
4.3.3. 处理
处理过程如图:
4.3.4. 响应时间
从中断请求标志位置位到CPU执行终端服务程序的第一条指令所持续的时间
4.4. 返回
中断返回指令是RETI
用在中断子程序结束时,不能和RET混淆
5.中断请求的撤销
5.1. 定时计数器CPU自动撤销,不需要再处理
5.2. 串行口中断请求需要再中断程序服务里面撤销:如CLR TI CLR RI
5.3. 外部中断请求的撤销
脉冲触发的中断不必考虑
电平出发的中断则需要使用外部硬件撤销请求信号
标签:order 允许 堆栈 标志位 技术分享 高电平 第一条 span val
原文地址:http://www.cnblogs.com/scarecrowlxb/p/6194634.html