回覆列表
  • 1 # 滴逃逃

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

    比如:設晶振頻率為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就能得到準確的延時時間。

  • 中秋節和大豐收的關聯?
  • 榆次結婚有哪些習俗講究?