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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

STC單片機(jī)用鍵盤控制二極管亮滅的問題

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年10月06日   【字體:
2010年09月16日

  #include <reg52.h> 

  sbit key1=P3^4; 

  sbit p10=P1^0; 

  void main() 

  { 

  while(1) 

  { 

  p10=1; 

  while(key1!=0); 

  p10=0; 

  } 

  } 

  我的目的是用鍵盤控制一個(gè)二極管的發(fā)光,按下鍵盤上的鍵后二極管發(fā)光,放開后二極管熄滅。用 while(key1!=0); 進(jìn)行判斷的話,程序工作正常:開始二極管熄滅,按下鍵盤上的對(duì)應(yīng)按鍵后二極管被點(diǎn)亮?墒侨绻 if(key1!=0); 進(jìn)行判斷的話,程序就會(huì)異常:二極管開始時(shí)候就亮了,按鍵盤上的鍵也沒有任何反應(yīng)。請(qǐng)問這是怎么回事呢?以前寫一些小程序時(shí)候也是這樣,用if 語句容易出錯(cuò),但是改為while之后就運(yùn)行正常了。請(qǐng)大家?guī)臀医忉屢幌逻@個(gè)問題~謝謝! 

   

   

  while和if的用法樓上還沒有理解。 

  while()判斷括號(hào)內(nèi)的表達(dá)式為1時(shí),程序是不停地在執(zhí)行while內(nèi)部函數(shù),相當(dāng)于停在while語句這,不往下執(zhí)行。當(dāng)為0時(shí)才跳出內(nèi)部函數(shù),繼續(xù)向下執(zhí)行。 

  if()判斷括號(hào)內(nèi)的表達(dá)式為1時(shí),僅執(zhí)行一次內(nèi)部函數(shù)后就跳出if語句向下執(zhí)行。當(dāng)為0時(shí)直接跳出內(nèi)部函數(shù),繼續(xù)向下執(zhí)行。 

  分析你寫的這段程序, 

  p10=1; 

  while(key1!=0); 

  p10=0; 

  雖然現(xiàn)象達(dá)到了你的預(yù)期,但實(shí)際上是在你按下按鍵后,循環(huán)執(zhí)行3條語句。而沒有停在P10=0之后,所以實(shí)際上led是在不停地快速閃爍,而不是常亮。因?yàn)樘炷憧床怀鰜矶选D憧梢栽赑10=0后加個(gè)延時(shí)函數(shù)就能看出來。建議修改一下。 

  p10=1; 

  while(key1!=0) 

  { 

  p10=0; 

  } 

  或者更簡(jiǎn)單一點(diǎn), 

  p10=1; 

  while(key1!=0) //直接去掉分號(hào) 

  p10=0;
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 国产在线观看不卡一区二区三区 | 国产精品国产精品国产专区不卡 | 国内精品久久久久 | 欧美一区在线看 | 国产永久免费 | 久久久女女女女999久久 | 亚洲午夜av久久乱码 | www.日本在线播放 | 红色av社区| 玖玖综合网| 久久一二区 | 一二区视频| 成人免费精品视频 | 日本在线免费视频 | 精品一区二区久久久久久久网站 | 日韩中文字幕区 | 午夜视频网 | 久久久久久久一区 | 91视频大全 | 中文精品视频 | 国产精品一区二区免费看 | 91精品国产91久久综合桃花 | 91亚洲精品国偷拍自产在线观看 | 亚州毛片 | 在线国产视频 | 日韩欧美国产一区二区 | 欧美午夜精品久久久久免费视 | 伊人影院99| 日韩欧美精品在线 | 麻豆一区一区三区四区 | 亚洲精品视频免费观看 | 一区二区三区四区在线 | 激情五月婷婷综合 | 久久这里有精品 | 99国产精品视频免费观看一公开 | 精久久久久 | 男女羞羞在线观看 | 一区二区三区视频在线 | 亚洲精品一区二区在线观看 | 亚洲精品成人网 | 亚洲精品国产电影 |