找回密码
 立即注册
查看: 425|回复: 9

想问大家一个程序冲突的问题

[复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2025-04-18 11:38:43
已绑定手机

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-4-22 16:01:28 | 显示全部楼层 |阅读模式
这个问题不太好描述,假如现在有两个按钮,同时控制一个led,按钮按下led点亮1S,按钮松开熄灭1S,按钮通过一个字节中的某一位控制,并且只能使用一位,遇到的问题是如果led点亮了,再未熄灭时按下第二个,理想状态是亮一秒关一秒亮一秒关一秒,但是现实是只执行一次(两个点亮熄灭指令重叠),如果更快速的按几次更加异常(想使字节中的位是1010变化,现在是1100或者111000)说的可能不是很准确,评论区再补充

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-4-22 16:25:06 | 显示全部楼层
两个按键的逻辑问题 无非就是 与 或 非 三种情况,如果叠加时序的话,就是阻塞或者覆盖机制,总得有个处理冲突的机制。如果不希望叠加,就加个判断灯状态的条件,不满足条件就延后执行或者不执行,都是一种处理思维。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2024-4-22 17:29:05 | 显示全部楼层
本帖最后由 Lkck8210 于 2024-4-22 17:31 编辑

你单一按键的逻辑也有点奇怪
按钮按下led点亮1S:本来是熄灭的,按着不放点亮1S,然后保持熄灭?
按钮松开熄灭1S:熄灭1S,然后保持点亮?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:452
  • 最近打卡:2025-05-01 06:20:50
已绑定手机

13

主题

1257

回帖

2971

积分

金牌会员

积分
2971
发表于 2024-4-22 17:57:34 | 显示全部楼层
这点逻辑,只要你能说清楚,单片机实现起来并不难。按键检测用定时中断扫描,不能用delay阻塞式检测。

点评

同意21cn的观点,无论多么复杂的逻辑,你只要能用自然语言表达清楚,计算机就能够准确表达你的意思,逻辑处理是计算机的强项。  发表于 2024-4-23 10:20
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-05-01 03:26:07

16

主题

702

回帖

2470

积分

金牌会员

积分
2470
发表于 2024-4-23 09:05:47 | 显示全部楼层
再仔细理理程序的流程,再按照流程写出来应该就不会冲突了,要注意楼上提的delay延时函数,尽量用定时器中断+计数器的方式
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:518
  • 最近打卡:2025-05-01 05:52:49
已绑定手机

46

主题

1694

回帖

2540

积分

金牌会员

积分
2540
发表于 2024-4-23 10:08:26 | 显示全部楼层
估计就卡在delay函数里面了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

积分
2206
发表于 2024-4-23 10:44:46 | 显示全部楼层
楼主问题描述不太清楚,我的理解应该是两个按键A和B,A键只管亮灯1s,B键只管灭灯1s,无按键按下时,灯的状态由最后一次动作按键决定,如果最后一次A键动作,灯稳定状态是灭,反之是亮.
按键动作快,LED慢,亮灭都是1s控制,想要快速按键又不能打断LED当前状态,只能做个FIFO的按键状态缓存,记录两个按键的动作时序,然后根据这个缓存来控制灯的亮灭,缓存足够大时候,就不会漏掉按键控制.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

积分
2206
发表于 2024-4-23 10:44:56 | 显示全部楼层
楼主问题描述不太清楚,我的理解应该是两个按键A和B,A键只管亮灯1s,B键只管灭灯1s,无按键按下时,灯的状态由最后一次动作按键决定,如果最后一次A键动作,灯稳定状态是灭,反之是亮.
按键动作快,LED慢,亮灭都是1s控制,想要快速按键又不能打断LED当前状态,只能做个FIFO的按键状态缓存,记录两个按键的动作时序,然后根据这个缓存来控制灯的亮灭,缓存足够大时候,就不会漏掉按键控制.

点评

感谢  发表于 2024-4-29 14:04
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:26 , Processed in 0.147373 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表