Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. P5 EQU 0F8H
  2. P7 EQU 0DBH
  3.  
  4. ORG 0
  5. loop:
  6. MOV A, #11011111B ; maska wiersza
  7.  
  8. CALL rd_row
  9. JC is_key ; zapalanie diody
  10. MOV P1, #0FFH ; gaszenie diody
  11. SJMP loop
  12.  
  13. is_key:
  14. CPL A ; wartosc akumulatora zostaje zanegowana, wynik wpisany zostaje do akumulatora
  15. CLR ACC.7 ; do 7 bitu w akumulatorze zostaje wpisane 0
  16. MOV P1, A
  17.  
  18. SJMP loop
  19.  
  20.  
  21. ; A - maska wiersza
  22. ; C - wskaznik informujacy o tym, czy znaleziono klawisz
  23. ; R0 - numer klawisza
  24.  
  25. rd_row:
  26. ANL P5, #00001111B ; zerowanie starszych bitow
  27. ANL A, #11110000B ; zerowanie mlodszych bitow
  28. ORL P5, A ; "sklejenie" P5 i A
  29.  
  30.  
  31.  
  32. CLR C ; wyczyszczenie C (flaga)
  33.  
  34. MOV R0, #0
  35. ; Teraz do akumulatora przenosimy informacje o numerze kolumny
  36. MOV A, P7
  37.  
  38. ; Konwersja na binarny
  39. CPL A
  40.  
  41. ; Zerujemy starsze bity, zeby nie zaklocic akumulatora nieistotnymi bitami
  42. ANL A, #00001111B
  43. JZ rd_row_end
  44.  
  45. ; Petla ktora bedzie szukala kolumny (jej numeru) w ktorej wcisniety jest klawisz
  46. rd_row_loop:
  47. JB ACC.3, rd_row_set_c
  48. INC R0
  49. RL A ; przesuniecie o jedna pozycje w lewo
  50. SJMP rd_row_loop
  51.  
  52. rd_row_set_c:
  53. SETB C ; ustawienie linii adresowej
  54. MOV A, R0
  55. rd_row_end:
  56. RET
  57.  
  58. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement