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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)之延時的哪點(diǎn)事兒

          51單片機(jī)之延時的哪點(diǎn)事兒

          作者: 時間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
          我說的是單片機(jī)C,書上的延時是這樣的,如:


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

          void delay02()


          {


          unsigned char i,j,k;


          for(i=2;i>0;i--)


          for(j=200;j>0;j--)


          for(k=250;k>0;k--);


          }


          它的時間是:2usX250X200X2=200 000us=0.5s


          而這個時間是不精確的,我在家里總結(jié)出了一個對于這種時間計(jì)算法,它的結(jié)果和在KEILL中調(diào)試時的時間是一樣的并且也分開始定義時的類型,char是以1us計(jì)算,int 是4us,如果上面的那里定義成int那結(jié)果就并不是0.5S啦!


          分析法為:


          以unsigned char 來說吧!


          for(i=2;i>0;i--)


          分析:i=2 --->我的分析為1us


          i>0 ---->我的分析為1us 有兩次共2us


          i-- ----->它也有1us 有兩次共2us


          因此,總的時間為 s=1+1X2+1X2=5us


          由此,書上的時間應(yīng)為


          1+1x2+1x2+2x(1+1x200+1x200+200x(1+1x250+1x250))


          這個時間顯然就是以上從 for 開始到結(jié)束的 } 的精確時間了!


          又如:unsigned char i;


          i=20; //2us


          while(i--);


          這個時間精確計(jì)算應(yīng)為 s=2+6+20x6 us


          為什么是這樣呢?這是我通過keill的調(diào)試得出來的!


          while ---> 2us


          (i--) ----->2us


          ; --------->2us


          起步為6us共有20次,那么時間為6+20x6


          還有,如:


          unsigned int a;


          for(a=20;a>0;a--);


          這個時間精確為


          2+20x4+20x4


          好了不多說了,己經(jīng)到了0:28啦,我要睡啦,不然明兒沒精神的。睡去啦!


          嘻嘻!這些就是我發(fā)現(xiàn)的單片機(jī)關(guān)于延時的那點(diǎn)事兒哦!


          如果你不想信,那么,請朋友你去用keil的調(diào)試吧!


          用起步的時間減去最后的時間看看是不是這樣啦!


          sec是時間 0.000 000 00


          還有這個說法在keil4上不是怎樣成立?這個可能是編譯器的區(qū)別。不過這個可是理解成一種編程思想吧!不要讓編譯器所約束(因?yàn)榫幾g器也是用程序設(shè)計(jì)出來的,如果你會那個你也可以編出來)



          關(guān)鍵詞: 51單片機(jī)延

          評論


          技術(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); })();