对于中断通俗点说:就是让单片机的cpu暂停执行当前任务转去执行引起中断的任务。刚开始学习单片机时非常排斥中断方面的东西因为要记忆很多寄存器相关的东西什么IE,IP等
但是仔细一想如果不懂中断就只能写最简单的顺序执行程序而且非常浪费单片机的这些中断方面的资源,所以咬咬牙就拼命的学习这些特殊功能寄存器。今天写此文章也是为了以后
忘记时查阅着方便。闲话少说言归正传。
51单片机有5个中断源分别是:
1、INT0——外部中断0,由P3.2端口引入,低电平或下降沿引起。默认优先级最高
2、INT1——外部中断1,由P3.3端口引入,低电平或下降沿引起。默认优先级第二
3、T0——定时器/计数器0中断,由T0计数器计满回零引起。默认优先级第三
4、T1——定时器/计数器1中断,由T1计数器计满回零引起。默认优先级第四
5、T2——定时器/计数器2中断,由T2计数器计满回零引起。默认优先级第五
另外52单片机多加一个中断源
6、TI/RI——串行口中断,串行端口完成一帧字符发送/接收后引起。默认中断优先级最低
以上中断的开关由IE特殊功能寄存器控制,优先级由IP特殊功能寄存器控制
当我们要使用以上那些中断功能时需要设置两个控制这些中断开关和优先级的寄存器:中断允许寄存器IE和中断优先级寄存器IP。
<<关于中断允许寄存器IE>>,能够控制各个中断源的打开和关闭。特殊功能寄存器,可位寻址。单片机复位时IE全部被清0。字节地址为A8H,位地址由低位到高位A8H-AFH。
|位序号 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
中断允许寄存器IE ====> |位符号 | EA | -- | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
|位地址 | AFH | -- | ADH | ACH | ABH | AAH | A9H | A8H |
EA——全局中断允许位。EA=1,打开全局中断控制,在此条件下才能控制各个相应中断的打开或者关闭。EA=0,关闭全部中断。
ET2——定时器/计数器2中断允许位。ET2=1,打开T2中断。ET2=0,关闭T2中断。
ES——串行口中断允许位。ES=1,打开串行口中断。ES=0,关闭串行口中断。
ET1——定时器/计数器1中断允许位。ET1=1,打开T1中断。ET1=0,关闭T1中断。
EX1——外部中断1中断允许位。EX1=1,打开外部中断1中断。EX1=0,关闭外部中断1中断。
ET0——定时器/计数器0中断允许位。ET0=1,打开T0中断。ET0=0,关闭T0中断。
EX0——外部中断0中断允许位。EX0=1,打开外部中断0中断。EX0=0,关闭外部中断0中断。
<<关于中断优先级寄存器IE>>,能够设定各个中断源属于两级中断的哪一级。特殊功能寄存器,可位寻址。单片机复位时IP全部被清0。
字节地址B8H,位地址由低位到高位B8H-BFH。
|位序号 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
中断优先级寄存器IP ====> |位符号 | -- | -- | -- | PS | PT1 | PX1 | PT0 | PX0 |
|位地址 | -- | -- | -- | BCH | BBH | BAH | B9H | B8H |
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中断定义为低优先级中断。