单片机的中断系统类似于部队军营“哨兵”把住多道“门卡”控制。信号来自四面八方,每一方面都设置了一道“门卡”,信号要集中送到上级司令部,司令部也设置了一个“关卡”(即总开关)。“门卫”或“哨兵”就好比中断请求标志,向上级传送紧急信号。“门卡”相当于中断是否允许,若门卡被关闭,则此通道禁止通行(即不允许中断);“关卡”就好比总开关(EA),若关卡被关闭(EA=0),则所有信号禁止进入(即所有中断被禁止);若EA=1则大门开放,所有信号允许进入,即开放所有中断。
当外部某一方面或多个方面发生情况时,对应的“哨兵”可通过各自的传输信号通道向上级或司令部(即CPU)报告。若此时的通道“门卡”被关闭,则即使有情况,“哨兵”也没有办法将信号传送进去,上级不知道外部的实际情况,也就不会发生中断;若此时的通道“门卡”是打开的,则“哨兵”就可以顺利地通过第一道门卡将信号再送到“总部”的“关卡”。若此时“司令部”的“关卡”被关闭,则所有的外部信号都送不进去,司令部不知道情况,也就不会发生中断;若此时“关卡”门是打开的,则外部发生的紧急信号都可以顺利送到司令部,此时再由IP优先级甄别这些紧急信号的级别:高优先级进入高级中断请求序列等待响应,低优先级进入低级中断请求序列等待处理。最后司令部按照既定法则,依序由CPU逐一接收等待处理的紧急信号,完成中断响应。
STC15W4K32S4单片机中断源比较多,各个中断源的中断控制寄存器不同,控制方式也有些差别,它们通过特殊功能寄存器IE、IE2、INT_CLKO来控制中断源的允许或关闭。本节重点介绍单片机5个外部中断、5个定时器、4个串行口等17个中断控制位,其他4个将在涉及的章节中讲述。
1.中断允许控制寄存器IE
单片机的中断系统对中断的开放和关闭采用两级开关量来控制,即有一个总开关(EA)控制所有中断请求源的打开或关闭。当该开关关闭时(EA=0),所有的中断请求被屏蔽,CPU对任何中断请求都不接受。当该开关打开时(EA=1),CPU允许中断,但7个中断源的中断请求是否被允许,还要由各自对应的控制开关所决定。这些开关分别由中断允许控制寄存器IE、IE2、INT_CLKO的各位所决定,IE的字节地址为A8H,可进行位寻址。IE寄存器控制了7个中断源的禁止/允许,其格式和各位的功能如下:
(1)EA:中断允许总控制位
EA=0,CPU屏蔽所有的中断请求(也称CPU关中断,中断关闭)。
EA=1,CPU允许所有的中断请求(也称CPU开中断,中断开放)。(2)ELVD:低压检测中断允许控制位
ELVD=0,禁止中断。
ELVD=1,允许中断。(3)EADC:A-D转换中断允许控制位
EADC=0,禁止A-D转换中断。
EADC=1,允许A-D转换中断。
(4)ES:串行口中断允许控制位
ES=0,禁止串行口1中断。
ES=1,允许串行口1中断。
(5)ET1:定时器/计数器1溢出中断允许控制位
ET1=0,禁止T1中断。
ET1=1,允许T1中断。
(6)EX1:外部中断1允许控制位
EX1=0,禁止INT1中断。
EX1=1,允许INT1中断。
(7)ET0:定时器/计数器0溢出中断允许控制位
ET0=0,禁止T0中断。
ET0=1,允许T0中断。
(8)EX0:外部中断0中断允许控制位
EX0=0,禁止INT0中断。
EX0=1,允许INT0中断。
2.中断允许控制寄存器IE2
IE2也是中断允许控制寄存器,由各位控制了7个中断源的开关。IE2的字节地址为AFH,不可以位寻址,其格式和各位的功能如下:
(1)ET4:定时器/计数器4溢出中断允许控制位
ET4=0,禁止T4中断。
ET4=1,允许T4中断。
(2)ET3:定时器/计数器3溢出中断允许控制位
ET3=0,禁止T3中断。(www.xing528.com)
ET3=1,允许T3中断。
(3)ES4:串行口4中断允许控制位
ES4=0,禁止串行口4中断。
ES4=1,允许串行口4中断。
(4)ES3:串行口3中断允许控制位
ES3=0,禁止串行口3中断。
ES3=1,允许串行口3中断。
(5)ET2:定时器/计数器2溢出中断允许控制位
ET2=0,禁止T2中断。
ET2=1,允许T2中断。
(6)ESPI:SPI中断允许控制位
ESPI=0,禁止SPI中断。
ESPI=1,允许SPI中断。
(7)ES2:串行口2中断允许控制位
ES2=0,禁止串行口2中断。
ES2=1,允许串行口2中断。
3.中断允许控制寄存器INT_CLKO
INT_CLKO也是中断允许控制寄存器,由各位控制了3个中断源的开关。INT_CLKO的字节地址为8FH,不可以位寻址,其格式和各位的功能如下:
(1)EX4:外部中断4中断允许控制位
EX4=0,禁止INT4中断。
EX4=1,允许INT4中断。
(2)EX3:外部中断3中断允许控制位
EX3=0,禁止INT3中断。
EX3=1,允许INT3中断。
(3)EX2:外部中断2中断允许控制位
EX2=0,禁止INT2中断。
EX2=1,允许INT2中断。
其他4位与中断无关,后面涉及时再介绍。
【例6-1】 在STC15单片机中,假设允许片内定时器/计数器1溢出中断和串行口1中断,禁止其他中断源的中断申请。试编程设置IE的相应值。
使用字节操作指令编写的程序段如下:
假设其他中断允许控制位已经清0,则使用位操作指令编写程序如下:
【例6-2】在STC15单片机中,假设允许片内定时器/计数器0溢出中断、定时器/计数器4溢出中断、串行口3中断、SPI中断和外部中断2、外部中断3中断,禁止其他中断源的中断申请。试编程设置IE、IE2、INT_CLKO的相应值。
使用位操作指令编写的程序段如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。