首先介绍两个重要的寄存器:
1.允许中断寄存器 IE:
MSB LSB
EA | —— | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
EA:总中断允许位。EA=0,禁止所有中断;EA=1,每个中断由各自的允许位确定。
ET2:定时器2的中断允许位。ET2=0,禁止定时器2中断。
ES :串行口允许中断位。ES =0,禁止串行口中断。
ET1:定时器1中断允许位。ET1 =0,禁止。
EX1:外部中断1允许位。EX1 =0,禁止。
ET0 :定时器0中断允许位。ET0 =0,禁止。
EX0:外部中断0允许位。EX0=0,禁止。
2.中断优先级寄存器 IP:
—— | —— | PT2 | PS | PT1 | PX1 | PT0 | PX0 |
是优先级设定位,各位为0时,为低优先级;置位1时,为高中断优先级。它们本身的优先级为:
外部中断0、定时/计数器T0溢出中断、外部中断1、 定时/计数器T1溢出中断、串行口中断、定时/计数器T2溢出中断。
对于中断触发方式由:TCON寄存器中的IT0或IT1来控制。若ITx(x为0或者1)=0,采用电平触发方式,反之,则采用边沿触发方式。
本人做了一个关于电平触发中断的例子,外部中断0和1全部中断,但是设置外部中断1的优先级高于中断0的,在程序的开始处设置如下:
IE=0x85;
IP=0x04;
TCON = 0x00;
当中断0触发的时候,完全能达到预期的效果,但是中断1触发的时候,报警器却始终不响,