;;;;;;;;;;;;;;;;;;;;;
;definicje rejestrów
R0	EQU 0x70
R1	EQU 0x71
R2	EQU 0x72
R3	EQU 0x73

Czekaj_1us:
	nop		;nic nie rób
	return	;powrót z podprogramu

;Minimalny argument = 1 (10 us)
;Maksymalny argument = 0xFFFFFFFF (42 949 672 950 us = prawie 12 godzin)
Czekaj_10us:
;zmniejsz argument o 1 (8 cykli)
	movlw	1			;W = 1
	subwf	R0, 1		;odejmij od R0 wartość z rejestru W
	btfss	STATUS, 0	;pomiń nast. instrukcję, jeśli nie było pożyczki
	subwf	R1, 1		;odejmij od R1 wartość z rejestru W
	btfss	STATUS, 0	;pomiń nast. instrukcję, jeśli nie było pożyczki
	subwf	R2, 1		;odejmij od R2 wartość z rejestru W
	btfss	STATUS, 0	;pomiń nast. instrukcję, jeśli nie było pożyczki
	subwf	R3, 1		;odejmij od R3 wartość z rejestru W
;wypełnienie 19 cykli
	movlw	d'252'		;załaduj do W liczbę 252
petelka_czekaj_10us_1:
		addlw	1						;dodaj do W liczbę 1
		btfss	STATUS, 0				;pomiń nast. instrukcję, jeśli było przeniesienie
		goto	petelka_czekaj_10us_1	;skocz do etykiety
	nop					;nic nie rób
	nop					;nic nie rób
	nop					;nic nie rób
;zmniejsz liczbę o 1 (10 cykli)
petla_czekaj_10us:
	movlw	1			;W = 1
	subwf	R0, 1		;odejmij od R0 wartość z rejestru W
	btfss	STATUS, 0	;pomiń nast. instrukcję, jeśli nie było pożyczki
	subwf	R1, 1		;odejmij od R0 wartość z rejestru W
	btfss	STATUS, 0	;pomiń nast. instrukcję, jeśli nie było pożyczki
	subwf	R2, 1		;odejmij od R0 wartość z rejestru W
	btfss	STATUS, 0	;pomiń nast. instrukcję, jeśli nie było pożyczki
	subwf	R3, 1		;odejmij od R0 wartość z rejestru W
	btfss	STATUS, 0	;pomiń nast. instrukcję, jeśli nie było pożyczki
	goto	koniec_czekaj_10us

;wypełnienie 38 cykli
	movlw	d'247'
petelka_czekaj_10us_2:
		addlw	1						;dodaj do W liczbę 1
		btfss	STATUS, 0				;pomiń nast. instrukcję, jeśli było przeniesienie
		goto	petelka_czekaj_10us_2	;skocz do etykiety
	nop					;nic nie rób
	nop					;nic nie rób

	goto	petla_czekaj_10us
;obługa podprogramu = 12 cykli
koniec_czekaj_10us:
	return				;powrót z podprogramu