Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- P5 EQU 0F8H
- P7 EQU 0DBH
- ORG 0
- loop:
- MOV A, #11011111B ; maska wiersza
- CALL rd_row
- JC is_key ; zapalanie diody
- MOV P1, #0FFH ; gaszenie diody
- SJMP loop
- is_key:
- CPL A ; wartosc akumulatora zostaje zanegowana, wynik wpisany zostaje do akumulatora
- CLR ACC.7 ; do 7 bitu w akumulatorze zostaje wpisane 0
- MOV P1, A
- SJMP loop
- ; A - maska wiersza
- ; C - wskaznik informujacy o tym, czy znaleziono klawisz
- ; R0 - numer klawisza
- rd_row:
- ANL P5, #00001111B ; zerowanie starszych bitow
- ANL A, #11110000B ; zerowanie mlodszych bitow
- ORL P5, A ; "sklejenie" P5 i A
- CLR C ; wyczyszczenie C (flaga)
- MOV R0, #0
- ; Teraz do akumulatora przenosimy informacje o numerze kolumny
- MOV A, P7
- ; Konwersja na binarny
- CPL A
- ; Zerujemy starsze bity, zeby nie zaklocic akumulatora nieistotnymi bitami
- ANL A, #00001111B
- JZ rd_row_end
- ; Petla ktora bedzie szukala kolumny (jej numeru) w ktorej wcisniety jest klawisz
- rd_row_loop:
- JB ACC.3, rd_row_set_c
- INC R0
- RL A ; przesuniecie o jedna pozycje w lewo
- SJMP rd_row_loop
- rd_row_set_c:
- SETB C ; ustawienie linii adresowej
- MOV A, R0
- rd_row_end:
- RET
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement