<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)程序的無限循環(huán)問題

          單片機(jī)程序的無限循環(huán)問題

          作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          有如下單片機(jī)程序,功能是通過串行口向外發(fā)送字符0、1、2、3、4、5、6、7、8、9,波特率:9600,無校驗(yàn)位,8位數(shù)據(jù)位,1位停止位。

          #include
          void Send(char signal)//數(shù)據(jù)發(fā)送函數(shù)
          {
          SBUF=signal;
          while(TI==0);
          TI=0;
          }

          本文引用地址:http://www.ex-cimer.com/article/201611/320208.htm

          void main(void) //主函數(shù)
          {

          int i;
          char a[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; //字符表
          TMOD=0x20;
          SCON=0x40;
          PCON=0x00;
          TH1=0xfd;
          TL1=0xfd;
          TR1=1;
          for(i=0;i<10;i++)
          {
          Send(a[i]); //依次發(fā)送字符
          }
          }

          通過閱讀程序可知,在執(zhí)行時(shí),單片機(jī)會(huì)向外發(fā)送一遍0—9共十個(gè)字符,用Keil仿真的結(jié)果也是這樣,但是將程序?qū)懭腴_發(fā)板實(shí)際運(yùn)行時(shí),就變成一遍遍地發(fā)送字符0—9,形成了死循環(huán)——很難解釋為什么會(huì)這樣。

          為了糾正這種現(xiàn)象,不得不在程序末尾加上一句while(1),這樣才正常起來。

          改后程序如下:

          #include
          void Send(char signal)//數(shù)據(jù)發(fā)送函數(shù)
          {
          SBUF=signal;
          while(TI==0);
          TI=0;
          }

          void main(void) //主函數(shù)
          {

          int i;
          char a[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; //字符表
          TMOD=0x20;
          SCON=0x40;
          PCON=0x00;
          TH1=0xfd;
          TL1=0xfd;
          TR1=1;
          for(i=0;i<10;i++)
          {
          Send(a[i]); //依次發(fā)送字符
          }
          while(1);
          }

          起碼通過這一現(xiàn)象可以知道,Keil的仿真并不一定能代表真實(shí)情況。



          關(guān)鍵詞: 單片機(jī)程序無限循

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();