前面的就省略。。主要是下面这部分,搞不清哪里出问题了,跳出频闪循环可恢复正常的模式切换
unsigned int key=0,mode=0;
mode=EE_READ();
while(1)
{
if(key==0)
{
if(!PORTA0)
{
delay(1);
if(!PORTA0)
{
key=1;
mode++;
if(mode>2) mode=0;
EE_ERASE();
EE_WRITE(mode);
}
}
}
else
{
if(PORTA0)
{
delay(1);
if(PORTA0) key=0;
}
}
if(mode==0) PORTA=0X0E;
else if(mode==1) PORTA=0X08;
else
{
if(TMR0>243)
{
TMR0=0;
PORTA=~PORTA;
}
}
if(PORTA0&&!mode)
{
delay(1);
if(PORTA0)
{
IOCIE=1;
IOCAN0=1;
SLEEP();
NOP();
IOCIE=0;
}
}
}
}
|