renyaq 发表于 2022-12-4 13:14

多重睡眠唤醒问题

程序走到第一个SLEEP休眠,按键唤醒,然后设置看门狗定时模式,紧接着再次SLEEP(),发现第二个休眠会直接跳出。
程序大致如下
SLEEP();
nop();
nop();
while(flag0==1)//按键唤醒标志位
{
LED=1;
WDTCON=0B00011011;//8S定时,看门狗定时开
SLEEP();
NOP();
LED=0;
__delay_ms(100);
}

灯泡会闪,但起作用的是delay函数。

tian111 发表于 2022-12-4 13:16

flag0在中断时置1?

zwll 发表于 2022-12-4 13:18

入中断后,要读一次IO ,清中断标致。有中断标致,PIC不会进入sleep

renyaq 发表于 2022-12-4 13:20

对,我是用电平变化唤醒第一个SLEEP,然后flag0置1,就一直循环在while(flag0)中。我不太明白在中断里,读I/O口是什么意思?

dingy 发表于 2022-12-4 13:22


renyaq 发表于 2022-12-4 13:25

读I/O口就是读I/O口的电平状态,比如movfPORTB ,W既把PORT口的状态读取一遍

wenfen 发表于 2022-12-4 13:28

按键会产生很多脉冲的,所以会出现这样的问题

heweibig 发表于 2022-12-4 13:30

按键唤醒是有开中断的吧?

pangb 发表于 2022-12-4 13:33

你清一下那个中断标志试试看.
页: [1]
查看完整版本: 多重睡眠唤醒问题