在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

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

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

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

      拜讀了網(wǎng)上《 Keil C 的簡單研究 》(by: InfiniteSpace Studio/isjfk, 1.21.2004 )一文,借鑒了文中的方法,測試發(fā)現(xiàn)有一點點出入,原文作者在計算延時時間的時候是否忘了加上RET指令……下面介紹我的測試結(jié)果,歡迎交流探討——

      一、單獨定義變量,for語句

      28: delay1(1);

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

      C:0x0007 1121 ACALL delay1(C:0021)

      12: void delay1(unsigned char k)

      13: {

      17: unsigned char i=0;

      C:0x0021 E4 CLR A

      C:0x0022 FE MOV R6,A

      18: for(i=0;i0;i--);相同

      C:0x0023 EE MOV A,R6

      C:0x0024 C3 CLR C

      C:0x0025 9F SUBB A,R7

      C:0x0026 5003 JNC C:002B

      C:0x0028 0E INC R6

      C:0x0029 80F8 SJMP C:0023

      19: }

      C:0x002B 22 RET

      分析:

      delay1(1); 410-390=20

      delay1(2); 439-411=28

      delay1(3); 476-440=36

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

      二、不再重新定義變量,for語句

      28: delay1(1);

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

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

      12: void delay1(unsigned char k)

      13: {

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

      C:0x0023 EF MOV A,R7

      C:0x0024 D3 SETB C

      C:0x0025 9400 SUBB A,#0x00

      C:0x0027 4003 JC C:002C

      C:0x0029 1F DEC R7

      C:0x002A 80F7 SJMP delay1(C:0023)

      19: }

      C:0x002C 22 RET

      分析:

      delay1(1); 491-473=18

      delay1(2); 518-492=26

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

      對比一和二可知,延時函數(shù)中有重新定義循環(huán)變量i時,理所當(dāng)然地多了2行代碼

      不知原文中 “其生成的代碼是一樣的。”的結(jié)論是如何得來的?

      三、for語句,改變循環(huán)結(jié)束條件

      23: 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);

      14: // while(i--);

      15: for(; i != 0; i--);

      C:0x0023 EF MOV A,R7

      C:0x0024 6003 JZ C:0029

      C:0x0026 1F DEC R7

      C:0x0027 80FA SJMP delay1(C:0023)


      上一頁 1 2 下一頁

      關(guān)鍵詞: 51單片機 KeilC 延時程序

      評論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉