0

我们已经成功地让 PIC 进入睡眠状态,但我们也想使用我们这边的外部中断来唤醒它。但是,PIC 正在无限循环中,并且正在自行唤醒。我们如何解决这个问题?代码如下:

#include<p18f2550.h>
#include<delays.h>

void main()
{

    TRISB = 0x20;
    TRISA = 0x00;
    TRISC = 0x00;

    INTCONbits.GIE = 1;
    INTCONbits.RBIE = 1;

    while(1)       
    {
        PORTA=0xff;
        Delay10KTCYx(500);

        PORTA=0x00;
        Delay10KTCYx(500);

        PORTA=0xff;
        Delay10KTCYx(500);

        PORTA=0x00;
        Delay10KTCYx(500);

        PORTA=0xff;
        Delay10KTCYx(500);

        _asm
        sleep
        _endasm
     }
}

#pragma interrupt ISR
void ISR(void)
{   
    if (INTCONbits.RBIF == 1)
    {
        if(PORTBbits.RB5 == 1)
           PORTA = 0x00;

    }
    INTCONbits.RBIF = 0;
}
4

0 回答 0