|
- #include "reg51.h"
- #include "intrins.h"
- sfr WKTCL=0xAA; //掉電喚醒定時(shí)器計(jì)時(shí)低字節(jié)
- sfr WKTCH=0xAB; //掉電喚醒定時(shí)器計(jì)時(shí)高字節(jié)
- sfr P6=0xE8;
- void main()
- {
- unsigned char i;
- //長(zhǎng)時(shí)間休眠只有重復(fù)進(jìn)入掉電模式,單次最大設(shè)置數(shù)32767,也就是32766+1,約16秒
- WKTCL = 0xfe; //設(shè)置喚醒周期為488us*(32766+1)≈16s
- WKTCH = 0xff; //使能掉電喚醒定時(shí)器 +高7位值
-
- while(1)
- {
- i=38; //16s*38=10min 注:內(nèi)部低頻振蕩器誤差較大需要修正
- while(i--)
- {
- PCON = 0x02; //進(jìn)入掉電模式
- _nop_(); //掉電模式被喚醒后,直接從此語(yǔ)句開(kāi)始向下執(zhí)行,不進(jìn)入中斷服務(wù)程序
- _nop_();
- }
- P6=~P6; //掉電喚醒后,取反測(cè)試口
- }
- }
復(fù)制代碼 |
|