久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12192|回復: 21
打印 上一主題 下一主題
收起左側

關于if語句帶延時的 立即跳出循環

  [復制鏈接]
跳轉到指定樓層
樓主
20黑幣

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

如圖

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

使用道具 舉報

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

使用道具 舉報

板凳
ID:192284 發表于 2018-1-15 16:36 | 只看該作者
這種延時是阻塞延時,當執行這個延時函數時,CPU一直在這執行延時函數中自增語句,不會去執行其他操作,所以即便在你兩個KEY的狀態發生改變時,CPU也不知道,因為它忙著執行延時呢,所以這樣寫實現不了,可以嘗試將判斷KEY狀態的語句放到中斷函數中,不過這樣估計你硬件連接就要改改了,要將KEY連接到51單片機的中斷引腳上。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:213173 發表于 2018-1-15 16:44 | 只看該作者
直接在這個位置使用有條件的for循環延時,否則跳出循環。
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

8#
ID:57717 發表于 2018-1-15 17:21 | 只看該作者
寫個專用延時函數,在函數里進行IO判斷,如果狀態符合,立即退出
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

11#
ID:235676 發表于 2018-1-16 09:53 | 只看該作者
改成一個while語句試試,循環結束的條件改成while的
回復

使用道具 舉報

12#
ID:276559 發表于 2018-1-16 14:33 | 只看該作者
你把按鍵檢測函數放到中斷函數,,,進入中斷函數的時間比延時函數短,,,可以試一試
回復

使用道具 舉報

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

使用道具 舉報

14#
ID:230118 發表于 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++)
            ;
}
回復

使用道具 舉報

15#
ID:230118 發表于 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++)
         ;
}
回復

使用道具 舉報

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

好想法!非常具有開創性

評分

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

查看全部評分

回復

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

21#
ID:387641 發表于 2020-11-6 18:44 來自觸屏版 | 只看該作者
用中斷或延時里面判斷
回復

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区三区在线观看免费 | 在线观看免费福利 | 精品一区二区三区在线视频 | 一区二区三区在线 | 国产成人一区二区 | 久久久免费在线观看 | 日本在线视频一区二区 | 亚洲精品一区二区三区在线 | 在线观看www | 黄网站涩免费蜜桃网站 | 欧美日韩久久精品 | 精品国产乱码一区二区三区 | 中文字幕亚洲专区 | 黄色骚片 | 一区二区三区高清 | 日韩欧美三级电影在线观看 | 亚洲精品国产成人 | 久久精品欧美一区二区三区不卡 | 激情婷婷成人 | 成人精品一区二区 | 亚洲综合视频 | 羞羞视频免费在线观看 | 国产精品96久久久久久 | 久久综合伊人 | 亚洲日产精品 | 欧美一区二区三区四区视频 | 99热这里只有精品8 激情毛片 | a爱视频| 亚洲字幕在线观看 | 亚洲一区二区成人 | 日本不卡一区二区三区 | 久久精品国产精品青草 | 性生生活大片免费看视频 | 亚洲欧美日韩电影 | 国产精品美女久久久 | 亚洲精品久久久久久一区二区 | 欧美日韩视频网站 | 国产 日韩 欧美 制服 另类 | 国产欧美一区二区三区在线看 | 欧美精品一区二区三区在线播放 | 中文字幕在线看人 |