C8051T600/1/2/3/4/5/6
17.中断
该C8051T600 / 1/2/ 3/4/ 5/6 ,包括支持总共12中断扩展中断系统
源有两个优先级。中断源片上外设和克斯特之间的分配
纳尔输入引脚根据设备的不同而变化。每个中断源都有一个或多个
在一个SFR中相应的中断标志位。当一个外设或外部源满足有效
中断条件时,相应的中断标志位被置为逻辑1 。
如果启用了源中断,当中断标志是一个中断请求
设置的。一旦当前指令执行的是完整的,CPU产生一个LCALL到prede-
地址,开始执行中断服务程序( ISR )的。每个ISR必须以RETI结束
指令,返回程序执行,以将已如果所执行的下一个指令
没有发生中断请求。如果未启用中断,中断标志被忽略
硬件和程序继续正常执行。 (中断标志被设置为逻辑1顾及─
少中断的使能/禁用状态。 )
每个中断源可以被单独使能或通过使用相关的中断被禁用
在SFR( IE- EIE1 )使能位。然而,中断必须首先在全球范围内通过将EA位使能
( IE.7 )为逻辑1,每个中断之前,使能相认。将EA位为逻辑0禁用
所有的中断源不管每个中断允许位的设置。
注意:
扫清了一下,以禁止中断任何指令应紧跟一个指令
灰,其具有两个或更多个操作码字节。使用EA (全局中断使能)为例:
//在'C' :
EA = 0; //清楚EA bit.
EA = 0; //这是用两个字节opcode.一个空指令
;组装:
CLR EA ;明确EA bit.
CLR EA ;这是一个有两个字节的操作码的伪指令。
例如,如果一个中断期间"CLR EA"操作码的执行阶段张贴(或任何指令
这将清除一个位,以禁止中断源) ,并且该指令后跟单周期指令
灰,中断可以采取。然而,在使能位的读操作将返回“0”内的中断服务
副例程。当该位清零操作码后面是一个多周期指令,中断将不
采取。
有些中断标志由硬件自动清零当CPU进入ISR 。
然而,大多数不是由硬件自动清除,必须通过软件在返回前被清除
ISR 。如果中断标志仍然是CPU后设置完成后返回,从中断( RETI )
指令,一个新的中断请求,将立即产生后,CPU将重新进入ISR
在完成下一条指令。
80
修订版1.2