當前位置:編程學習大全網 - 編程軟體 - 匯編 用DJNZ寫的延遲程序 如何結束循環 ?

匯編 用DJNZ寫的延遲程序 如何結束循環 ?

延時方法很多,用定時/計數比較方便也比較精確。如果用軟件延時,則可以用循環(多重、嵌套都行)。根據時間長短確定循環次數,力求精確。時間計算以機器的晶振頻率為基準,算出各指令的運行時間(每條指令運行時間乘所循環的次數就是該指令的全部運行時間),所有指令運行時間的和就是延時的時間。

比如:設晶振頻率為12MHz 則每機器周期為1us

513us延時程序為

DL513: MOV R7,#0FFH ;1us

DJNZ R7,$;2us *255=510us

RET ;2us

延時時間為1+510+2=513us

延時時間較長則可以用多重循環(以四重循環為例),如:

KKKK0:MOV R2,#XX ;1us

KKKK1:MOV R3,#LL ;1us*XX

KKKK2:MOV R4,#NN ;1us*XX*LL

KKKK3:MOV R5,#MM ;1us*XX*LL*NN

DJNZ R5,$ ;2us *XX*LL*NN*MM

DJNZ R4,KKKK3 ;2us *XX*LL*NN

DJNZ R3,KKKK2 ;2us *XX*LL

DJNZ R2,KKKK1 ;2us *XX

RET ;2us

延時時間為1us+1us*XX+1us*XX*LL+1us*XX*LL*NN+2us *XX*LL*NN*MM+2us *XX*LL*NN+2us *XX*LL+2us *XX+2us

適當確定四個循環次數XX、LL、NN、MM就能得到準確的延時時間。

  • 上一篇:簡答:程序設計工作的依據和任務
  • 下一篇:智能路燈控制器sdk-6怎麽調
  • copyright 2024編程學習大全網