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

          新聞中心

          EEPW首頁 > 汽車電子 > 設(shè)計(jì)應(yīng)用 > 8051、ARM和DSP指令周期的測試與分析

          8051、ARM和DSP指令周期的測試與分析

          ——
          作者:華中科技大學(xué) 李達(dá)義 時間:2007-03-19 來源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 收藏
          在實(shí)時控制系統(tǒng)中,選擇微控制器的指標(biāo)時最重要的是計(jì)算速度的問題。是反映計(jì)算速度的一個重要指標(biāo),為此本文對三種最具代表性的微控制器(AT89S51、7TDMI核的LPC2114型和TMS320F2812)的進(jìn)行了分析和測試。為了能觀察到,將三種控制器的GPIO口設(shè)置為數(shù)字輸出口,并采用循環(huán)不斷地置位和清零,通過觀察GPIO口的波形變化得到整個循環(huán)的周期。為了將整個循環(huán)的周期與具體的每一條指令的指令周期對應(yīng)起來,通過C語言源程序得到匯編語言指令來計(jì)算每一條匯編語言的指令周期。

          1  AT89S51工作機(jī)制及指令周期的測試

          AT89S51的時鐘采用內(nèi)部方式,時鐘發(fā)生器對振蕩脈沖進(jìn)行2分頻。由于時鐘周期為振蕩周期的兩倍(時鐘周期=振蕩周期P1+振蕩周期P2),而1個機(jī)器周期含有6個時鐘,因此1個機(jī)器周期包括12個晶振的振蕩周期。取石英晶振的振蕩頻率為11.059 2 MHz,則單片機(jī)的機(jī)器周期為12/11.059 2=1.085 1 μs。51系列單片機(jī)的指令周期一般含1~4個機(jī)器周期,多數(shù)指令為單周期指令,有2周期和

          4周期指令。

          為了觀察指令周期,對單片機(jī)的P1口的最低位進(jìn)行循環(huán)置位操作和清除操作。源程序如下:

            #include
                  main() {
            while(1) {
              P1=0x01;
              P1=0x00;
                           }
                             }

          采用KEIL uVISION2進(jìn)行編譯、鏈接,生成可執(zhí)行文件。當(dāng)調(diào)用該集成環(huán)境中的Debug時,可以得到上述源程序混合模式的反匯編代碼:

            2:main()
            3: {
            4:while(1)
            5:{
            6:P1=0x01;
            0x000F759001MOVP1(0x90),#0x01
            7:P1=0x00;
            0x0012 E4CLRA
            0x0013 F590MOVP1(0x90),A
            8:}
            0x001580EDSJMPmain (C:0003)

          其中斜體的代碼為C源程序,正體的代碼為斜體C源程序?qū)?yīng)的匯編語言代碼。每行匯編代碼的第1列為該代碼在存儲器中的位置,第2列為機(jī)器碼,后面是編譯、鏈接后的匯編語言代碼。所有指令共占用6個機(jī)器周期(其中“MOV  P1(0x90),#0x01”占用2個機(jī)器周期,“CLR  A”和“MOV  P1(0x90),A”各占用1個機(jī)器周期,最后一個跳轉(zhuǎn)指令占用2個機(jī)器周期),則總的循環(huán)周期為6



          評論


          相關(guān)推薦

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