Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. org 1800h
  2. ;program do 3adownia i zwiekszania licznkia w kodzie Gray'a.my mamy zerowanie i w dol
  3. ;Rejestr D - licznik w binary; F - licznik w Gray;
  4. ;E - czy wcioniey podczsa INT; H i B - czekanie podczas drgan styków
  5. ;C - adres lampek;
  6. START:
  7. LD SP,1900h
  8. jr INITIALIZATION
  9.  
  10. ds 0x1838-$,0
  11.  
  12. INT: ;przerwanie: wcioiety klawisz nr 2, u?ytkownik wcytuje cyfre z hex
  13. EX AF, AF'
  14. ;IN A,(01) ;wczytuje do z hexów
  15. LD D,15 ;poczatek procedury zamiany binary -> gray
  16. ;SRL A ;przesuwa bity A o jeden w prawo bez przeniesienia
  17. ;AND 7 ;upewniamy sie ?e pierwszy bit jest zerem
  18. ;XOR D ;xor A z D, zapis do A, teraz ju? powinen bya w A w gray
  19. ;AND 15
  20. LD L,8 ;wynik w gray przechowujemy w L
  21. LD A,8
  22. OUT (01), A
  23. IN A, (01)
  24. BIT 4, A ;sprawdzamy, czy klawisz inkremetacji równie? wcioniety
  25. LD E, 0
  26. JR NZ, KONIEC_INT
  27. LD E, 1
  28.  
  29. KONIEC_INT: ;wychodzimy z INT
  30. EX AF, AF'
  31. EI
  32. RETI
  33.  
  34. ds 0x1860-$,0
  35.  
  36. INITIALIZATION:
  37. IM 1 ;tryb 1 przerwan
  38. EI
  39. LD A,8
  40. OUT (01),A ;przerwania w31czone
  41. ;IN A,(01)
  42. LD L,8
  43. ;LD A,15
  44. LD D,15 ;zamiana w gray
  45. ;SRL A
  46. ;AND 7
  47. ;XOR D
  48. ;AND 15
  49. ;LD L,A ;koniec zamiany, w L jest liczba z nastawników hex
  50.  
  51. LD E, 0 ;zerujemy rejestr E
  52.  
  53. GLOWNA_PETLA:
  54. ;LD A,L
  55. ;OUT (01), A wyswietla na lampkach zawartosc L
  56. IN A, (01) ;3adujemy do A stan przycisków
  57. BIT 4, A ;sprawdzamy, czy zosta3 wcioniety swith od inkremetnacji
  58. JR NZ, GLOWNA_PETLA ;jeoli nie, powtarzamy petle
  59. LD H, 250 ;licznik prób
  60. LD B, 200 ;licznik udanych prób
  61.  
  62.  
  63. DRGANIA_STYKOW:
  64.  
  65. DEC H ;zmniejsza H i ustawia znacznik Z
  66. JR Z, GLOWNA_PETLA ;jeoli H = 0 - klawisz nie wcioniety i wracamy do g3ównej petli
  67. IN A, (01) ;wczytujemy switcha
  68. BIT 4, A ;ustawiamy znaczik Z
  69. JR NZ, DRGANIA_STYKOW ;jeoli switch w tym momencie niewcioniety, DRGANIA_STYKOW od pocz1tku
  70. DEC B ;klawisz wcioniety, dekremenmtuje B i ustawia znacznik Z
  71. JR Z, DEKREMENTUJ_LICZNIK ;jeoli B = 0 -> klawis NAPRAWDE wcioniety i idY do etykiety INKREMENTUJ_LICZNIK
  72. LD A,40
  73. CZEKAJ: ;petla w petli - okazalo sie, ?e 200 zliczen na 250 to stanowczo za malo
  74. DEC A
  75. JR NZ, CZEKAJ
  76.  
  77. JR DRGANIA_STYKOW ;B jeszcze ró?ne od zera, od pocz1tku ta etykieta
  78.  
  79.  
  80. DEKREMENTUJ_LICZNIK:
  81. DI
  82. BIT 0, E ;sprawdzam, czy wcioniety podczas przerwania
  83. LD E, 0 ;zeruje flage
  84. JR NZ, DDD ;jeoli flaga = 1, nie inkrementuj i wyjdz do g3wonej petli
  85. DEC D ;zmiana na dec
  86.  
  87. LD A,D ;poczatek zamiany w gray : kopiuje D do A
  88. SRL A ;przesuwa bity A o jeden w prawo bez przeniesienia
  89. AND 7
  90. XOR D
  91. AND 15
  92. LD L,A
  93.  
  94. OUT (01), A ;wyswietla na lampkach zawartosc L
  95.  
  96. LD A,D
  97. CP -1 ;gdy D==16, Z=1 3aduj na nowo
  98. JR NZ, DDD ;ggdy nie ma potrzeby 3adowania wróa do g3ównej petli
  99.  
  100. LD D,15
  101. LD A,8
  102. LD L,A
  103. OUT (01), A
  104.  
  105.  
  106. DDD:
  107. EI ;aby po wcisnieciu klawisza nie zliaczlalo
  108. IN A,(01)
  109. BIT 4,A
  110. JR Z, DDD
  111. JP GLOWNA_PETLA ;wracamy do g3ównej petli
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement