下面看任务三:
先把框架搭起来:
加多一个任务,500ms打印一次:“AI8051U”
上面没有用定时器中断,而是用延时函数,应该有问题
按钮按下,是不是就会直在执行这行:
这个语句while( P32 == 0):
500ms打印一次的这个任务就不执行啦
我们要让这个按键能够在这个任务调度的时候,他不会死在这个while里面
那么这种情况我们怎么去实现,是用操作系统么?不是的
检测到按键连续按下,按键计数变量+1,只要松开一下,计致清0 过50ms的时候判定为按下。
这个方法很巧妙!就比如说我每隔10毫秒去判断一下,如果说按键按下,那么这个变量加1;
只要松开一下计数就会清零。计数累积到50毫秒的时候就可以判定为按下,或者是20毫秒
假设他是10毫秒执行一次:
可以这样消抖50ms:
只要if( Key_Vol==5)成立,就是按键按下!
程序改成这样:
效果就不同:
2个任务:
1 1秒打印一下:
2 判断按键按下,如果按下就num++
从而改变LED的显示
先把新增加变量的定义补全:
这很准,是1秒打印一次: