PIC18F2550睡眠与醒来
我们已经成功地使图片进入睡眠状态,但我们也希望使用我们这边的外部中断来唤醒它。然而,PIC是在一个无限循环中运行的,并且正在唤醒自己。我们如何解决这个问题?代码如下:PIC18F2550睡眠与醒来,c,pic,C,Pic,我们已经成功地使图片进入睡眠状态,但我们也希望使用我们这边的外部中断来唤醒它。然而,PIC是在一个无限循环中运行的,并且正在唤醒自己。我们如何解决这个问题?代码如下: #include<p18f2550.h> #include<delays.h> void main() { TRISB = 0x20; TRISA = 0x00; TRISC = 0x00; INTCONbits.GIE = 1; INTCONbits.RBIE
#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;
}
#包括
#包括
void main()
{
TRISB=0x20;
TRISA=0x00;
TRISC=0x00;
INTCONbits.GIE=1;
INTCONbits.RBIE=1;
而(1)
{
PORTA=0xff;
延迟10ktcyx(500);
PORTA=0x00;
延迟10ktcyx(500);
PORTA=0xff;
延迟10ktcyx(500);
PORTA=0x00;
延迟10ktcyx(500);
PORTA=0xff;
延迟10ktcyx(500);
_asm
睡觉
_收尾
}
}
#pragma中断
无效ISR(无效)
{
if(INTCONbits.RBIF==1)
{
if(PORTBbits.RB5==1)
PORTA=0x00;
}
INTCONbits.RBIF=0;
}
@navinika添加更多相关标签,您可能会得到任何帮助您是否禁用了看门狗计时器?否则,看门狗中断会将其从睡眠中唤醒。您的配置位是如何设置的?您可能需要禁用所有中断,只有少数中断除外。