打印

多重睡眠唤醒问题

[复制链接]
455|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renyaq|  楼主 | 2020-3-1 17:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
程序走到第一个SLEEP休眠,按键唤醒,然后设置看门狗定时模式,紧接着再次SLEEP(),发现第二个休眠会直接跳出。
程序大致如下
SLEEP();
nop();
nop();
while(flag0==1)//按键唤醒标志位
{
LED=1;
WDTCON=0B00011011;//8S定时,看门狗定时开
SLEEP();
NOP();
LED=0;
__delay_ms(100);
}

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

使用特权

评论回复
沙发
wangpe| | 2020-3-1 17:51 | 只看该作者
flag0在中断时置1?

使用特权

评论回复
板凳
dingy| | 2020-3-1 17:55 | 只看该作者
入中断后,要读一次IO ,清中断标致。有中断标致,PIC不会进入sleep

使用特权

评论回复
地板
pengf| | 2020-3-1 17:57 | 只看该作者
对,我是用电平变化唤醒第一个SLEEP,然后flag0置1,就一直循环在while(flag0)中。我不太明白在中断里,读I/O口是什么意思?

使用特权

评论回复
5
supernan| | 2020-3-1 18:00 | 只看该作者

使用特权

评论回复
6
liuzaiy| | 2020-3-1 18:03 | 只看该作者
读I/O口就是读I/O口的电平状态,比如movf  PORTB ,W  既把PORT口的状态读取一遍

使用特权

评论回复
7
zyf部长| | 2020-3-1 18:13 | 只看该作者
按键会产生很多脉冲的,所以会出现这样的问题

使用特权

评论回复
8
renyaq|  楼主 | 2020-3-1 18:16 | 只看该作者

好的,我明天去单位试一下,多谢各位大侠了哈        

使用特权

评论回复
9
CoolSilicon| | 2020-3-2 09:26 | 只看该作者
按键唤醒是有开中断的吧?
你清一下那个中断标志试试看.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

700

主题

10138

帖子

4

粉丝