MCS-51系列单片机中断系统结构如图6-2所示。
1.中断源
所谓中断源就是指提出中断请求的外部和内部器件、设备。以MCS-51系列单片机中的AT89S51单片机为例,中断系统有5个中断源:、、T0、T1和串行接口中断源。
(1)2个外部中断源、即CPU允许有两个外部设备通过引脚、请求中断。
(2)3个内部中断源
1)内部定时器中断源T0、T1,即单片机的内部定时器/计数器。T0、T1在完成计数或定时后,能给CPU发出中断请求信号。
2)串行接口中断源,串行接口在传输数据时要求有一个中断来配合。
那么中断源发出的中断申请,怎么被CPU识别呢?这就涉及中断采样和中断查询的问题。
图6-2 MCS-51系列单片机中断系统结构图
2.中断采样、中断查询及标志寄存器
(1)中断采样CPU要想知道外部中断申请是否发生,采样是唯一可行的办法。
采样就是CPU在每个机器周期的S5P2(图2-13)对引脚(P3.2)和(P3.3)进行信号检测,根据采样结果设置TCON寄存器中相应的标志位,以便CPU在下一个机器周期检测这些中断标志位的状态,了解是否有外部中断申请,然后根据中断初始化情况决定是否响应。
对于T0、T1、串行接口中断的中断请求,都发生在芯片内部,可以直接设置TCON寄存器和SCON寄存器中相应的标志位,无需采样。
(2)中断查询 中断查询就是CPU检测TCON寄存器和SCON寄存器中各标志位的状态,来决定有没有中断请求发生及是哪一个中断请求。MCS-51系列单片机在每个机器周期的S6按优先级顺序对中断请求标志位进行查询,如果查询到相应标志位为1,则表明有中断请求,CPU在下一个机器周期的S1开始进行中断响应。
(3)中断标志寄存器 由前面叙述可知,MCS-51系列单片机的中断请求标志位都汇集在中断标志寄存器TCON和SCON中,这使得中断的查询和检测变得较为简单。
1)定时器控制寄存器TCON用于外部中断请求和定时器计数溢出中断,字节地址为88H,可对每位进行寻址,位地址为8FH~88H。各位定义如下:
TF1、TF0:定时器/计数器1、0溢出中断标志,有溢出中断时内部硬件使IF1、IF0置位,当转向中断服务时,由硬件自动清零。
IE1、IE0:外部中断(0或1)请求标志,当CPU在P3.2或P3.3上检测到有效的中断请求信号时,由硬件使IE1、IE0置位,进入中断服务程序后由内部硬件自动使IE1、IE0清零,当有中断请求但不能进入相应的中断服务程序时,IE1、IE0将保持1不变。(www.xing528.com)
TR1、TR0:计数器/定时器启、停控制位。
IT1、IT0:外部中断、触发类型控制位,设置为1时是负边沿触发中断(申请中断),设置为0时是低电平触发中断(申请中断)。
要点说明:
①设置为负边沿触发类型时,若有相应的中断,内部硬件会使IE1、IE0置1,进入相应的中断服务程序后,内部硬件又会使IE1、IE0清0(以便响应下次中断)。
②设置为电平触发时(中断申请、响应情况与IE1、IE0无关),在、引脚上的低电平就是中断请求,这个低电平应一直保持,直到所请求的中断得到响应为止;该中断服务程序完成后,或不打算进行该服务时,需撤消该低电平所引起的中断请求,必须由外部电路改变、引脚上的信号(0→1)才能完成。
③无论负边沿触发还是电平触发,加到、引脚上的信号高、低电平的宽度至少要大于一个机器周期(Tcy),如图6-3所示。
事实上,由于一个中断源提出申请到执行该中断服务程序最少需要3个机器周期,所以申请中断的间隔时间应当足够长(大于3个机器周期+执行该中断服务程序的时间)。
图6-3 高低电平的宽度
2)串行接口控制寄存器SCON字节地址为98H,可位寻址,其位地址为98H~9FH。寄存器各位定义如下:
其中与中断有关的控制位共2位。
TI:串行接口发送中断请求标志位,当发送完一帧数据后,由硬件置位,响应中断后,用软件清零。
RI:串行接口接受中断请求标志位,当接受完一帧数据后,由硬件置位,响应中断后,用软件清零。
3.中断源入口地址
前面已讲到,中断源入口地址是CPU响应中断时由硬件确定的PC值,MCS-51系列单片机的5个中断源入口地址见表6-1。
表6-1 MCS-51系列单片机5个中断源入口地址表
这里需要说明的是,由于分配给每个中断源入口地址之间只有8个字节单元,所以一般仅在这些单元中写入转移到相应的中断服务子程序的跳转指令。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。