一、 WDT相关寄存器的设置
1.1 WDT唤醒IC in sleep2
1、 设定CONT寄存器中的bit3(PAB)位,确定是否使用预分频器;
7 6 5 4 3 2 1 0
/PHEN /INT - - PAB PSR2 PSR1 PSR0
Bit3: 预分频分配位。
0: TCC;1: WDT。
2、 设定预分频系数,即设定CONT寄存器的PSR2、PSR1、PSR0位;
3、如果使能WDT唤醒,建议客户P6,P74-P75,P90-P91口输入唤醒禁止。
原因:WDT唤醒和P6,P74-P75,P90-P91口输入唤醒同时使能,当同时唤醒时,IC会优先reset,而不去执行P6,P74-P75,P90-P91口输入唤醒后的程式,故如果使能WDT唤醒,建议客户P6,P74-P75,P90-P91口输入唤醒禁止
4、 WDTC,使能看门狗定时器(WDT);将IOCE寄存器bit5与bit1置1;
7 6 5 4 3 2 1 0
- ODE WDTE SLPC ROC - - /WUE
Bit0: 用于定义P60-P67、P74-P75、P90-P91的唤醒功能控制位。
0: 唤醒功能有效; 1: 唤醒功能无效
Bit4:
此位有硬件在唤醒信号的下降沿置1,由软件进行清0。SLPC用于控制振荡器振荡。当由高到低变化时,振荡器停振(控制器进入SLEEP2模式)。当由低到高变化时,振荡器起振(控制器从SLEEP2模式唤醒)。
Bit5: WDT控制位。
0: WDT无效; 1: WDT有效。
WDTE位仅在代码选项位ENWDT为“1”时才有效。
5、 使IOCE寄存器SLPC位由1到0,进入SLEEP2
1.2 WDT唤醒IC in sleep1
1、 设定CONT寄存器中的bit3(PAB)位,确定是否使用预分频器;
2、 设定预分频系数,即设定CONT寄存器的PSR2、PSR1、PSR0位,;
3、 WDTC,使能看门狗定时器(WDT);将IOCE寄存器bit5置1
4、 下指令SLEP
二、WDT唤醒时间计算
1. SETUP TIME:18.0ms±30%(vdd==3v)
注:当vdd电压变化时SET TIME会相应变化
2. WDT的唤醒时间
Crystal MODE RC MODE
WDT的唤醒时间 Setup time*prescaler+ setup time
3. 上表中setuptime*prescaler的时间
对CONT寄存器的后4位
当PAB==0,setuptime*prescaler== setuptime
当PAB==1,setuptime*prescaler== NUM*setuptime
NUM PS2 PS1 PS0
1 0 0 0
2 0 0 1
4 0 1 0
8 0 1 1
16 1 0 0
32 1 0 1
64 1 1 0
128 1 1 1
三、 应用 举例
以下代码是实现用WDT唤醒EM78P451S的Demo
Code,Port5.1端口输出脉冲,可用来测量睡眠时间,也可接LED灯来进行观测。
3.A WDT唤醒IC in sleep2
Port5 == 0x05 ; Port5端口
IOCE == 0x0E ; WDT控制寄存器
Wdt_buf == 0x20 ; 延时缓冲器
Num == 1
;----------------------------MAIN
PROGRAM------------------------------;
ORG 0XFFF
JMP Wdt_Start
ORG 0x10
;----------------------------------------------------------------------;
Wdt_Delay:
MOV Wdt_buf, A
Wdt_Delay_Loop:
DJZ Wdt_buf
JMP Wdt_Delay_Loop
RET
本文关键字:暂无联系方式义隆单片机,单片机-工控设备 - 义隆单片机