YangHY 发表于 2025-12-22 10:50:21

下面看任务三:

YangHY 发表于 2025-12-22 10:54:18

先把框架搭起来:

YangHY 发表于 2025-12-22 10:57:25

加多一个任务,500ms打印一次:“AI8051U”

上面没有用定时器中断,而是用延时函数,应该有问题

YangHY 发表于 2025-12-22 11:04:41

按钮按下,是不是就会直在执行这行:

这个语句while( P32 == 0):

500ms打印一次的这个任务就不执行啦


YangHY 发表于 2025-12-22 11:10:02

我们要让这个按键能够在这个任务调度的时候,他不会死在这个while里面

那么这种情况我们怎么去实现,是用操作系统么?不是的

YangHY 发表于 2025-12-22 11:19:21

检测到按键连续按下,按键计数变量+1,只要松开一下,计致清0 过50ms的时候判定为按下。

这个方法很巧妙!就比如说我每隔10毫秒去判断一下,如果说按键按下,那么这个变量加1;

只要松开一下计数就会清零。计数累积到50毫秒的时候就可以判定为按下,或者是20毫秒

假设他是10毫秒执行一次:



YangHY 发表于 2025-12-22 11:22:41

可以这样消抖50ms:

只要if( Key_Vol==5)成立,就是按键按下!

YangHY 发表于 2025-12-22 11:24:13

程序改成这样:

效果就不同:


YangHY 发表于 2025-12-22 11:26:57

2个任务:

1 1秒打印一下:
2 判断按键按下,如果按下就num++
从而改变LED的显示


先把新增加变量的定义补全:



YangHY 发表于 2025-12-22 11:31:53

这很准,是1秒打印一次:
页: 17 18 19 20 21 22 23 24 25 26 [27] 28 29 30 31 32 33 34 35 36
查看完整版本: 第一课 序言《AI8051U的特点》