Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org 1800h
- ;program do 3adownia i zwiekszania licznkia w kodzie Gray'a.my mamy zerowanie i w dol
- ;Rejestr D - licznik w binary; F - licznik w Gray;
- ;E - czy wcioniey podczsa INT; H i B - czekanie podczas drgan styków
- ;C - adres lampek;
- START:
- LD SP,1900h
- jr INITIALIZATION
- ds 0x1838-$,0
- INT: ;przerwanie: wcioiety klawisz nr 2, u?ytkownik wcytuje cyfre z hex
- EX AF, AF'
- ;IN A,(01) ;wczytuje do z hexów
- LD D,15 ;poczatek procedury zamiany binary -> gray
- ;SRL A ;przesuwa bity A o jeden w prawo bez przeniesienia
- ;AND 7 ;upewniamy sie ?e pierwszy bit jest zerem
- ;XOR D ;xor A z D, zapis do A, teraz ju? powinen bya w A w gray
- ;AND 15
- LD L,8 ;wynik w gray przechowujemy w L
- LD A,8
- OUT (01), A
- IN A, (01)
- BIT 4, A ;sprawdzamy, czy klawisz inkremetacji równie? wcioniety
- LD E, 0
- JR NZ, KONIEC_INT
- LD E, 1
- KONIEC_INT: ;wychodzimy z INT
- EX AF, AF'
- EI
- RETI
- ds 0x1860-$,0
- INITIALIZATION:
- IM 1 ;tryb 1 przerwan
- EI
- LD A,8
- OUT (01),A ;przerwania w31czone
- ;IN A,(01)
- LD L,8
- ;LD A,15
- LD D,15 ;zamiana w gray
- ;SRL A
- ;AND 7
- ;XOR D
- ;AND 15
- ;LD L,A ;koniec zamiany, w L jest liczba z nastawników hex
- LD E, 0 ;zerujemy rejestr E
- GLOWNA_PETLA:
- ;LD A,L
- ;OUT (01), A wyswietla na lampkach zawartosc L
- IN A, (01) ;3adujemy do A stan przycisków
- BIT 4, A ;sprawdzamy, czy zosta3 wcioniety swith od inkremetnacji
- JR NZ, GLOWNA_PETLA ;jeoli nie, powtarzamy petle
- LD H, 250 ;licznik prób
- LD B, 200 ;licznik udanych prób
- DRGANIA_STYKOW:
- DEC H ;zmniejsza H i ustawia znacznik Z
- JR Z, GLOWNA_PETLA ;jeoli H = 0 - klawisz nie wcioniety i wracamy do g3ównej petli
- IN A, (01) ;wczytujemy switcha
- BIT 4, A ;ustawiamy znaczik Z
- JR NZ, DRGANIA_STYKOW ;jeoli switch w tym momencie niewcioniety, DRGANIA_STYKOW od pocz1tku
- DEC B ;klawisz wcioniety, dekremenmtuje B i ustawia znacznik Z
- JR Z, DEKREMENTUJ_LICZNIK ;jeoli B = 0 -> klawis NAPRAWDE wcioniety i idY do etykiety INKREMENTUJ_LICZNIK
- LD A,40
- CZEKAJ: ;petla w petli - okazalo sie, ?e 200 zliczen na 250 to stanowczo za malo
- DEC A
- JR NZ, CZEKAJ
- JR DRGANIA_STYKOW ;B jeszcze ró?ne od zera, od pocz1tku ta etykieta
- DEKREMENTUJ_LICZNIK:
- DI
- BIT 0, E ;sprawdzam, czy wcioniety podczas przerwania
- LD E, 0 ;zeruje flage
- JR NZ, DDD ;jeoli flaga = 1, nie inkrementuj i wyjdz do g3wonej petli
- DEC D ;zmiana na dec
- LD A,D ;poczatek zamiany w gray : kopiuje D do A
- SRL A ;przesuwa bity A o jeden w prawo bez przeniesienia
- AND 7
- XOR D
- AND 15
- LD L,A
- OUT (01), A ;wyswietla na lampkach zawartosc L
- LD A,D
- CP -1 ;gdy D==16, Z=1 3aduj na nowo
- JR NZ, DDD ;ggdy nie ma potrzeby 3adowania wróa do g3ównej petli
- LD D,15
- LD A,8
- LD L,A
- OUT (01), A
- DDD:
- EI ;aby po wcisnieciu klawisza nie zliaczlalo
- IN A,(01)
- BIT 4,A
- JR Z, DDD
- JP GLOWNA_PETLA ;wracamy do g3ównej petli
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement