中断程序
中断
中断就是某种原因,使得主程序先执行其他程序。
中断的允许控制位
IE | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
A8H | EA | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
EA :中断的总控制位。EA=0 屏蔽所有中断请求,EA=1,开放中断
ET2 :定时器/计数器T2的溢出中断允许位 1开启,0屏蔽
ES :串行口中断的允许位 1开启,0屏蔽
ET1 :定时器/计数器T1的溢出中断允许位 1开启,0屏蔽
EX1 :外部中断INT1的中断允许位。 1开启,0屏蔽
ET0 :定时器/计数器T0的溢出中断允许位 1开启,0屏蔽
EX0 :外部中断INT0的中断允许位。 1开启,0屏蔽
优先权控制
IP | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
B8H | PT2 | PS | PT1 | PX1 | PT0 | PX0 |
PT2 :定时/计数器T2的中断优先权控制位。 52系列才有 1高优先级,0低优先级
PS :串行口中断优先级控制位 1高优先级,0低优先级
PT1 :定时器/计数器T1的中断优先权控制位 1高优先级,0低优先级
PX1 :外部中断INT1的中断优先权控制位 1高优先级,0低优先级
PT0 :定时器/计数器T0的中断优先权控制位 1高优先级,0低优先级
PX0 :外部中断INT0的中断优先权控制位 1高优先级,0低优先级
默认顺序
中断源 优先级顺序
外部中断0 高
定时计数器T0中断 |
外部中断0 |
定时计数器T1中断 |
串行口中断 |
定时计数器T2中断(52的) 低
各中断服务程序入口编号 interrupt [number]
中断源 入口编号
外部中断0(P3.2) 0
定时计数器0 1
外部中断0(P3.3) 2
定时计数器1 3
串行口中断 4
定时/计数器 的方式寄存器 TCON
TCON | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
88H | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
TF 定时/计数器溢出位,超出上限值就会置1,若进入中断自动清0 定时/计数器范围(0—-2几位定时-1)
TR 设置定时计数器是否启动
IE 外部中断请求标志位
IT 外部中断的触发方式位 ==0 电平触发 ==1边缘触发
$$
外部中断\ \ \ \ \ \ \overline{\text{INT0}}\ \ 和 \ \ \overline{\text{INT1}}
$$
加了上划线,则代表为 低电平触发 或者 下降沿触发
1 |
|