Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. .NOLIST
  2. .INCLUDE "m128def.inc"
  3. .LIST
  4. .CSEG
  5. .EQU Output = 16
  6. .EQU Input = 0
  7.  
  8. ;portB => value a aktivace sloupcu
  9. ;portD => pozice a ovladani rezimu periferie
  10. ;0b1111(radky)1111(sloupce)
  11.  
  12. .ORG 0x00 JMP RESET
  13. .ORG 0x1E JMP OBSLUHA
  14.  
  15. .DEF Control = R16 ;registr ridici funkci periferie
  16. .DEF Sloupec = R17 ;registr pro aktivaci sloupce
  17. .DEF RealStav = R18 ;registr pro cteni radku
  18. .DEF DefStav = R19 ;registr pro definovane stavy klavesnice
  19. .DEF Hodnota1 = R20 ;hodnoty segmentu (1 stiskle tlacitko)
  20. .DEF Hodnota2 = R21 ;hodnota segmentu (cislo o 1 mensi)
  21. .DEF Pocet = R22
  22.  
  23. .MACRO VstupKlavesnice ;vstupy z klavesnice
  24. LDI Sloupec,0b11111101
  25. LDI DefStav,@0
  26. OUT PORTB,Sloupec
  27. ; CALL DELAY
  28. IN RealStav,pinB
  29. CP RealStav,DefStav
  30. BREQ END1
  31. BRNE END2
  32. END1:
  33. IN Sloupec,pinB
  34. CPI Sloupec,@0
  35. BRNE END1
  36. JMP @1
  37. END2:
  38. .ENDMACRO
  39.  
  40. .MACRO Plneni
  41. LDI XH,0x01
  42. LDI XL,0x70
  43. LDI Hodnota1,@0
  44. LDI Hodnota2,@1
  45. ST X+,Hodnota2
  46. ST X+,Hodnota1
  47. ST X+,Hodnota2
  48. LDI XH,0x01
  49. LDI XL,0x70
  50. LDI ZL,low(POZICE*2)
  51. LDI ZH,high(POZICE*2)
  52. .ENDMACRO
  53.  
  54. RESET:
  55. LDI R16,low(RAMEND) ;zasobnik
  56. OUT SPL,R16
  57. LDI R16,high(RAMEND)
  58. OUT SPH,R16
  59. LDI Pocet,0
  60. CALL TIMER
  61. VSTUP:
  62. SEI
  63. LDI R16,0xFF
  64. OUT DDRD,R16
  65. LDI R16,0x0F
  66. OUT DDRB,R16
  67. LDI Control,Input
  68. OUT PORTD,Control
  69.  
  70. ;nekonecna smycka nacitani vstupu
  71. VSTUPNIMOD:
  72. VstupKlavesnice 0b11101101,ROZRAZENI1
  73. VstupKlavesnice 0b11011101,ROZRAZENI2
  74. VstupKlavesnice 0b10111101,ROZRAZENI3
  75. VstupKlavesnice 0b01111101,ROZRAZENI4 ;cisteni displeje
  76. JMP VSTUPNIMOD
  77.  
  78. ROZRAZENI1:
  79. Plneni 0b10100100,0b11111001
  80. JMP VSTUPNIMOD
  81.  
  82. ROZRAZENI2:
  83. Plneni 0b10010010,0b10011001
  84. JMP VSTUPNIMOD
  85.  
  86. ROZRAZENI3:
  87. Plneni 0b10000000,0b11111000
  88. JMP VSTUPNIMOD
  89.  
  90. ROZRAZENI4:
  91. Plneni 0xFF,0xFF
  92. LDI R16,3
  93. LDI ZL,low(POZICE*2)
  94. LDI ZH,high(POZICE*2)
  95. CISTENI:
  96. LDI R17,0xFF
  97. LPM R18,Z+
  98. OUT PORTD,R18
  99. OUT PORTB,R17
  100. DEC R16
  101. BRNE CISTENI
  102. JMP VSTUPNIMOD
  103.  
  104. TIMER:
  105. LDI R16,0b00001110
  106. OUT TCCR0,R16
  107. LDI R16,0x3E
  108. OUT OCR0,R16
  109. LDI R16,0b00000010
  110. OUT TIMSK,R16
  111. RET
  112.  
  113. POZICE:
  114. .DB 0b11010011,0b11010111,0b11011011
  115.  
  116. OBSLUHA:
  117. INC Pocet
  118. CPI Pocet,4
  119. BREQ END3
  120. LDI R16,0xFF
  121. OUT DDRD,R16
  122. LDI R16,0xFF
  123. OUT DDRB,R16
  124. LDI Control,Output
  125. OUT PORTD,Control
  126. OBSLUHA1:
  127. LPM R16,Z+
  128. OUT PORTD,R16
  129. LD R16,X+
  130. OUT PORTB,R16
  131. JMP END4
  132. END3:
  133. LDI Pocet,0
  134. LDI ZL,low(POZICE*2)
  135. LDI ZH,high(POZICE*2)
  136. JMP OBSLUHA
  137. END4:
  138. RETI
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement