- #include "reg51.h"
- #include "intrins.h"
- sfr WKTCL=0xAA; //掉电唤醒定时器计时低字节
- sfr WKTCH=0xAB; //掉电唤醒定时器计时高字节
- sfr P6=0xE8;
- void main()
- {
- unsigned char i;
- //长时间休眠只有重复进入掉电模式,单次最大设置数32767,也就是32766+1,约16秒
- WKTCL = 0xfe; //设置唤醒周期为488us*(32766+1)≈16s
- WKTCH = 0xff; //使能掉电唤醒定时器 +高7位值
-
- while(1)
- {
- i=38; //16s*38=10min 注:内部低频振荡器误差较大需要修正
- while(i--)
- {
- PCON = 0x02; //进入掉电模式
- _nop_(); //掉电模式被唤醒后,直接从此语句开始向下执行,不进入中断服务程序
- _nop_();
- }
- P6=~P6; //掉电唤醒后,取反测试口
- }
- }
复制代码 |