Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PIC18F2550睡眠与醒来_C_Pic - Fatal编程技术网

PIC18F2550睡眠与醒来

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

我们已经成功地使图片进入睡眠状态,但我们也希望使用我们这边的外部中断来唤醒它。然而,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;
}
#包括
#包括
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添加更多相关标签,您可能会得到任何帮助您是否禁用了看门狗计时器?否则,看门狗中断会将其从睡眠中唤醒。您的配置位是如何设置的?您可能需要禁用所有中断,只有少数中断除外。