static bit bdata auto_flag=0;
void INT0_ISR(void) interrupt 0 using 0
{
EA=0;
auto_flag=!auto_flag;
DOWN=0;
UP=0;
if(auto_flag==1)
{
up_flag=!up_flag;
down_flag=!down_flag;
autodriction_flag=!autodriction_flag;
if(autodriction_flag==1)
{
DOWN=0;
UP=1;
}
if(autodriction_flag==0)
{
UP=0;
DOWN=1;
}
}
else
{
UP=0;
DOWN=0;
}
EA=1;
return;
}
事实上我的程序的思想是这样的:按一个键来触发中断,(不论初始状态)按第一次UP=1,down=0,第二次UP=0,down=0,第三次UP=0,down=1。第四次UP=0,down=0,第五次UP=1,down=0,以此类推,不应该有观察不到的呀,我的UP和DOWN确实接的灯来看现象的,我现在在ELSE内的断点,发现每按动一次进的中断直接到ELSE内,这样我不明白,应该有间隔一次它不会跳进去的呀,可是单步却又正常,真是复了一句话实践得到真理,可这真理却不是我需要的,见鬼!!!
还有没有其他的实现方法,大侠支招