找回密码
 立即注册
查看: 760|回复: 16

关于延时程序的问题

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

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-3-21 13:09:54 | 显示全部楼层 |阅读模式

截图202403211305432265.jpg

使用8h8k64u主控的usb手柄,只有一个按钮,现在想实现按钮按下,虚拟按钮闪烁,也就是亮一下之后延时一段时间灭,此时按钮并没有松开,当按钮松开,虚拟按钮又会闪烁一次,但是加了延时之后usb识别会有延迟并且按钮没反应

截图202403211305402303.jpg
回复

使用道具 举报 送花

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

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-3-21 13:11:45 | 显示全部楼层
延时程序是正常工作的,加在keyPadData[0] |= 0x02;        之前实现按钮按下延时亮,加在后面实现按钮松开延时灭,唯独加在中键实现自动亮灭的时候程序不正常,有大佬知道怎么回事吗
回复 支持 反对

使用道具 举报 送花

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

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-3-21 13:16:44 | 显示全部楼层
这是有问题的代码 截图202403211316267971.jpg
回复 支持 反对

使用道具 举报 送花

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

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-3-21 15:21:45 | 显示全部楼层
爱吃*** 发表于 2024-3-21 13:16
这是有问题的代码

Delay500ms 对程序的运行会产生比较明显的影响。
建议keyPadData[0] |= 0x01;后面加个标志位,通过定时器判断标志位,计时500ms后执行keyPadData[0] &= ~0x01;指令。

点评

好的感谢  发表于 2024-3-22 17:43
回复 支持 反对

使用道具 举报 送花

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

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-3-22 13:30:12 | 显示全部楼层
乘风*** 发表于 2024-3-21 15:21
Delay500ms 对程序的运行会产生比较明显的影响。
建议keyPadData[0] |= 0x01;后面加个标志位,通过定时器 ...

有参考代码吗大哥,研究半天定时器好像不工作,初始化了已经
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-3-22 14:52:53 | 显示全部楼层
STC-ISP里面有
截图202403221452337893.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-3-22 14:53:15 | 显示全部楼层
也有各种例程
回复 支持 反对

使用道具 举报 送花

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

47

主题

96

回帖

355

积分

中级会员

积分
355
发表于 2024-3-22 15:19:54 | 显示全部楼层
我用的就是isp里面的,这是代码, flag1 = 1;  的时候不会执行keyPadData[0] &= ~0x01;
截图202403221519045260.jpg
回复 支持 反对

使用道具 举报 送花

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

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-3-22 15:25:55 | 显示全部楼层
爱吃*** 发表于 2024-3-22 13:30
有参考代码吗大哥,研究半天定时器好像不工作,初始化了已经

例如,需要延时位置加标志位与延时时间:
  1. keyPadData[0] |= 0x01;
  2. DelayFlag = 1;
  3. DelayCnt = 50;    //50 * 10ms = 500ms
复制代码

然后在10ms中断定时器函数里面进行计时:
  1. if(DelayFlag)
  2. {
  3.     DelayCnt--;
  4.     if(DelayCnt == 0)
  5.     {
  6.         DelayFlag = 0;
  7.         keyPadData[0] &= ~0x01;
  8.     }
  9. }
复制代码

点评

感谢感谢  发表于 2024-3-22 17:42
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-3-22 15:31:52 | 显示全部楼层
你这个逻辑有点问题吧
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 18:07 , Processed in 0.136098 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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