我们已经成功地让 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;
}