.NOLIST
.INCLUDE "M16DEF.INC"
.LIST
.DEF JEDEN =R16
.DEF DWA =R17
.DEF L1 =R18
.DEF L2 =R19
.DEF L3 =R20
.DEF L4 =R21
.DEF L0 =R22
.DEF KLAWISZ =R23
.DEF SZYBKOSC =R24
.DEF TRZY = R25
LDI R26,0XFF
OUT DDRB,R26
LDI R27,0
OUT SPH,R27
OUT SPL,R26

LDI L1,0X7E
LDI L2,0X3C
LDI L3,0X18
LDI L4,0X0
LDI L0,0XFF
LDI SZYBKOSC,127



POCZ:
	OUT PORTB,L0
	CALL OPOZNIENIE
	CALL SPRAWDZ_KLAWISZ
	OUT PORTB,L1
	CALL OPOZNIENIE
	CALL SPRAWDZ_KLAWISZ
	OUT PORTB,L2
	CALL OPOZNIENIE
	CALL SPRAWDZ_KLAWISZ
	OUT PORTB,L3
	CALL OPOZNIENIE
	CALL SPRAWDZ_KLAWISZ
	OUT PORTB,L4
	CALL OPOZNIENIE
	CALL SPRAWDZ_KLAWISZ
	OUT PORTB,L3
	CALL OPOZNIENIE
	CALL SPRAWDZ_KLAWISZ
	OUT PORTB,L2
	CALL OPOZNIENIE
	CALL SPRAWDZ_KLAWISZ
	OUT PORTB,L1
	CALL OPOZNIENIE
	CALL SPRAWDZ_KLAWISZ
	JMP POCZ
SPRAWDZ_KLAWISZ:
	IN KLAWISZ,PIND
	CPI KLAWISZ,0XFE
	BRBS 001,SZYBCIEJ
	CPI KLAWISZ,0X7F
	BRBS 001,WOLNIEJ
	RET
SZYBCIEJ:
	CPSE SZYBKOSC,R26
	INC SZYBKOSC
	JMP SPRAWDZ_KLAWISZ

WOLNIEJ:
	CPSE SZYBKOSC,R27
	DEC SZYBKOSC
	JMP SPRAWDZ_KLAWISZ

OPOZNIENIE:
	MOV TRZY,SZYBKOSC
OP3:
	LDI JEDEN,25
OP2:
	LDI DWA,255
OP:
	DEC DWA
	BRNE OP
	DEC JEDEN
	BRNE OP2
	DEC TRZY
	BRNE OP3
	RET
