色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 幾種延時的匯編執(zhí)行代碼對比與總結

          幾種延時的匯編執(zhí)行代碼對比與總結

          作者: 時間:2013-04-07 來源:網(wǎng)絡 收藏

          16: }

          C:0x0029 22 RET

          分析:

          delay1(1); 404-390=14

          delay1(2); 425-405=20

          delay1(3); 452-426=26

          指令周期(即實際延時)= 8 + 延時參數(shù) * 6

          對比二和三可知循環(huán)結束條件不同,編譯結果理當不同,用i != 0快2個周期。

          四、while語句1

          21: delay1(1);

          C:0x0005 7F01 MOV R7,#0x01

          C:0x0007 1123 ACALL delay1(C:0023)

          11: void delay1(unsigned char i)

          12: {

          13: while(i--);

          C:0x0023 AE07 MOV R6,0x07

          C:0x0025 1F DEC R7

          C:0x0026 EE MOV A,R6

          C:0x0027 70FA JNZ delay1(C:0023)

          14: }

          C:0x0029 22 RET

          407-390=17,有點夸張

          當delay1(2)時,為431-408=23

          delay1(3)時,為461-432=29

          指令周期(即實際延時)= 11 + 延時參數(shù) * 6

          五、while語句2

          21: delay1(1);

          444 C:0x0005 7F01 MOV R7,#0x01

          445 C:0x0007 111D ACALL delay1(C:001D)

          11: void delay1(unsigned char i)

          12: {

          13: while(--i);

          447 C:0x001D DFFE DJNZ R7,delay1(C:001D)

          14: }

          449 C:0x001F 22 RET

          451

          從上看出451-444=7個周期,指令周期為1us的話,就是7us

          指令周期(即實際延時)= 5 + 延時參數(shù) * 2

          綜上可知:

          共性:裝載函數(shù)參數(shù)用時1,調(diào)用用2,返回用2,1+2+2=5為固定開銷。

          從以上各個結果的指令周期和延時參數(shù)的關系上看,很明顯,以后如果要求不用定時器實現(xiàn)us級的延時(按晶振12M,指令周期1us算),那么首選第五:

          while(--i);

          語句,其分辨率是最高,最精確的,當然,對于相同的延時參數(shù),它的實際延時時間也是最短的,它只能最高延時5+255*2=515us,若所需延時大于此值,則需要循環(huán)嵌套;或者,可考慮選用

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

          最高延時=10 + 255*8=2050us=2.05ms

          需要其他的延時時間片的話,再參考以上的公式計算即可。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉