Advertisement
Cianekjrr

Untitled

Jun 18th, 2019
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. mov 20,#11111111b     ;nie zapala
  2. mov 21,#11111110b     ;liczba zapalająca D0
  3. mov 22,#11111111b     ;nie zapala
  4. mov 23,#11110111b     ;nie zapala
  5. mov 24,#11111111b     ;nie zapala
  6. mov 25,#01111111b     ;liczba zapalająca D7
  7. mov 26,#10111111b     ;liczba zapalająca D6
  8. mov 27,#11011111b     ;liczba zapalająca D5
  9. mov28,#11101111b      ;liczba zapalająca D4
  10. mov29,#11110111b      ;liczba zapalająca D3
  11. mov30,#11111011b      ;liczba zapalająca D2
  12. mov31,#11111101b      ;liczba zapalająca D1
  13. MOV P1,#0ffh        ;zgaszenie wszystkich diod
  14.  
  15. start:
  16. MOV R0, #20         ;zapisanie wartości 20 do R0
  17.  
  18. ; scan row0
  19. SETB P0.3           ;ustawienie row3
  20. CLR P0.0            ;zerowanie row 0
  21. CALL colScan        ;wywołanie podprogramu skanującego kolumnę
  22. JB F0,delay         ;jeżeli F0 jest 1, skocz na koniec tego programu
  23.  
  24. ; scan row1
  25. INC R0              ;inkrementacja R0
  26. SETB P0.0           ;ustawienie row0
  27. CLR P0.1            ;zerowanie row1
  28. CALL colScan        ;wywołanie podprogramu skanującego kolumnę  
  29. JB F0, delay        ;jeżeli F0 jest 1, skocz na koniec tego programu  
  30.                
  31. ; scan row2
  32. INC R0              ;inkrementacja R0
  33. SETB P0.1           ;ustawienie row1
  34. CLR P0.2            ;zerowanie row2
  35. CALL colScan        ;wywołanie podprogramu skanującego kolumnę      
  36. JB F0,delay         ; jeżeli F0 jest 1, skocz na koniec tego programu  
  37.                
  38. ; scan row3
  39. INC R0              ;inkrementacja R0
  40. SETB P0.2           ;ustawienie row2
  41. CLR P0.3            ;czyszczenie row3
  42. CALL colScan        ;wywołanie podprogramu skanującego kolumnę    
  43. JB F0, delay        ;jeżeli F0 jest 1, skocz na koniec tego programu  
  44.  
  45. JMP start           ;skok bezwarunkowy
  46. delay:
  47. mov P1,@R0          ;adresowanie pośrednie
  48. JMP $               ;pusta pętla
  49.  
  50. ;skanowanie kolumny
  51. colScan:
  52. JNB P0.4, gotKey    ;jeżeli col 0 wyczyszczona – klawisz znaleziony
  53. INC R0              ;w przeciwnym razie pójdzie do następnego klawisza
  54. JNB P0.5, gotKey    ;jeżeli col 1 jest wyczyszczona (0) – klawisz znaleziony  
  55. INC R0              ;inkrementacja R0  
  56. JNB P0.6, gotKey    ;jeżeli col 2 jest wyczyszczona (0)– klawisz znaleziony  
  57. RET
  58.  
  59. gotKey:
  60. SETB F0     ;klawisz znaleziony – ustaw F0
  61. RET         ;powróć z podprogramu
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement