《51单片机应用开发从入门到精通》——2.7 中断的控制及设置-阿里云开发者社区

开发者社区> 云计算> 正文
登录阅读全文

《51单片机应用开发从入门到精通》——2.7 中断的控制及设置

简介:

本节书摘来异步社区《51单片机应用开发从入门到精通》一书中的第2章,第2.7节,作者:张华杰 ,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.7 中断的控制及设置

51单片机应用开发从入门到精通
中断系统结构如图2-6所示,从图可见,中断控制的实质是对4个特殊功能寄存器TCON、SCON、IE和IP进行管理和控制。只要按照人们的要求对这些寄存器的相应位进行设置(存入0或1,一般设置1为开通),就能完成对中断的有效管理和控制。

2.7.1 中断允许控制寄存器IE

1.IE的格式及位的含义
寄存器IE的地址为A8H,作用是控制各中断源的开放与关闭。它实行两级控制,IE中有个总的控制位EA,当EA = 0时,屏蔽所有的中断请求;而当EA = 1时,CPU开放总中断。

849a4ae96c70dac78277af73dfece3cc79c83e1f

各个中断源的请求是否被开放,还要看IE中各个中断源自己的中断允许控制位的状态。IE的格式及各位的含义如图2-7所示。

179519be818a1e170b03cdfff0ddfef13cd15789

EA:中断允许总控制位。EA = 0时,中断总禁止,关闭所有中断;EA = 1,中断总允许。中断总允许后各中断的禁止或允许则由中断源的中断允许控制位进行设置。它们之间的关系类似于电表控制盘上的总开关及各户的分开关一样。
EX0:外部中断0(INT0)允许控制位。EX0 = 0时,禁止外部中断0中断;EX0 = 1时,允许外部中断0中断。
EX1:外部中断1(INT1)允许控制位,其功能与EX0类同。
ET0:定时器/计数器T0的溢出中断允许控制位。ET0 = 0时,禁止定时器/计数器T0中断;ET0 = 1时,允许定时器/计数器T0中断。
ET1:定时器/计数器T1的溢出中断允许控制位,其功能与ET0类同。
ES:串行中断允许控制位。ES = 0时,禁止串行中断;ES = 1时,允许串行中断。
2.IE的设置举例
假如程序需要使用外部中断0(INT0),只要将寄存器IE的外部中断允许控制位和中断允许总控制位设置为1即可,可通过下面的语句来实现:

MOV  IE, #10000001B   ;INT0中断开通```

####2.7.2 中断优先级控制寄存器IP
1.IP的格式及位的含义
寄存器IP的地址为B8H,作用是控制中断的优先级,其格式及各位的含义如图2-8所示。

<div style="text-align: center"><img src="https://yqfile.alicdn.com/cf3827391191f85220e9d58ddfa52253ddfccaf0.png" width="" height="">
</div>

PX0:外部中断0优先级设置位。
PX1:外部中断1优先级设置位。
PT0:定时器/计数器中断0优先级设置位。
PT1:定时器/计数器中断1优先级设置位。
PS:串行中断优先级设置位。
中断优先级只分高与低两个级别,各位为0时,为低优先级;各位为1时,为高优先级。

2.IP的设置举例
假如程序需要使外部中断0为高优先级,只要将IP的第一位设置为1即可,可通过下面的语句来实现:

MOV IP, #00000001B ;INT0中断优先`
3.中断优先级控制原则
(1)低优先级中断请求不能打断高优先级的中断处理;反之,则可以。

(2)如果一个中断请求已被响应,则同级的其他中断响应被禁止。

(3)如果同级的多个中断请求同时出现,则按次序从高到低依次为:外部中断0、定时/计数中断0、外部中断1、定时/计数中断1、串行中断。

2.7.3 定时器控制寄存器TCON

1.TCON的格式及位的含义
寄存器TCON的地址为88H。TCON既有定时器/计数器的控制功能,又有中断控制功能。其中,与中断有关的控制位共6位,其格式及各位的含义如图2-9所示。

4c640e69b0b9598a8ea1d354097b23c736fcefdc

IT0:选择外部中断INT0的中断触发方式,IT0 = 0时采用电平触发方式;IT0 = 1时采用脉冲触发方式。
IT1:选择外部中断INT1的中断触发方式,其功能与IT0类同。
IE0:外部中断INT0的中断请求标志位。当检测到INT0引脚有中断请求信号时,此位由硬件置1;在中断响应完成后转向中断处理子程序时,再由硬件自动清0。
IE1:外部中断INT1的中断请求标志位,其功能与IE0类似。
TF0:片内定时器/计数器0溢出中断请求标志位。当定时器/计数器0溢出发生时,此位由硬件置1;在中断响应完成后转向中断处理子程序时,再由硬件自动清0。
TF1:片内定时器/计数器1溢出中断请求标志位,其功能与TF0类同。
2.TCON的设置举例
从上面寄存器各位的含意可以看出,在对寄存器TCON的设置上只要注意设置触发方式即可。

例如,程序需要使用外部中断INT0,并采用电平触发方式。此时只要将TCON的第一位设置为0即可,通过下面语句来实现:

MOV  TCON, #00000000B  ;设置INT0为电平触发```

####2.7.4 串行口控制寄存器SCON
寄存器SCON的地址为98H,其中与中断有关的控制位共两位,其格式及各位的含义如图2-10所示。

<div style="text-align: center"><img src="https://yqfile.alicdn.com/210f363f5158debf33c98f7751526320bfcc06f4.png" width="" height="">
</div>

TI:串行口发送中断请求标志位。当发送完一帧串行数据后,由硬件置1;在转向中断处理程序后,用软件清0。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: