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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11819|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费高清av | 一级片子| 欧美一级一 | www日本在线 | 国产jizz女人多喷水99 | 亚洲免费片 | 色天堂视频 | 中文字幕在线第一页 | 亚洲人精品午夜 | 亚洲综合二区 | 欧美日韩在线一区二区三区 | 中文字幕第九页 | 午夜影视大全 | 精品国产高清一区二区三区 | 伊人性伊人情综合网 | 日韩淫片免费看 | 午夜精品久久久久久久久久久久 | 视频在线观看亚洲 | 国产成人精品午夜视频免费 | 狠狠躁躁夜夜躁波多野结依 | 日韩国产中文字幕 | 久久6视频 | 91精品久久久久久久久 | 亚洲国产欧美日韩 | 4hu最新网址| 自拍偷拍中文字幕 | 欧美亚洲国产日韩 | 成人自拍视频网站 | 一区二区三区免费在线观看 | 精品影院| 国产91成人 | 97起碰| 久久国产精品免费 | 成人免费网站 | 日韩视频在线免费观看 | 99国产精品视频免费观看一公开 | 一区二区三区免费在线观看 | www.亚洲一区二区 | 欧美日韩国产在线观看 | 日本久久黄色 | 国产福利在线 |