Vous êtes sur la page 1sur 2

;======================================

; *** Delay support routines ***


;======================================
;Keterangan:
;
Design by:
;
- MFLi ;======================================
dseg
rDelay:ds
1
rDelay1:
ds
1
rDelay2:
ds
1
rDelay3:
ds
1
cseg
; ====================================================
ShortDelay:mov
rDelay1, #3 ; 2 cycles
djnz rDelay1, $
; 3 x 2 = 6 cycles
djnz rDelay, ShortDelay ; lama delay ini = rDelay x 10us
ret
; ====================================================
Delay:
push rDelay
WaitDelay: acall Delay1ms
djnz rDelay, WaitDelay ; lama delay ini = rDelay x 1ms
pop rDelay
ret
; ====================================================
; ====================================================
LongDelay: Push rDelay
WaitLong:
acall Delay1sec
djnz rDelay, WaitLong
; lama delay ini = rDelay x 1sec
pop rDelay
ret
; ====================================================
; ====================================================
; Delay1ms akan menghasilkan 1 ms jika xtal yang digunakan 12 Mhz
Delay1ms:
push rDelay1
; 2 Cycles
mov rDelay1, #247 ; 2 Cycles
Loop1ms:
nop
nop
djnz rDelay1, Loop1ms
; 247 x (1+1+2)Cycle = 988 cycles
nop
; 1 Cycle
nop
; 1 Cycle
pop rDelay1
; 2 Cycles
ret
; 2 Cycles
;
Total = 998 Cycles
; Ketika dipanggil jumlah Cycles akan genap menjadi 1000 Cycles atau 1ms
; ====================================================

; ====================================================
; Delay1s akan menghasilkan 1 sec jika xtal yang digunakan 12 Mhz
Delay1sec:
push rDelay2
; 2 Cycles
push rDelay3
; 2 Cycles
mov rDelay2, 249 ; 2 Cycles
Loop1sec:
acall Delay1ms
acall Delay1ms
acall Delay1ms
acall Delay1ms
djnz rDelay2, Loop1sec ; 996498 Cycles
acall Delay1ms
; 1000 Cycles
acall Delay1ms
; 1000 Cycles
acall Delay1ms
; 1000 Cycles
;
SubTotal1
= 999504 Cycles
mov rDelay3, #243 ; 2 Cycles
djnz rDelay3, $
; 243 x 2 Cycles = 486 Cycles
pop rDelay3
; 2 Cycles
pop rDelay2
; 2 Cycles
ret
; 2 Cycles
;
SubTotal2 = 494 Cycles
;
Total = 999504 + 494 = 999998 Cycles
; Ketika dipanggil jumlah Cycles akan genap menjadi 1000000 Cycles atau 1sec
; ====================================================
;end

Vous aimerez peut-être aussi