彙編延時程式演算法詳解

來源:互聯網
上載者:User

電腦反覆執行一段程式以達到延時的目的稱為軟體延時,單片機應用程式中經常需要短時間延時。
        有時要求很高的精度,網上或書中雖然有現成的公式可以套用,但在部分演算法講解中發現有錯誤之處,而且延時的具體演算法講得並不清楚,相當一部分人對此仍很模糊,授人魚,不如授之以漁,本文將以12MHZ晶振為例,詳細講解MCS-51單片機中組譯工具延時的精確演算法。

  指令周期、機器周期與刻度
  指令周期:CPU執行一條指令所需要的時間稱為指令周期,它是以機器周期為單位的,指令不同,所需的機器周期也不同。
  刻度:也稱為振蕩周期,一個刻度 =晶振的倒數。
  MCS-51單片機的一個機器周期=6個狀態周期=12個刻度。
  MCS-51單片機的指令有單位元組、雙位元組和三位元組的,它們的指令周期不盡相同,一個單周期指令包含一個機器周期,即12個刻度,所以一條單周期指令被執行所佔時間為12*(1/12000000)=1μs。
  程式分析
  例1 50ms 延時子程式:
  DEL:MOV R7,#200 ①
  DEL1:MOV R6,#125 ②
  DEL2:DJNZ R6,DEL2 ③
  DJNZ R7,DEL1 ④
  RET ⑤
  精確延時時間為:1+(1*200)+(2*125*200)+(2*200)+2
  =(2*125+3)*200+3 ⑥
  =50603μs
  ≈50ms
  由⑥整理出公式(只限上述寫法)延時時間=(2*內迴圈+3)*外迴圈+3 ⑦
  詳解:DEL這個子程式共有五條指令,現在分別就 每一條指令 被執行的次數和所耗時間進行分析。
  第一句:MOV R7,#200 在整個子程式中只被執行一次,且為單周期指令,所以耗時1μs
  第二句:MOV R6,#125 從②看到④只要R7-1不為0,就會返回到這句,共執行了R7次,共耗時200μs
  第三句:DJNZ R6,DEL2 只要R6-1不為0,就反覆執行此句(內迴圈R6次),又受外迴圈R7控制,所以共執行R6*R7次,因是雙周期指令,所以耗時2*R6*R7μs。
  例2 1秒延時子程式:
  DEL:MOV R7,#10 ①
  DEL1:MOV R6,#200 ②
  DEL2:MOV R5,#248 ③
  DJNZ R5,$ ④
  DJNZ R6,DEL2 ⑤
  DJNZ R7,DEL1 ⑥
  RET ⑦
  對每條指令進行計算得出精確延時時間為:
   1+(1*10)+(1*200*10)+(2*248*200*10)+(2*200*10)+(2*10)+2
  =[(2*248+3)*200+3]*10+3 ⑧
  =998033μs≈1s
  由⑧整理得:延時時間=[(2*第一層迴圈+3)*第二層迴圈+3]*第三層迴圈+3 ⑨
  此式適用三層迴圈以內的程式,也驗證了例1中式⑦(第三層迴圈相當於1)的成立。
  注意,要實現較長時間的延時,一般採用多重迴圈,有時會在程式序裡加入NOP指令,這時公式⑨不再適用,下面舉例分析。
  例3仍以1秒延時為例
  DEL:MOV R7,#10 1指令周期1
  DEL1:MOV R6,#0FFH 1指令周期10
  DEL2:MOV R5,#80H 1指令周期255*10=2550
  KONG:NOP 1指令周期128*255*10=326400
  DJNZ R5,$ 2指令周期2*128*255*10=652800
  DJNZ R6,DEL2 2指令周期2*255*10=5110
  DJNZ R7,DEL1 2指令周期2*10=20
  RET 2
  延時時間=1+10+2550+326400+652800+5110+20+2 =986893μs約為1s
  整理得:延時時間=[(3*第一層迴圈+3)*第二層迴圈+3]*第三層迴圈+3 ⑩
  結論:論文針對初學者的困惑,對組譯工具的延時演算法進行了分步講解,並就幾種不同寫法分別總結出相應的計算公式,只要仔細閱讀例1中的詳解,並用例2、例3來加深理解,一定會掌握各種類型程式的演算法並加以運用。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.