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

標題: 以下程序請幫忙解惑,執行的邏輯關系不明白啊 不勝感激~拜謝 [打印本頁]

作者: bai850107    時間: 2017-11-10 22:32
標題: 以下程序請幫忙解惑,執行的邏輯關系不明白啊 不勝感激~拜謝
sbit key4=P3^7;//key4是按鍵,按下S4鍵一次,利用定時器TO功能使數碼管數值開始自動每秒加1,再次按下S4鍵,數值停止加1,保持顯示原數
那么下面的函數是怎么執行的呢。
if(key4==0)//檢測按鍵
        {
                delayms(10);//按鍵消抖
                if(key4==0)
                {
                        while(!key4);//不明白while在這個地方的用意,當key4=0時,while(!key4)為真,反之?
                        TR0=~TR0;//啟動或停止定時器0  這個地方和key4按鍵有關系嗎?為什么不直接是當按鍵按下,TR0=1;當松開按鍵key4 TR0=0;
                }
        }
}
程序執行的邏輯關系不明白啊,請大神解惑,謝謝


作者: wulin    時間: 2017-11-11 10:27
                while(!key4);//程序在此死循環,等待按鍵抬起
                TR0=~TR0;//按鍵抬起后才能執行開/關定時器
作者: 魯翔成    時間: 2017-11-11 10:53
while(!key4);相當于while(key4==0);也就是按下key4后停在這里直到松開后才執行TR0=~TR0;
作者: xbook_ben    時間: 2017-11-11 14:55
while(!key4);的重點是while后面的“;”(分號),這樣意思就明顯了,就是說,只要key4=0,就一直在這干耗著什么都不做,而key4=0就剛好是按鍵按下了。所以這條語句翻譯過來就是:只要按鍵按下去了我就干耗著什么都不做;
接下來一條語句是TR0=~TR0;,在這里要理解程序的順序執行概念,這種順序執行可以拿生活中的吃飯為例,這個順序是:做飯——吃飯——洗碗。回到剛才的程序,在while(!key4);里說了,只要按鍵不放開程序就一直干耗著,而當按鍵釋放以后,跳出while循環,執行TR0=~TR0;語句把定時器關了。
我們人從直觀上看,是先按了按鍵,然后數碼管的數字停住了。這就達到了我么你說的用按鍵控制數碼管的目的。
另外,對于你說的按下和松開執行的問題,可以根據需要設計,比如我們常見的按鍵短按(按下就很快松開),我們一般設計為松開后執行,而長按(按下過一段時間)就設計為按下執行(只要時間達到長按的時間,就執行)。
作者: 南喬    時間: 2017-11-13 13:41
while(!key4);//死循環,等待按鍵抬起
TR0=~TR0;//按鍵抬起后才能執行開/關定時器
這樣是確保對按鍵只做一次處理
作者: 老書蟲-lgs    時間: 2017-11-14 10:33
當key4仍然為0的時候,會一直執行while;只有當key4




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 天天干狠狠操 | avav在线看 | 毛片一级黄色 | 国产精品夜间视频香蕉 | 国产视频中文字幕 | 中文字幕国产 | 嫩草视频在线免费观看 | 国产在线精品一区二区 | 欧美一区二区在线播放 | 久久久久国产视频 | 久久国产精品一区二区三区 | 亚洲精品中文字幕在线 | av在线免费网| 亚洲视频免费观看 | 黄色毛片一级 | 丝袜一区二区三区 | 亚洲精品一区中文字幕乱码 | 国产精品99久久久久久宅男 | 欧美亚洲国语精品一区二区 | 网黄在线 | 狠狠躁夜夜躁人人爽天天高潮 | 中文字幕免费在线 | 精品无码久久久久国产 | 久久久综合久久 | 国产91丝袜在线播放 | 国产欧美精品区一区二区三区 | 亚洲午夜精品一区二区三区他趣 | 国产精品自产拍 | 中文字幕在线观看第一页 | 91在线影院 | 国产激情网 | 日韩国产一区二区三区 | 一区二区免费 | 久久午夜电影 | 人妖无码 | 久久亚洲经典 | 亚洲www啪成人一区二区 | 在线观看视频你懂得 | 亚洲一区二区三区在线 | 成人亚洲精品久久久久软件 | 日韩在线第一 |