2.6 TCC/WDT及预分频器Prescaler
EM78内置8位定时/计数器TCC和看门狗定时器、如下图2.5所示:

图2.5 TCC和WDT功能框图
TCC的时钟可以是内部指令周期时钟CLK(Fosc/2或Fosc/4)或通过TCC脚输入的外部脉冲,其计数采用递增方式,从O0开始计,当不使用预分频器时,每隔一个指令周期或者有一个外部脉冲时TCC会加1(TCC响应延时时间为2个机器周期),当TCC计数至FFH(16进制)时,在下一个计数发生时,将自动清零,并置TCC计数器溢出中断位TCIF如此往复。当TCC使用预分频器时,则外部或内部信号经过预分频器分频后再输出给TCC。
Tcc 输入波形图(CLKS=”0”)(见图2.7)


图2.6 TCC输入信号波形图
TCC和预分频器的控制主要由控制寄存器CONT(Bit0~5)来完成,预分频器的分频系数由PSR0~PSR2决定;预分频器是分配给TCC或WDT使用可由PAB位来决定,同一时间预分频器只能给TCC或WDT其中之一使用。
注意二点;
(1)预分频器分配给TCC使用时(PAB=0),所有写入TCC的指令都将清除预分频器
(2)当预分频器分配给WDT使用时(PAB=1),WDT和预分频器可被WDTC和SLEP指令清零。
看门狗定时器WDT是一片内自振荡式RC振荡器,即使外部振荡器被关闭(即工作在休眠模式),WDT也一直在计数。当WDT被使能,无论是在工作模式或休眠模式,若WDT超时,都将导致单片机复位,因此WDT主要用来防止单片机系统失控,一般WDT基本溢出周期约18ms(PAB=“0”),最大溢出周期约2.3S(PAB=“1”)。在正常情况下,当WDT溢出之前,须通过WDTC指令来对WDT清零以防产生复位。WDT的工作状态由寄存器CONT中的PAB、PSR2~PSRO位,IOCE的WDTE位(IOCE.7)、OTP型EM78X56的结构选择寄存器ENWDTB位来控制(烧写芯片时设定)。
2.7 I/O口(port5、port6)
EM78把I/O(口5、口6)作为一般工作寄存器R5、R6来操作,它们为双向、三态输入/输出口,可通过控制寄存器来设置以下功能,如表2.6所示:
|
功 能 |
控制寄存器 |
I/O脚 |
|
I/O输入输出方向 |
IOC5、IOC6 |
P50~P53、P60~P67 |
|
内部上拉电阻 |
IOCD |
P60~P67 |
|
内部下拉电阻 |
IOCB |
P50~P52、P60~P63 |
|
集电极开路 |
IOCC |
P60~P67 |
|
/INT输入口 |
IOCE(EIS) |
P60 |
|
R-option |
IOCE(ROC) |
P50、P51 |
|
休眠状态唤醒 |
IOCF(ICIE) |
P60~P67 |
表2.6、I/O控制功能分类表
I/O口Port5、Port6的接口电路图如下所示:

图2.7 I/O口电路和I/O控制寄存器
其中图中:PCRD——口控制读 PDRD——口数据读
PCWR——口控制写 PDWR——口数据写
MUX ----多路选通器
R-option功能图2.8

图2.8 P60(INT)的I/O和控制寄存器

图2.9 P61~P67 I/O控制寄存器和I/O口电路
图2.10 带R-Option 功能的I/O口(P70、P71)电路
当使用R-option功能时,往往地P0~51定义为输出脚使用,这样在读取R-option功能时
先把P50、P51设为输入并使能R-option功能,读取后,再关闭R-option功能,并把P50、P51设回输出,并不影响P50、P51的I/O使用。若外部电阻连接到P50(P51)作为R-option功能,将消耗一些电流,请特别注意。
2.8 EM87X56复位
2.8.1. 产生复位原因
EM78X56的复位由以下情况产生:
·电源上电复位或电压检测器复位(若有电压检测器)
·RESET脚输入低电平
·WDT溢出(当WDT使用时)
2.8.2. 复位状态
当单片机检测到复位信号后会持续18ms的复位状态。一旦复位产生,芯片将处于下列状态:
·振荡器继续动作或起动
·程序计数器PC(R2)被清零,转向复位地址000H
·所有I/O口脚均被设置为输入模式(高阻态)
·看门狗定时器和预置分频器被清零
·当上电时,状态寄存器的高三位被清零(RAM选BANKO)
·除Bit6(INT中断使能标志位)外,CONT寄存器全设为“1”
·下拉控制寄存器IOCB全设为“1”(下拉功能禁止)
·集电极开路控寄存器IOCC全设为“0”(开路功能禁止)
·上拉控制寄存器IOCD全设为“1”(上拉功能禁止)
·WDT控制寄存器IOCE Bit7设为“1”,Bit1和Bit4设为“0”,即开WDT,置P60为I/O口,取消R-option功能
·中断标志寄存器RF中的标志位全部清零(Bit0~2)
·中断屏幕寄存器IOCF的中断屏幕位清零(Bit0~2)
寄存器初始化值汇总表如下:
|
Address |
Name |
Reset Type |
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
|
N/A |
IOC5 |
Bit Name |
X |
X |
X |
X |
C53 |
C52 |
C51 |
C50 |
|
Power-On |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 | ||
|
/RESET and WDT |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 | ||
|
Wake-Up from Pin Change |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 | ||
|
N/A |
IOC6 |
Bit Name |
C67 |
C66 |
C65 |
C64 |
C63 |
C62 |
C61 |
C60 |
|
Power-On |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
/PESET and WDT |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
Wake-Up from pin Change |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
0x05 |
P5 |
Bit Name |
X |
X |
X |
X |
P53 |
P52 |
P51 |
P50 |
|
Power-On |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
/RESET and WDT |
P |
P |
P |
P |
P |
P |
P |
P | ||
|
Wake-Up from Pin Change |
P |
P |
P |
P |
P |
P |
P |
P | ||
|
0x06 |
P6 |
Bit Name |
P67 |
P66 |
P65 |
P64 |
P63 |
P62 |
P61 |
P60 |
|
Power-On |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
/RESET and WDT |
P |
P |
P |
P |
P |
P |
P |
P | ||
|
Wake-Up from Pin Change |
P |
P |
P |
P |
P |
P |
P |
P | ||
|
N/A |
CONT |
Bit Name |
X |
INT |
TS |
TE |
PAB |
PSR2 |
PSR1 |
PSR0 |
|
Power-On |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
/RESET and WDT |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
Wake-Up from Pin Change |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
0x00 |
R0(IAR) |
Bit Name |
- |
- |
- |
- |
- |
- |
- |
- |
|
Power-On |
U |
U |
U |
U |
U |
U |
U |
U | ||
|
/RESET and WDT |
P |
P |
P |
P |
P |
P |
P |
P | ||
|
Wake-Up from Pin Change |
P |
P |
P |
P |
P |
P |
P |
P | ||
|
0x01 |
R1(TCC) |
Bit Name |
- |
- |
- |
- |
- |
- |
- |
- |
|
Power~On |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
/RESET and WDT |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
Wake-Up from Pin Change |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
0x02 |
R2(PC) |
Bit Name |
- |
- |
- |
- |
- |
- |
- |
- |
|
Power-On |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
/RESET and WDT |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
Wake-Up from Pin Change |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
0x03 |
R3(SR) |
Bit Name |
GP |
PS1 |
PS0 |
T |
P |
Z |
DC |
C |
|
Power-On |
0 |
0 |
0 |
1 |
1 |
U |
U |
U | ||
|
/RESET and WDT |
P |
P |
P |
t |
t |
P |
P |
P | ||
|
Wake-Up from Pin Change |
P |
P |
P |
t |
t |
P |
P |
P | ||
|
0x04 |
R4(RSR) |
Bit Name |
X |
X |
- |
- |
- |
- |
- |
- |
|
Power-On |
0 |
0 |
U |
U |
U |
U |
U |
U | ||
|
/RESET and WDT |
0 |
0 |
P |
P |
P |
P |
P |
P | ||
|
Wake-Up from Pin Change |
0 |
0 |
P |
P |
P |
P |
P |
P | ||
|
0x05 |
R5(P5) |
Bit Name |
X |
X |
X |
X |
P53 |
P52 |
P51 |
P50 |
|
Power-On |
0 |
0 |
0 |
0 |
U |
U |
U |
U | ||
|
/RESET and WDT |
0 |
0 |
0 |
0 |
P |
P |
P |
P | ||
|
Wake-Up from Pin Change |
0 |
0 |
0 |
0 |
P |
P |
P |
P | ||
|
0x0F |
RF(ISR) |
Bit Name |
X |
X |
X |
X |
X |
EXIF |
ICIF |
TCIF |
|
Power-On |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
/RESET and WDT |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
Wake-Up from Pin Change |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
0x0B |
IOCB |
Bit Name |
/PD7 |
/PD6 |
/PD5 |
/PD4 |
X |
/PD2 |
/PD1 |
/PD0 |
|
Power-On |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
/RESET and WDT |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
Wake-Up from Pin Change |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
0x0C |
IOCC |
Bit Name |
OD7 |
OD6 |
OD5 |
OD4 |
OD3 |
OD2 |
OD1 |
OD0 |
|
Power-On |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
/RESET and WDT |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
Wake-Up from Pin Change |
P |
P |
P |
P |
P |
P |
P |
P | ||
|
0x0D |
IOCD |
Bit Name |
/PH7 |
/PH6 |
/PH4 |
/PH3 |
/PH3 |
/PH2 |
/PH1 |
/PH0 |
|
Power-On |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
/RESET and WDT |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
Wake-Up from Pin Change |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
|
0x0E |
IOCE |
Bit Name |
WDTC |
EIS |
X |
ROC |
X |
X |
X |
X |
|
Power-On |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 | ||
|
/RESET and WDT |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 | ||
|
Wake-Up from Pin Change |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 | ||
|
0x0F |
IOCF |
Bit Name |
X |
X |
X |
X |
X |
EXIE |
ICEI |
TCIE |
|
Power-On |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 | ||
|
/RESET and WDT |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 | ||
|
Wake-Up from Pin Change |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 | ||
|
0x10~0x3F |
R10~R3F |
Bit Name |
- |
- |
- |
- |
- |
- |
- |
- |
|
Power-On |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
|
/RESET and WDT |
P |
P |
P |
P |
P |
P |
P |
P | ||
|
Wake-Up from Pin Change |
P |
P |
P |
P |
P |
P |
P |
P |
X:未使用 U:未知 P:复位之前值 t:参见表2.4、2.5
表2.7 寄存器初始化值表
2.8.3. 内部上电复位电路和电压检测器
1.内部上电复位电路
EM78X56系列内置一上电复位电路POR(POWUER RESET)如图2.11所示,上电后自动产生复位。

图2.11 复位控制方框图
所以一般情况下可不用在RESET端接复位电路,仅将Reset端接VDD即可
2.电压检测器
对EM78X56系列MASK版和EM78P156A型均内置-2.2V电压检测器,分别为可选用式和固定式两种,即对MASK版,可通过CODE OPTION的位/POVD来选择使能或关闭,而OTP型EM78P156A型,则不能通过CODE OPTION来选择,电压检测器功能已固化在内(电压检测器有15μA电流消耗),EM78P156B型则没有电压检测器功能。
电压检测器电气特性如下表(TA=25℃)
|
Parameter |
Symbol |
Condition |
Min. |
Typ. |
Max. |
Unit |
|
Detect voltage |
Vdet |
VDD =5V |
2.0 |
2.2 |
2.4 |
V |
|
Release voltage |
Vrel |
VDD =5V |
Vdet x1.05 |
|
|
V |
|
Current consumption |
Iss |
VDD =5V |
|
|
20 |
μA |
|
Operating voltage |
Vop |
|
0.7* |
|
5.5 |
V |
|
Temperature
Characteristic of Vdet |
ΔVdet/
ΔTA |
0℃≤T≤70℃ |
|
|
-2 |
mv/℃ |
*当VDD=0.7V~Vdet之间时,电压检测器输出为低。
2.8.4. 外部复位电路
通常有下列几种情况需要加外部复位中路。
1. 当电源上升时间比较长时,通过RC电路来保证VDD达到最小工作电压时RESET脚保持复位状态

图2.12 外电源上电复位电位
其中器件功能及值选择原则:
①R<40K(由于RESET吸入电流约50μA,为保证RESET端电压不大于0.2V)
②二极管D将使电容C在VDD掉电时能快速彻底放电
③R1取100~1K,为限流电阻,用来限制大的放电电流或静电ESD对RESET的冲击
2.残存电压保护电路(二种)
有些应用中,例如供电电池在几秒钟内松动后又恢复,此时将可能会在复位脚出现一个小于Vdd最小值又不为0的残存电压,因而便复位不正常,以下两种电路将解决此问题,

当VDD掉至VZ+0.7V时单片机复位(VZ为稳压管稳压值)
图2.13残余电压保护电路1

当VDD掉至下述值时三级管Q1 截止、单片机复位
VDD·
=0.7V
=0.7V , (R3为限流电阻,可选100K)
图2.14残余电压保护电路2
单片机复位时序图如图2.15所示:

图2.15 单片机复位时序图
, (R3为限流电阻,可选100K)
图2.14残余电压保护电路2
单片机复位时序图如图2.15所示:

图2.15 单片机复位时序图