题目如下,用两个按键控制流水灯,按键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)吧,不能实现循环,用了吧不能检测及时退出,因为有延时函数,按下另一个键的时候经常检测不到。请问大家这个程序正确的思路应该怎么编写啊?大家给个思路就好,我想应该很简单吧这个程序。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你好,谢谢你的指点,请问如果我用中断查询按键2,一旦按键2被按下即转入中断执行led闪烁的语句,但是要led不停闪烁也需要while(1)语句,此时再按下按键1并不能被检测到呢。
中断不是有优先级之分吗?用了之后好像两个按键总有一个按键不能响应啊?
首先,中断肯定是有优先之分的,这个要理清。
然后,你按键那里加了while循环肯定就跳不出了。
一周热门 更多>