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

          新聞中心

          51單片機(jī)中的周期

          作者: 時(shí)間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
          首先明確幾個(gè)概念:時(shí)鐘周期、振蕩周期、狀態(tài)周期、機(jī)器周期、指令周期

          1、時(shí)鐘周期,也稱為振蕩周期:定義為時(shí)鐘脈沖的倒數(shù),在單片機(jī)中也就等于晶振的倒數(shù)。

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

          51單片機(jī)中把一個(gè)時(shí)鐘周期定義為一個(gè)節(jié)拍(用P表示),2個(gè)節(jié)拍定義為狀態(tài)周期(用S表示)

          時(shí)鐘周期是單片機(jī)中最小的時(shí)間單位。

          eg:12M晶振的單片機(jī),時(shí)鐘周期=振蕩周期=1/12 us。

          2、機(jī)器周期:定義為完成一項(xiàng)基本操作所需要的時(shí)間,稱為機(jī)器周期。

          在計(jì)算機(jī)中,為了方便管理,把一條指令的執(zhí)行過程分為若干個(gè)階段,每個(gè)階段去執(zhí)行一項(xiàng)基本操作。

          如:取指令,存儲器讀,存儲器寫等。

          在51單片機(jī)中1個(gè)機(jī)器周期由6個(gè)狀態(tài)周期組成,也就是12個(gè)時(shí)鐘周期=12 x 1/12 us =1 us

          定義機(jī)器周期是因?yàn)闀r(shí)鐘周期時(shí)間太短,根本做不了什么。

          3、指令周期:定義為執(zhí)行一條指令所需的時(shí)間。

          通常,包含一個(gè)機(jī)器周期的指令稱為單周期指令,比如 MOV指令,CLR指令等。

          包含兩個(gè)機(jī)器周期的指令稱為雙周期指令。

          另外還有四周期指令。

          判斷指令是單周期指令還是雙周期指令,最可靠的是查指令表。我在網(wǎng)上找到了一個(gè)規(guī)律總結(jié),

          此規(guī)律應(yīng)按照順序進(jìn)行判斷,前一條原則高于后一條(主要指2~6),按順序檢查到哪一條滿足,就歸屬哪

          一類:

          1、MUL、DIV:僅有的4周期指令
          2、包含DPTR和PC的指令均為2周期指令
          3、所有的絕對跳轉(zhuǎn)和條件轉(zhuǎn)移指令,均為2周期指令
          4、所有包括A寄存器的指令,均為單周期指令
          5、位操作指令中,ANL和ORL是2周期指令
          6、所有包含立即地址的指令,除INC direct及DEC direct外,均為2周期指令
          7、剩下的均為單周期指令。

          現(xiàn)在,常用的單片機(jī)程序編寫軟件為keil,當(dāng)寫好程序后,我們可以通過軟件調(diào)試來確定程序執(zhí)行所需的時(shí)間,同時(shí)也能看到每條指令:



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