;;
;;	include		DELAY.INC
;;
;;DELAY5	; Delka spozdeni v nasobcich 5us
;;DELAY1	; Delka spozdeni v nasobcich 1ms
;;
;
; Procedury pro generovani spozdeni SW prostredky
;
; Include 16C84.INC pro definici zakladnich registru

__DELAY__:	; Priznak modulu DELAY

	ifndef	__16C84__
	error	"Include file 16C84.INC"
	endif

	ifndef	DELAY5
	cblock
		DELAY5
	endc
	endif

	ifndef	DELAY1
	cblock
		DELAY1
	endc
	endif

;-----------------------
;
; Short Delay - 6 az 1281 us 'a 5us --> 1+5*DELAY5 [us]
;
;-----------------------
;
; Vstup:	DELAY5		pozadovane spozdeni v 5us jednotkach
; Nici:		DELAY5

del_0:
	goto	$+1			; Cyklus je 5us
delay5us:
	decfsz	DELAY5
	goto	del_0
	return			; Cas pro call a return je take zapocten

;-----------------------
;
; Jednorazove spozdeni 10ms
;
;-----------------------
;
; Nici:		W, DELAY1, DELAY5

delay10ms:
	movlw	10
	movwf	DELAY1

;-----------------------
;
; Long Delay - 1 az 256 ms 'a 1ms --> 1000*DELAY1 + 3 [us]
;
;-----------------------
;
; Vstup: 	DELAY1		pozadovane spozdeni v 1ms
; Znici: 	W, DELAY5, DELAY1

delay1ms:
	movlw	(1000 / 5 ) - 2	; 1us
	movwf	DELAY5		; 1us
	goto	$+1		; 2us
	goto	$+1		; 2us
	call	delay5us	; 198 * 5 + 1 = 991us
	decfsz	DELAY1		; 1/2us
	goto	delay1ms	; 2us
	return			; 2us
