Advertisement
Guest User

Untitled

a guest
May 29th, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. ;----------------------------------------------------------------------------------------------
  2.  
  3. ; Pobranie nr klawisza wciśniętego w wierszu klawiatury
  4.  
  5. ; Pobrany nr klawisza - R0
  6.  
  7. ;----------------------------------------------------------------------------------------------
  8.  
  9. GET_KEY_CODE:
  10.  
  11. CLR C ; Wyzerowanie bitu przeniesienia(C)
  12.  
  13. MOV R0, #0 ; Przesłanie wartości 0 do licznika w R0
  14.  
  15. MOV A, P7 ; Przesłanie zawartości rejestru portu P7 do akumulatora
  16.  
  17. CPL A ; Zanegowanie bitów w akumulatorze
  18.  
  19. ANL A, #00001111B ; Logiczne AND zerujące starsze bity akumulatora
  20.  
  21. JZ KONIEC_GKC ; Jeśli akumulator = 0 - skok do KONIEC_GKC
  22.  
  23. PETLA_GKC:
  24.  
  25. INC R0 ; Zwiększenie licznika w R0
  26.  
  27. JB ACC.3, KONIEC_GKC_C ; Jeśli bit 3. akumulatora ustawiony - skok do KONIEC_GKC_C
  28.  
  29. RL A ; Przesunięcie zwartości akumulatora w lewo
  30.  
  31. SJMP PETLA_GKC ; Skok do pętli pobierania nr klawisza - PETLA_GKC
  32.  
  33. KONIEC_GKC_C:
  34.  
  35. SETB C ; Ustawienie bitu przeniesienia(C)
  36.  
  37. KONIEC_GKC:
  38.  
  39. RET ; Wyjście z procedury
  40.  
  41.  
  42. $NOMOD51 ; Brak definicji niektórych rejestrów SFR mikrokontrolera 8051
  43.  
  44. $include(reg517.inc) ; Dołączenie pliku definicji rejestrów mikrokontrolera 80C537
  45.  
  46. ORG 0 ; Następny rozkaz zostanie umieszczony pod adresem 0x0000H
  47.  
  48. MAIN: ; Głowna pętla programu
  49.  
  50. CALL READ_KBD ; Wywołanie procedury czytającej z klawiatury
  51.  
  52. CPL A ; Zanegowanie bitów w akumulatorze
  53.  
  54. MOV P1, A ; Przesłanie wartości z akumulatora do rejestru portu P1
  55.  
  56. SJMP MAIN ; Skok do pętli MAIN - zapobiega wejściu do procedur
  57.  
  58. ;----------------------------------------------------------------------------------------------
  59.  
  60. ; Czytanie wciśniętego klawisza z klawiatury
  61.  
  62. ; Jeśli klawisz wciśnięty - bit C ustawiony i nr klawisza w A
  63.  
  64. ;----------------------------------------------------------------------------------------------
  65.  
  66. READ_KBD:
  67.  
  68. MOV R1, #01111111B ; Przesłanie maski wierszy do R1
  69.  
  70. MOV R3, #0 ; Przesłanie narzutu wiersza do R3
  71.  
  72. 1
  73.  
  74. PETLA_RK:
  75.  
  76. ANL P5, #00001111B ; Logiczne AND zerujące starsze bity rejestru portu P5
  77.  
  78. MOV A, R1 ; Przesłanie maski wierszy do akumulatora
  79.  
  80. ANL A, #11110000B ; Logiczne AND przygotowujące starsze bity maski wierszy
  81.  
  82. ORL P5, A ; Logiczne OR sumujące bity rejestru portu P5 i akumulatora
  83.  
  84. CALL GET_KEY_CODE ; Wywołanie procedury pobierającej nr klawisza
  85.  
  86. JC KONIEC_RK ; Jeśli bit C ustawiony - skok do KONIEC_RK
  87.  
  88. MOV A, R1 ; Przesłanie maski wiersza do akumulatora
  89.  
  90. RR A ; Przesuniecie zawartości akumulatora w prawo
  91.  
  92. JNB ACC.3, KONIEC_RK ; Jeśli bit 3. nie ustawiony - skok do KONIEC_RK
  93.  
  94. MOV R1, A ; Przesłanie zawartości akumulatora do R1
  95.  
  96. MOV A, R3 ; Przesłanie narzutu wiersza do akumulatora
  97.  
  98. ADD A, #4 ; Zwiększenie narzutu wiersza o 4
  99.  
  100. MOV R3, A ; Przesłanie narzutu wiersza do R3
  101.  
  102. SJMP PETLA_RK ; Skok do pętli czytania klawisza - PETLA_RK
  103.  
  104. KONIEC_RK:
  105.  
  106. MOV A, R0 ; Przesłanie wartości z R0 do akumulatora
  107.  
  108. ADD A, R3 ; Dodanie narzutu wiersza do akumulatora
  109.  
  110. RET ; Wyjście z procedury
  111.  
  112. END
  113.  
  114. ;----------------------------------------------------------------------------------------------
  115.  
  116. ; Tutaj procedura z listingu 1.
  117.  
  118. ;----------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement