1. 中断系统概述
在执行程序的过程中,由于某种外界的原因,必须尽快终止当前的程序执行,而去执行相应的处理程序,待处理结束后,再回来继续执行被终止的程序。这个过程就叫做中断。
理解完中断的概念,是不是发现其与调用C语言中的函数类似(汇编语言是调用子程序),其运作过程确实大差不差,而调用的原理却有所不同。函数(子程序)的调用是在程序中判断的,而中断的调用是由CPU直接判断,中断系统具有实时性,在程序运行的任何时间都可以触发,而函数的调用只有在存在调用语句时才可以触发,其不具有实时性。
中断源:中断源又称之为中断申请源,指能够产生中断申请的事件。51单片机一共提供了5个中断源,分别为两个外部中断源INT0、INT1,两个定时计数器中断源T0、T1以及串行口中断源。这5个中断源又具有2个中断优先级(高级优先级中断程序可以打断低级优先级中断程序的运行而运行高级优先级的中断程序),可实现二级中断服务程序嵌套。
中断系统是由一下几个特殊功能寄存器(SFR)控制的:中断允许寄存器——IE(字节地址为A8H)、中断优先级控制寄存器——IP(字节地址为80H)、中断源寄存器——TCON(字节地址为98H)、SCON的低四位(字节地址为88H),根据字节地址来看,与中断系统有关的SFR均可进行位控制。
2.中断允许寄存器——IE
该寄存器一共有6位可操作。
EA位(位地址为AFH):该位控制中断系统是否运行。
ES位(位地址为ACH):串行口中断源是否运行。
ET1位(位地址位ABH):该位控制定时计数器1中断源是否运行。
EX1位(位地址为AAH):该位控制外部中断源INT1是否运行。
ET0位(位地址位A9H):该位控制定时计数器0中断源是否运行。
EX0位(位地址为A8H):该位控制外部中断源INT0是否运行。
中断系统实现两级管理,若使用中断系统则必须将EA位置1,若使用外部中断源INT0则必须将EX0置1,其余中断源依次类推。复位时,各位均为0,禁止所有中断。
3.中断优先级控制寄存器——IP
该寄存器一共有5位可进行操作。
PS位置1,表示串口中断源为高优先级。
PT1位置1,表示定时计数器T1中断源为高优先级。
PX1位置1,表示外部中断源INT1为高优先级。
PT0位置1,表示定时计数器T0中断源为高优先级。
PX0位置1,表示外部中断源INT0为高优先级.
在此说明一个特殊情况,若干个同级中断源同时触发且不存在更高级中断源触发,则运行顺序为INT0、T0、INT1、T1、串行口通讯,这种情况是由于CPU检查中断源是否被触发的顺序决定的。
4.中断源寄存器——TCON、SCON
TCON寄存器一共有8位可进行位操作,其控制中断源——定时计数器中断源、串行口中断源。
TF0与TF1为定时计数器T0、T1溢出标志位,若定时计数器产生溢出时则置1向CPU申请中断,进入中断子程序后由CPU清0。
TR0与TR1为定时计数器T0、T1的启停控制位,其置1则定时计数器开始工作,清0则定时计数器停止工作。
可去该网站了解定时计数器相关内容
IE0与IE1为外部中断INT0、INT1请求标志位,当外部中断源有请求时。对应的标志位由硬件置1,当CPU响应中断后由硬件自动将其清0.
IT0与IT1为外部中断触发方式位,当其为0时,外部中断为低电平触发;当其为1时,外部中断为下降沿触发。
中断源寄存器的另一个寄存器——SCON,SCON寄存器一共有8位可进行位操作,低两位是控制串行口中断源,其余6位是控制串行通讯相关内容,可去该网站了解串行通讯。
RI和TI为串行口接收和发送中断请求标志位。当串行口接受或者发送完一帧数据时,SCON将RI或TI进行置1操作,向CPU申请中断,进入中断子程序后系统并不会将其清0,而必须运用软件及时清0,负责会影响程序正常运行。