標題: 以下程序請幫忙解惑,執行的邏輯關系不明白啊 不勝感激~拜謝 [打印本頁]
作者: 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啪成人一区二区
|
在线观看视频你懂得
|
亚洲一区二区三区在线
|
成人亚洲精品久久久久软件
|
日韩在线第一
|