;;
;; Busy-loop delays
;;
;; Delay for approx. one second
Delay_1s:
; ~16M cycles
ldi r20, 82
rjmp delay_init
;; Delay for a variable amount of time, adjusted by r20
; Input: r20 controls number of delay loops
VarDelay:
tst r20
breq delay_out
delay_init:
ldi r21, 255
delay_loop:
; 254 * (1 + 2) + 1 * (1 + 1) = 764 cycles / loop
dec r22
brne delay_loop
; 254 * 764 + 764 = 194820 cycles / loop
dec r21 ; 1 * r20 * r21
brne delay_loop ; 2 * r20 * r21
; r20 * 194820 + r20 * 3 = 194823 cycles / loop (r20)
dec r20 ; 1 * r20
brne delay_loop ; 2 * r20
delay_out:
ret