[PIC®/AVR®/dsPIC®产品] pic16f1939睡眠到唤醒问题

[复制链接]
 楼主| fchd123 发表于 2013-8-2 21:05 | 显示全部楼层 |阅读模式
求助PIC单片机16F1939睡眠唤醒的时候,为什么RB口检测不了低电平?我用仿真器的时候发现,当我睡眠唤醒再进入按键扫瞄子程序的时候,RB0明明已经拉低了,但是就是检测不了,我后来在扫瞄的时候已经都重新设好了,自己加了外部上拉,但就是检测不了,而且正常工作的时候是没问题的。请问到底是什么问题造成的呢?
1521732588 发表于 2013-8-5 11:25 | 显示全部楼层
睡眠之前先读一下PORTB
yewuyi 发表于 2013-8-5 14:05 | 显示全部楼层
你把IO口用外部电阻上拉(上拉电阻10K左右),如下试试:
代码如下:
            TRISB=0xff;
            LATB=0xff;
            IOCBP=0xff;
            IOCBN=0xff;
            PORTB=PORTB;
            IOCBF=0x00;
            asm("sleep");
            asm("nop")
            PORTB=PORTB;

然后再唤醒后试试用高低电平触发相应IO口是否能进入中断。
 楼主| fchd123 发表于 2013-8-7 12:22 | 显示全部楼层
1521732588 发表于 2013-8-5 11:25
睡眠之前先读一下PORTB

读一下PORTB有什么作用?我试过了都不行
 楼主| fchd123 发表于 2013-8-7 12:34 | 显示全部楼层
yewuyi 发表于 2013-8-5 14:05
你把IO口用外部电阻上拉(上拉电阻10K左右),如下试试:
代码如下:
            TRISB=0xff;

我原来的程序加外部上拉的时候就可以进入中断了,只是唤醒了之后第一次进入按键扫瞄的子程序的时候就检测不了,非得要等上一阵子才行,我排除问题的时候发现,如果将一段无关紧要的语句注释的话,就没问题了,可是这语句仅仅是一段延迟的程序,而且我用之前没有修改过的版本注释了同一个语句又不行了,啊。。。天啊!!!会不会是编译选项有问题?还是编译器有问题?还是要注意什么的???
yewuyi 发表于 2013-8-8 14:03 | 显示全部楼层
编译器有问题的概率要远远小于你应用代码出问题的概率。

别那么相信自己,而怀疑编译器作者。
opal11 发表于 2013-8-16 21:16 | 显示全部楼层

编译器有问题的概率要远远小于你应用代码出问题的概率。

别那么相信自己,而怀疑编译器作者。
DIYkuang 发表于 2016-12-6 16:41 | 显示全部楼层
    TRISB0=1;//作为输入   
    INTF=0;//INT外部中断标志位清零
    INTEDG=0;//设置为下降沿
    INTE=1;//使能INT
我用的跟你片子差不多   我也遇到这个问题 现在解决  按照上面开启就行了   外部中断位先清零
NE5532 发表于 2016-12-7 10:00 | 显示全部楼层
RB是通过RB口变化中断唤醒的,读RB是确认“上次”状态,详细请读数据手册。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部