2个回答
展开全部
这个太简单了吧,记住写程序定时器要一直跑,建立一个时基,像个手表的时间一样要一乎指直跑,即有time_125us,time_1ms,time_100ms,time_1s,time_1min,time_1hour等时间变量建立时基一直走。其它程序可以分时扫描也可以轮流扫描,不能停留死等,像电脑里的程序改逗一样表面看起来各个程序是一直运行的,即各个程序中不能有delay_1ms之类的函数,如果要定时应该申请一个变量在时基里处理,如等待2s可以这么写
if(step==0){ time=2,time_100ms=0,step=1;}
if((step==1)&&(time==0)){//2s到
//等待2s后要执行的代码
}
在时基时每1s把time减1,减到0为止即if(time)time--;
对按键的写法一般用采集的方法如按键后IO为低
if(!IO){ //低电平,有按键
key_time++;
if((key_time==100)&&(!key_flag)){ //已经赋值了就不再赋值了
key_flag=1;
key_flag_bak=1;
}
else{ //无按键
key_time=0;
key_flag_bak=0;
}
if(key_flag&&(!key_flag_bak)){ //有岁歼配按键并松开,即松开响应
time=2; //亮2s
key_flag=0;//把键值清0
}
if(time){
LED_ON;//灯亮
}
else LED_OFF;
if(step==0){ time=2,time_100ms=0,step=1;}
if((step==1)&&(time==0)){//2s到
//等待2s后要执行的代码
}
在时基时每1s把time减1,减到0为止即if(time)time--;
对按键的写法一般用采集的方法如按键后IO为低
if(!IO){ //低电平,有按键
key_time++;
if((key_time==100)&&(!key_flag)){ //已经赋值了就不再赋值了
key_flag=1;
key_flag_bak=1;
}
else{ //无按键
key_time=0;
key_flag_bak=0;
}
if(key_flag&&(!key_flag_bak)){ //有岁歼配按键并松开,即松开响应
time=2; //亮2s
key_flag=0;//把键值清0
}
if(time){
LED_ON;//灯亮
}
else LED_OFF;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询