第二章 EM78系列单片机硬件结构( 2.9
- End )
EM78X56单片机除了正常工作状态外,还有一种休眠状态(或为掉电模式)。通过执行“SLEP”指令,即可进入休眠模式。单片机的休眠模式可被下列情况唤醒:
前两种情况会产生单片机复位,状态寄存器R3的P和T标志可以用来判别是何种复位唤醒。第三种情况要考虑总的中断开启与否(执行ENI或DISI指令)决定单片机在唤醒之后是否跳到中断向量,若在执行“SLEP”指令之前:
a.若开中断(ENI),则唤醒后程序跳到中断向量OO8H位置
b.若关中断(DISI)则唤醒后程序从“SLEP”指令的下一条指令执行。
同时进入休眠模式之前,只有②③两种之一可由软件使能。如果:
(a)Port6输入变化中断在“SLEP”指令之前使能,则WDT必须关闭。因此单片机只能在①③情况下唤醒
(b)WDT在“SLEP”指令之前使能,Port6输入变化中断必须关闭,因此单片机只能在①或②的情况下唤醒。
在上述a种情况下,用Port6输入变化中断来唤醒单片机,则下述指令必须在“SLEP”之前执行:
MOV A ,
XX000110b
;选择内部TCC时钟
MOV A,
XXXX1110b
;选择WDT预分频系数
MOV
A,00000X1Xb
;使能Port6输入中断
ENT (或 DISI)
;使能(或关闭)总中断
在使能Port6输入变化中断之前,必须先读取Port6(MOVR6,R6),因为输入的变化是通过目前的输入和原来R6中的内容比较而得出(如上例)。Port6除了被设为输出状态的引脚外,都有因电平改变而中断的特性。
特别注意:从休眠模式唤醒后,WDT将被使能,因此,唤醒后的WDT工作情况要重新设定。
EM78X56系列有下列三种下降沿触发的硬件中断
中断的控制通过中断屏蔽寄存器IOC、总中断开启指令ENI和关闭指令DISI来控制。当有中断产生时,程序指针将指向中断向量地址008H,并将当前PC压栈,进入中断服务程序,可由RF寄存器来查询是何中断源,在离开中断服务程序及使能中断之前,必须清除RF中的中断标志位以免重复中断。同时,中断服务程序中应保护原程序的环境(如:A内容、标志位等),返回中断时也应恢复原环境的内容,并开启中断。
除了RF的ICIF位外,RF中的其它位当有中断时标志位都置“1”,而不管中断屏蔽寄存器IOCF中相关的屏蔽位状态和ENI指令是否执行。注意:读RF结果是RF与IOCF相与的结果。如图2.17所示,为中断产生电路。“RETI”指令是从中断返回并开中断(等于执行ENI指令)
执行“INT”指令,将产生一个软中断,其中断向量为001H(地址002H~007H预留,必须为NOP)如下:
EM78X56可以工作在RC振荡、晶振低频、晶振高频下,通过寄存器CODE
OPTION中的(MS、HLF、HLP)来选择:
1.MS=0、HLF=0为RC振荡形式,振荡频率内外按Rext、Cext值所确定,它属于低成本、但频率精度要求不高的场合适用,RC振荡电路和RC对应值如下图2.18所示。
2.MS=1、HLF=0、HLP=0为低频晶振方式,这种方式振荡器处于低频,低电压工作条件下,最大频率不超过4MHZ,单片机工件在低功能下。
3.MS=1,HLF=1,HLP=1为高频晶振方式,振荡器处在高速工作条件下,所以最小振荡频率不小于1MHZ,在这种模式下,功耗将大于低频振荡方式。

|
|
|
|
One cycles with two
clocks
|
|
|
|
|
|
|
|
|
|
|
|
Two cycles with two
clocks
|
|
|
|
|
|
|
|
|
|
|
|
One cycles with four
clocks
|
|
|
|
|
|
|
|
|
|
|
|
Two cycles with four
clocks
|
|
|
|
|
|
|
|
|
|
|
|
注:X
cycles:一个指令的周期数(专指(CALL、RET等)
X clocks:一个指令周期的振荡周期数
EM78X56的结构寄存器,并非一般的程序存贮器,它是不可存取,MASK版EM78X56只能是在掩膜时写入,对EM78P156
OTP型则可通过烧入器写入。它用来设定单片机的一些功能。
Bit0(0(CYES):特殊指令(如:JMP、CALL、RET、RETL等,参看指令部分)的指令周期选择
Bit2(POVD):启动电压检测器(注:使能电压检测器时将额外产生15μA功耗)
只有当MS=1时此位方才有作用,当MS=0,HLF必须为“0”
Bit10(CLKS):一个指令周期的振荡时钟数
只有在MS=1时,此位才有用,当MS=0时HLF必须为“0”。
2:OTP型EM78156A/B程序加密位和用户识别码寄存器
交流电气特性 (TA=0℃~70℃,
TDD=5.0V±5%,TSS=0V)
|