一道简单的单片机编程

2019-07-15 20:34发布

题目如下,用两个按键控制流水灯,按键1按下时流水灯左右流水(延时3s),按键2按下时流水灯不停闪烁(间隔3s)。我想到的程序大概是这样,
switch(key)   case(key1):while(1)  { led=_crol_(led,1);  delay(3s);  if(key2);  break; };   case( key2 ):while(1):{led=0xff;  delay(3s); led=~led;  delay(3s); if (key1); break; }......
当然程序这么写是不行的,我的问题主要是不用while(1)吧,不能实现循环,用了吧不能检测及时退出,因为有延时函数,按下另一个键的时候经常检测不到。请问大家这个程序正确的思路应该怎么编写啊?大家给个思路就好,我想应该很简单吧这个程序。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
单兵行动
1楼-- · 2019-07-16 14:08
jinchizhe 发表于 2014-3-21 08:58
中断不是有优先级之分吗?用了之后好像两个按键总有一个按键不能响应啊?
  ...

switch(key)   case(key1):while(key2!=0)  { led=_crol_(led,1);  }   case( key2 ):while(key1!=0):{led=0xff;  delay(3s); led=~led;   },刚想到的,类似于互锁。。。。。
郎中令2000年
2楼-- · 2019-07-16 15:41
看看~~~~~~~~~~~~~~~
jingyukk
3楼-- · 2019-07-16 19:28
楼主多看看程序,别人怎么显得,慢慢就找到感觉了,其实就那么些东西,肯下功夫就能学在手
ntmusic
4楼-- · 2019-07-16 21:36
 精彩回答 2  元偷偷看……
Gavin_OJL
5楼-- · 2019-07-17 02:16
while(1)
{
switch(key)   case(key1):
                         case(key2):
}
KISSDB
6楼-- · 2019-07-17 02:59
你可以看看 吴坚鸿 的程序,他的按键处理写的挺好的,http://bbs.elecfans.com/forum.ph ... 9&highlight=c51

一周热门 更多>