标题: 51单片机按键控制led闪烁模式,为什么按键无法工作 [打印本页]

作者: bbbaddd    时间: 2024-6-24 17:27
标题: 51单片机按键控制led闪烁模式,为什么按键无法工作
按键控制led闪烁模式,为什么按键无法工作,led不闪烁只亮时可以切换亮的模式,加上闪烁功能后,按键不能切换
作者: LaoYuTou    时间: 2024-6-24 17:54
估计又是延时实现的闪烁吧,有延时的主循环对按键检测有影响。
作者: xiaobendan001    时间: 2024-6-24 17:55
问了个寂寞啊,起码要贴个代码看看吧
作者: lkc8210    时间: 2024-6-24 18:56
以下是一个流水灯的两种写法
看看如何实现“非阻塞延时”
  1. void main()
  2. {
  3.         uchar i;
  4.         while(1)
  5.         {
  6.                 for(i=0;i<8;i++)
  7.                 {
  8.                         P2 = ~(0x01<<i);
  9.                         delay(200);
  10.                 }
  11.         }
  12. }

  13. void main()
  14. {
  15.         uchar i = 0;
  16.         uint DelayCnt = 2000;
  17.         while(1)
  18.         {
  19.                 DelayCnt++;
  20.                 if(DelayCnt>=2000)
  21.                 {
  22.                         DelayCnt = 0;
  23.                         P2 = ~(0x01<<i);
  24.                         i++;
  25.                         if(i>=8)i=0;
  26.                 }
  27.         }
  28. }
复制代码

作者: cy009    时间: 2024-6-24 19:11
闪烁时是不是进入死循环了?
作者: yzwzfyz    时间: 2024-6-25 12:56
设法不用DELAY()
作者: 明日之星8    时间: 2024-6-26 21:36
DELAY()延时是“阻塞式延时”,要改成定时器延时,
在定时中断内实现LED闪烁就好了。
作者: 17337161031    时间: 2024-7-2 09:11
延时太多的话  会检车不到按键按下  程序一直在执行延时动作
作者: 1481509156    时间: 2024-7-10 10:34
实际分为两种工作状态,一种LED闪烁,一种LED亮。可以通过定时器扫描按键,避免LED闪烁占用主程序时,按键按下没有反应。
作者: banming    时间: 2024-7-11 15:02
贴个代码
作者: AGOU    时间: 2024-7-11 23:45
代码都没有分析个寂寞
作者: xianfajushi    时间: 2024-7-12 10:15
lkc8210 发表于 2024-6-24 18:56
以下是一个流水灯的两种写法
看看如何实现“非阻塞延时”

对的,这就是非阻塞延时的妙用,也是高级的应用.
初学阶段用阻塞延时理解实现原理,实际项目用非阻塞,提升产品品质,也就是开发者的品质.




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1