这个太简单了吧,记住写程序定时器要一直跑,建立一个时基,像个手表的时间一样要一直跑,即有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; |
|
来自: lixinhecom > 《按键处理》