一.中断概念
先来了解中断的概念,我们拿生活中举个例子,就比如你原本在洗衣服,洗着洗着水开了,这时候你跑过去把关火,把水灌入水瓶后,在回来洗衣服,那么这个过程实际上就是发生一次中断。
对单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速处理(中断发生);CPU暂时停止当前工作(中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称之为中断。
涉及中断——优先级。单片机在执行程序试同一时刻发生两个中断。单片机该先执行哪个?这时候我们就要设置中断优先级寄存器,来告诉单片机先执行哪个。
对于51/52单片机来讲,若没设置中断优先级,它内部自己有一套优先级,如下:
注:定时器T2是52单片机特有的。
二. 中断允许寄存器IE
中断允许寄存器用来设定各个中断源的打开和关闭。IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H~AFH,该寄存器可进行位寻址,即可对该寄存器的每一位进行单独操作。单片机复位时IE全部被清零。
只有打开全局开关(EA),其它各位的开关才可以开启。
每个位开关赋值为1则开,赋值为0则关。
使用方法:
1)整体赋值:如IE=0x81; (开启全局中断,打开外部中断0)
2)单独赋值:如EA=1;EX0=1;(开启全局中断,打开外部中断0)
三. 中断优先级寄存器IP
中断优先级寄存器用来设定各个中断源属于两级中断中的哪一级。IP在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别是B8H~BFH,可进行位寻址,单片机复位时IP全部被清零。
PS——串行口中断优先级控制位。
PS=1,串行口中断定义为高优先级中断。
PS=0,串行口中断定义为低优先级中断。
PT1——定时器/计数器1中断优先级控制位。
PT1=1,定时器/计数器1中断定义为高优先级中断。
PT1=0,定时器/计数器1中断定义为低优先级中断。
PX1——外部中断1中断优先级控制位。
PX1=1,外部中断1定义为高优先级中断。
PX1=0,外部中断1定义为低优先级中断。
PT0——定时器/计数器0中断优先级控制位。
PT0=1,定时器/计数器0中断定义为高优先级中断。
PT0=0,定时器/计数器0中断定义为低优先级中断。
PX0——外部中断0中断优先级控制位。
PX0=1,外部中断0定义为高优先级中断。
PX0=0,外部中断0定义为低优先级中断。
在51单片机系列中,高优先级中断能够打断低优先级中断以形成中断嵌套,同优先级中断之间,或低级对高级中断则不能形成中断嵌套。若几个同级中断同时向CPU请求中断响应,在没有设置中断优先级情况下,按照默认中断级别响应中断,在设置中断优先级后,则按设置顺序确定响应的先后顺序。