算起学单片机也有1年了,关于按键检测的思路一直是:当判断为低后,软件延时40ms之后再检测如
果确实为低则确定本次按键有效,之后进行相关处理,没有松手检测。一直没觉得这种方法有啥问题
,今天无意中看到以前的一个帖子说这种方法白白占用CPU浪费资源,可以用定时器,首先设定一个
固定的时基比方说4ms,时间到后再检测,如果电平不变则相关的变量加1,否则清零。延时完成后,
给一个标志位,主程序检测这个标志位,满足条件后则处理有关程序。可我想问的是:如果不考虑使
用操作系统,用传统的大循环方式又考虑到实时性,这个延时程序的思路是否要变为这样:当判断为
低电平后,启动定时器,这时程序检测定时器给的标志位是否置位,是的话才处理有关程序,当然最
开始肯定没有置位,所以跳过这段程序,去处理别的程序,如果别的程序不是太耗时的话,当再次检
测这个标志位时,如果置位的话,处理键值。如果引入操作系统,需要把按键检测作为一个单独的小
任务,同样当判断为低电平后,可以用相关函数把这个任务挂起,释放CPU,同时紧跟一条接收信号
的指令,这个信号同样是由定时器给的,不知各位高手我的这种思路是否正确,不对的话请指出,我
也是个新手 |