打印

pic16f914 休眠后不能唤醒

[复制链接]
2903|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lcz01|  楼主 | 2007-1-27 18:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下边是我的部分程序:
void init_io(void)
{
    PORTA=0;
    PORTB=0;
    PORTC=0;
    PORTD=0x0;
    PORTE=0;
    TRISA=0;
    CMCON0=0x07;            //off compare
    ANSEL=0x40;                     //RE1 AS AD INPUT 
    
    TRISB=0b01000000;
    TRISC=0;
    TRISD=0x0;            //01110000    
    TRISE=0;

    RBPU=0;
    WPUB=0x40;
    IOCB6=1;        //RB6电平中断
    RBIE=1;
    PEIE=1;
    GIE=1;
//    RBIF=0;
}
void interrupt isr() 
{
    unsigned char i;
    if((RBIE)&&(RBIF))
    {
        i=PORTB;
        RBIF=0;
        sleep_flag=1;
    }
}
void main()
{
    unsigned char i;
    init_io();
    RD7=1;
    sleep_flag=0;
    while(1)
    {
        scankey();
        if(key==switchkey)fun_switch();
        if(sleep_flag==1)
        {
            RD7=0;        //背光
            RD3=0;        //音频板电源    
            sleep_flag=0;
            i=RB6;
            asm("sleep"); 
            init_io();
            sleep_flag=0;
            RD7=1;
            RD3=1;        //音频板电源    
        }
     }
}

各位帮我看看,问题到底出在哪里?
沙发
lcz01|  楼主 | 2007-1-28 10:37 | 只看该作者

有遇到问题了

我原来用作唤醒的按键是RB6与RD1交叉的,现在把RB6与地通过按键连接,是可以唤醒了,但是唤醒接着 就休眠了,明白问题出在io口的电平不匹配,RBIF又被置一了,可是怎么消除这种现象呢?

使用特权

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

本版积分规则

5

主题

14

帖子

1

粉丝