地雷里加判断退出 |
用中断或延时里面判断 |
我觉得这个最好用中断,如果硬件上不支持中断,那就改用状态机,通过不同的状态切换实现延时,不需要delay函数而实现delay的效果。 |
return是退出子程序用的。退出循环用break; |
这个方法好,想了好久都没写成功,今天终于参考这个写好了,谢谢 |
应该有挺多方法方法实现的,但是要是不想做太大修改的话,可以修改下延时,像 bro0310 兄弟写的,不过可能把附加判断条件放在延时二级循环里实时性应该会相对更高一点~ void Delay(uint del) { uint i, j; for(i=0; i<del; i++) for(j=0; (j<1827)&&KEY1&&KEY2; j++); } |
你像风儿来了 发表于 2018-1-15 17:03 好想法!非常具有开创性 |
参与人数 2 | 黑币 +18 | 收起 理由 |
---|---|---|
![]() | + 8 | 很给力! |
![]() | + 10 | 很给力! |
void Delay(uint cnt) { uint i=0,j=0; for(i=0; (i<cnt)&&KEY1&&KEY2; i++) for(j=0; j<1827; j++) ; } |
本帖最后由 bro0310 于 2018-1-16 20:15 编辑 void delay(uint cnt) { uint i=0,j=0; for (i=0; (i<cnt)&&KEY1&&KEY2; i++) for (j=0; j<1827; j++) ; } |
改写延时函数吧!! |
你把按键检测函数放到中断函数,,,进入中断函数的时间比延时函数短,,,可以试一试 |
改成一个while语句试试,循环结束的条件改成while的 |
办法多多,在延时程序中做文章。 |
每次延时500(或更少),延时完后检测按键,如此循环12次(或不需12次) |
写个专用延时函数,在函数里进行IO判断,如果状态符合,立即退出 |
用单片机中断试试 |
用单片机中断试试 |
在Delay()这个函数最后加上按键检测 |
直接在这个位置使用有条件的for循环延时,否则跳出循环。 |
用外部中断试试 |