本帖最后由 188610329 于 2021-11-10 15:36 編輯
先說明一下, 定時喚醒,只能最多睡15秒左右,就會醒,這是硬件限制,沒有辦法,我們能做的,就像逼不愛午睡的小孩午睡,你醒了,我安撫一下,接著再把被子一蒙頭,你給我繼續睡,直到睡夠午睡時間。所以要睡一周,就是反復醒了睡的過程,程序大致如下,你可以參考。實驗時可以改小 i 和 j 的數字。更快的觀察到效果。
void main()
{
uchar i,j;
while(1)
{
LED0 = !LED0; //此處 你需要定期執行的程序, 這里用 翻轉LED0 代替
i = 168; // 一周168小時
while(--i)
{
j = 240; //每小時有 60分鐘,即 240 個 15秒
while(--j)
{
WKTCH =0xff; //WKTCL 不需要管,不需要那些雞毛蒜皮的時間
PCON |= 0x02;
_nop_();
LED2 = !LED2; //次處用來確定每15秒醒來,正式使用時去掉
}
LED1 = !LED1; //次處用來確定每小時醒來,正式使用時去掉
}
}
}
|