本帖最后由 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; //次处用来确定每小时醒来,正式使用时去掉
}
}
}
|