找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 11826|回復(fù): 21
打印 上一主題 下一主題
收起左側(cè)

關(guān)于if語句帶延時(shí)的 立即跳出循環(huán)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
20黑幣

QQ圖片20180115101007_看圖王.png (56.4 KB, 下載次數(shù): 97)

如圖

如圖
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:265458 發(fā)表于 2018-1-15 15:41 | 只看該作者
用外部中斷試試
回復(fù)

使用道具 舉報(bào)

板凳
ID:192284 發(fā)表于 2018-1-15 16:36 | 只看該作者
這種延時(shí)是阻塞延時(shí),當(dāng)執(zhí)行這個(gè)延時(shí)函數(shù)時(shí),CPU一直在這執(zhí)行延時(shí)函數(shù)中自增語句,不會(huì)去執(zhí)行其他操作,所以即便在你兩個(gè)KEY的狀態(tài)發(fā)生改變時(shí),CPU也不知道,因?yàn)樗χ鴪?zhí)行延時(shí)呢,所以這樣寫實(shí)現(xiàn)不了,可以嘗試將判斷KEY狀態(tài)的語句放到中斷函數(shù)中,不過這樣估計(jì)你硬件連接就要改改了,要將KEY連接到51單片機(jī)的中斷引腳上。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2018-1-15 16:44 | 只看該作者
直接在這個(gè)位置使用有條件的for循環(huán)延時(shí),否則跳出循環(huán)。
回復(fù)

使用道具 舉報(bào)

5#
ID:148552 發(fā)表于 2018-1-15 17:03 | 只看該作者
在Delay()這個(gè)函數(shù)最后加上按鍵檢測(cè)
回復(fù)

使用道具 舉報(bào)

6#
ID:249463 發(fā)表于 2018-1-15 17:09 | 只看該作者
用單片機(jī)中斷試試
回復(fù)

使用道具 舉報(bào)

7#
ID:249463 發(fā)表于 2018-1-15 17:10 | 只看該作者
用單片機(jī)中斷試試
回復(fù)

使用道具 舉報(bào)

8#
ID:57717 發(fā)表于 2018-1-15 17:21 | 只看該作者
寫個(gè)專用延時(shí)函數(shù),在函數(shù)里進(jìn)行IO判斷,如果狀態(tài)符合,立即退出
回復(fù)

使用道具 舉報(bào)

9#
ID:7485 發(fā)表于 2018-1-15 17:57 | 只看該作者
每次延時(shí)500(或更少),延時(shí)完后檢測(cè)按鍵,如此循環(huán)12次(或不需12次)
回復(fù)

使用道具 舉報(bào)

10#
ID:123289 發(fā)表于 2018-1-15 20:22 | 只看該作者
辦法多多,在延時(shí)程序中做文章。
回復(fù)

使用道具 舉報(bào)

11#
ID:235676 發(fā)表于 2018-1-16 09:53 | 只看該作者
改成一個(gè)while語句試試,循環(huán)結(jié)束的條件改成while的
回復(fù)

使用道具 舉報(bào)

12#
ID:276559 發(fā)表于 2018-1-16 14:33 | 只看該作者
你把按鍵檢測(cè)函數(shù)放到中斷函數(shù),,,進(jìn)入中斷函數(shù)的時(shí)間比延時(shí)函數(shù)短,,,可以試一試
回復(fù)

使用道具 舉報(bào)

13#
ID:276604 發(fā)表于 2018-1-16 15:57 | 只看該作者
改寫延時(shí)函數(shù)吧!!
回復(fù)

使用道具 舉報(bào)

14#
ID:230118 發(fā)表于 2018-1-16 20:09 | 只看該作者
本帖最后由 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++)
            ;
}
回復(fù)

使用道具 舉報(bào)

15#
ID:230118 發(fā)表于 2018-1-16 20:12 | 只看該作者
void Delay(uint cnt)
{
     uint i=0,j=0;
     for(i=0; (i<cnt)&&KEY1&&KEY2; i++)
         for(j=0; j<1827; j++)
         ;
}
回復(fù)

使用道具 舉報(bào)

16#
ID:472325 發(fā)表于 2019-1-31 15:07 | 只看該作者
你像風(fēng)兒來了 發(fā)表于 2018-1-15 17:03
在Delay()這個(gè)函數(shù)最后加上按鍵檢測(cè)

好想法!非常具有開創(chuàng)性

評(píng)分

參與人數(shù) 2黑幣 +18 收起 理由
sheng7533967 + 8 很給力!
zhengchong60 + 10 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

17#
ID:474552 發(fā)表于 2019-2-1 15:21 | 只看該作者
應(yīng)該有挺多方法方法實(shí)現(xiàn)的,但是要是不想做太大修改的話,可以修改下延時(shí),像 bro0310 兄弟寫的,不過可能把附加判斷條件放在延時(shí)二級(jí)循環(huán)里實(shí)時(shí)性應(yīng)該會(huì)相對(duì)更高一點(diǎn)~

void Delay(uint del)
{
        uint i, j;
        for(i=0; i<del; i++)
                for(j=0; (j<1827)&&KEY1&&KEY2; j++);
}
回復(fù)

使用道具 舉報(bào)

18#
ID:736350 發(fā)表于 2020-11-6 09:44 | 只看該作者
這個(gè)方法好,想了好久都沒寫成功,今天終于參考這個(gè)寫好了,謝謝
回復(fù)

使用道具 舉報(bào)

19#
ID:414556 發(fā)表于 2020-11-6 10:49 | 只看該作者
return是退出子程序用的。退出循環(huán)用break;
回復(fù)

使用道具 舉報(bào)

20#
ID:592183 發(fā)表于 2020-11-6 15:17 | 只看該作者
我覺得這個(gè)最好用中斷,如果硬件上不支持中斷,那就改用狀態(tài)機(jī),通過不同的狀態(tài)切換實(shí)現(xiàn)延時(shí),不需要delay函數(shù)而實(shí)現(xiàn)delay的效果。
回復(fù)

使用道具 舉報(bào)

21#
ID:387641 發(fā)表于 2020-11-6 18:44 來自手機(jī) | 只看該作者
用中斷或延時(shí)里面判斷
回復(fù)

使用道具 舉報(bào)

22#
ID:342822 發(fā)表于 2020-11-6 19:05 | 只看該作者
地雷里加判斷退出
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表