因为key_statue原来等于0,,按键刚按下时,进入外部中断,不满足条件,LED不会改变,当再次按下,定时器使按键标识置1,灯变化,注意程序时序问题。
有四年经验的高手,小弟不惨和哦,哈哈
if(key_statue==1)
{
key_statue=0;
led=~led;
}
你把这段代码写到主循环中,不能放到外中断中,这样就正常了,另外,把定时器的中断改成我给你的样子,要是不正常你找我!
void t0() interrupt 1 //1ms 用于按键去抖动。
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
if(key == 0)
{
key_num++;
if(key_num>=15)
{
key_num = 15;
key_statue=1;
}
}
else
{
key_num = 0;
}
}