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

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

[复制链接]
  • TA的每日心情
    慵懒
    7 天前
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    20

    主题

    53

    回帖

    348

    积分

    中级会员

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

    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 89 天

    [LV.6]常住居民II

    13

    主题

    335

    回帖

    776

    积分

    荣誉版主

    热心市民

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

    使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 47 天

    [LV.5]常住居民I

    2

    主题

    35

    回帖

    292

    积分

    中级会员

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 99 天

    [LV.6]常住居民II

    9

    主题

    557

    回帖

    827

    积分

    高级会员

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

    点评

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2 小时前
  • 签到天数: 69 天

    [LV.6]常住居民II

    4

    主题

    414

    回帖

    1126

    积分

    金牌会员

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

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:49
  • 签到天数: 159 天

    [LV.7]常住居民III

    25

    主题

    733

    回帖

    1833

    积分

    金牌会员

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

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 12:21
  • 签到天数: 47 天

    [LV.5]常住居民I

    3

    主题

    56

    回帖

    357

    积分

    中级会员

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

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 12:21
  • 签到天数: 47 天

    [LV.5]常住居民I

    3

    主题

    56

    回帖

    357

    积分

    中级会员

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

    点评

    感谢  发表于 7 天前
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-6 10:24 , Processed in 0.063165 second(s), 57 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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