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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)延時(shí)匯編語(yǔ)言計(jì)算方法

          單片機(jī)延時(shí)匯編語(yǔ)言計(jì)算方法

          作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
          我們用匯編語(yǔ)言寫(xiě)單片機(jī)延時(shí)10ms的程序(用的是12MHz晶振的 MCS-51),可以編寫(xiě)下面的程序來(lái)實(shí)現(xiàn):
          MOV R5,#5 ①
          D1: MOV R6,#4 ②
          D2: MOV R7,#248 ③
          DJNZ R7,$ ④
          DJNZ R6,D2 ⑤
          DJNZ R5,D1 ⑥
          RET ⑦
          這個(gè)延時(shí)程序共有七條指令,現(xiàn)在就每一條指令執(zhí)行的次數(shù)和所耗時(shí)間進(jìn)行分析:
          第一條, MOV R5,#5 在整個(gè)程序中只執(zhí)行一次,且為單周期指令,所以耗時(shí)1μs,
          第二條, MOV R6,#4 看⑥的指令可知,只要R5-1不為0,就會(huì)返回執(zhí)行這條指令,共執(zhí)行了R5次,共耗時(shí)5μs,
          第三條, MOV R7,#248 同第二條類似,只要R6-1不為0,就會(huì)返回執(zhí)行這條指令,同時(shí)受到外部循環(huán)R5的控制,共耗時(shí)R5*R6*1=20μs,
          第四條, DJNZ R7,$ 只要R7-1不為0,就執(zhí)行這條指令,同時(shí)受到外部循環(huán)的控制,由于該指令是雙周期指令,共耗時(shí)為R7*R6*R5*2=9920μs,
          第五條, DJNZ R6,D2 只要R6-1不為0,就反復(fù)執(zhí)行此條指令(內(nèi)循環(huán)R6次),又受外循環(huán)R7的控制,共耗時(shí)R6*R5*2=40μs,
          第六條, DJNZ R5,D1 只要R5-1不為0,就反復(fù)執(zhí)行此條指令,耗時(shí)為R5*2=10μs,
          第七條, RET 此指令為雙周期指令,耗時(shí)為2μs,
          我們也要考慮在調(diào)用子程序時(shí)用到LCALL指令,耗時(shí)2μs,最后可以得到總的延時(shí)為:1+5+20+9920+40+10+2=9998μs=10ms
          我們可以總結(jié)延時(shí)總時(shí)間的公式:
          延時(shí)總時(shí)間=[(2*一層循環(huán)次數(shù)+3)*二層循環(huán)次數(shù)+3]*三層循環(huán)次數(shù)+3
          注意此公式只適用于三層以內(nèi)的循環(huán)


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