大佬们写的真厉害,我也写下我的,防止以后忘了
while(1)
{
if(KEY==0){
delay(5); //消抖
if(KEY==0){
TMR_Start(TMR1); //开启timer1
while(KEY==0){ //while里面做判断和等待,按下2秒灯亮,不是松手后亮
if(counter >= 2000 && counter < 2100){//设定两秒翻转,时间间隔小一点
LED=~LED;
}
}
TMR_Stop(TMR1); //关闭定时器1
}
}
if(KEY==1){
counter=0; //定时器计数清零得在按键松开之后,要是在上个if结束清零,按键一直不松手,灯会2s亮灭2s亮灭2s亮灭
}
}
定时器就定个一毫秒的中断,counter在中断加加
void Timer1_IRQHandler(void) interrupt TMR1_VECTOR
{
TH1 =(65536-2000)>>8 ;
TL1 = 65536-2000; // 2000*0.5us = 1000us=1ms,递增计数
counter++;
}