一、WDT相关寄存器的设置
1、 设定IOCE0寄存器中的bit7(WDTE)位,使能看门狗定时器(WDT);
bit7: 看门狗定时器的使能控制位
1: 使能; 0: 禁止
bit0-bit2: TCC/WDT预分频系数分配位。
7 6 55 4 3 2 1 0
WDTE EIS - - - PSW2 PSW1 PSW0
2、 设定预分频系数,即设定IOCE0寄存器的PSW2、PSW1、PSW0位;
3、 如果使能WDT唤醒,建议客户P5口输入唤醒或比较器唤醒禁止。
原因:WDT唤醒和P5口输入唤醒或比较器唤醒同时使能,当同时唤醒时,IC会优先reset,而不去执行P5口输入唤醒后的程式或比较器唤醒后的程式,故如果使能WDT唤醒,建议客户P5口输入唤醒或比较器唤醒禁止
4、 WDTC,使能看门狗定时器(WDT),将IOCE0寄存器bit7置1
5、 下指令SLEP
二、WDT唤醒时间计算
1. SETUP TIME:17.6ms±30%(vdd==3v)
注:当vdd电压变化时SET TIME会相应变化
2. WDT的唤醒时间
Crystal MODE RC MODE(ERC or IRC)
WDT的唤醒时间 Setup time*prescaler+ setup time
3. 上表中setuptime*prescaler的时间
对IOCE0寄存器的后3位
当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唤醒EM78P257A的Demo
Code,Port6.1端口输出脉冲,可用来测量睡眠时间,也可接LED灯来进行观测。
R3 == 0x03 ; 状态寄存器
Port6 == 0x06 ; port6端口
IOCE0 == 0x0E ; WDT控制寄存器
RF == 0x0F ; 中断状态寄存器
Wdt_buf == 0x20 ; 延时缓冲器
Num == 1
;----------------------------MAIN
PROGRAM------------------------------;
ORG 0X00
JMP Wdt_Start
ORG 0x01
;----------------------------------------------------------------------;
Wdt_Delay:
MOV Wdt_buf, A
Wdt_Delay_Loop:
DJZ Wdt_buf
JMP Wdt_Delay_Loop
RET
;----------------------------------------------------------------------;
Wdt_Start:
BC R3, 6
MOV A, @0b00000000
IOW IOC60 ; 设置port6为输出端口
BS Port6, num ; port6.1输出脉冲
MOV A, @255 ; 延时
CALL Wdt_Delay
BC Port6, num
本文关键字:暂无联系方式义隆单片机,单片机-工控设备 - 义隆单片机