Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. DB7 EQU P2.5
- 2. DB6 EQU P2.4
- 3. DB5 EQU P2.3
- 4. DB4 EQU P2.2
- 5. RS EQU P2.0
- 6. E EQU P2.1
- 7. ORG 0h
- 8. LJMP USTAW ;przygotowanie wyświetlacza LCD
- 9. ORG 003H
- 10. LJMP Przerwanie ;skok do przerwania
- 11. ORG 000BH ;przerwanie z układu czasowo licznikowego T0, układ zgłasza
- 12. CLR TR0 ;zatrzymanie licznika 0
- 13. CLR TF0 ;wyczyszczenie flagi licznika T0
- 14. INC R6 ;inkrementacja zawartości rejestru R1
- 15. CJNE R6, #1AH, Kontynuuj ;przy wartości 1Ah, skok do Kontynuuj
- 16.
- 17. ACALL SEGMENT_DISPLAY ;pokazanie liczby na wyświetlaczu 7segmentowym
- 18. ACALL LCD_DISPLAY ;pokazanie liczby na wyświetlaczu LCD
- 19. CJNE R0, #09H, Inkrementuj ;jeśli zawartość rejestru r0 nie osiągnęła wartości 09h, skok do etykiety INCR
- 20.
- 21. MOV R0, #0 ;czyszczenie rejestru R0
- 22.
- 23. Wyzeruj:
- 24. MOV R6, #0 ;reset R1
- 25. SJMP Kontynuuj ;skok do etykiety Kontynuujującej licznik T0
- 26.
- 27. Inkrementuj:
- 28. INC R0 ;inkrementacja licznika
- 29. SJMP Wyzeruj
- 30.
- 31. Kontynuuj:
- 32. SETB TR0 ;Kontynuuj licznika T0
- 33. RETI ;powrót z procedury przerwania
- 34.
- 35. START:
- 36. SETB EA ;zezwolenie na przerwania
- 37. SETB ET0
- 38. SETB EX0
- 39. SETB IT0
- 40. ;zezwolenie na przerwania od układu czasowo - licznikowego T0
- 41. MOV TMOD, #00000001B ;ustawienie układu czasowo-licznikowego T0 w tryb 1
- 42. MOV TL0, #11011111B
- 43. MOV TH0, #10110001B ;załadowana wartość B1DFh
- 44. MOV R0, #00H ;wyzerowanie zawartości rejestru r0
- 45. MOV R6, #00H ;wyzerowanie zawartości rejestru r1
- 46. SETB TR0 ;Kontynuuj licznika T0
- 47. SJMP $ ;oczekuj na przerwanie
- 48. Przerwanie: MOV R3, A ;zapisanie wartości z akumulatora
- 49. CPL P3.0 ;negacja P3.0
- 50. CPL TR0 ;negacja flagi układu czasowo-licznikowego
- 51. MOV A, R3 ;przywrócenie poprzedniej wartości akumulatora
- 52. RETI ;powrót z procedury przerwania
- 53.
- 54. SEGMENT_DISPLAY:
- 55. MOV A, R0
- 56. MOV P1, #01h ; uruchomienie pierwszego wyświetlacza
- 57. MOV DPTR, #DIGITS ; przeniesienie adresu pierwszego elementu tablicy do DPTR
- 58. MOVC A, @A+DPTR ; dodanie liczby z R0 (liczba z licznika) do adresu
- 59. MOV P0, A ; wyświetlenie odpowiedniej liczby na wyświetlaczu
- 60. RET
- 61.
- 62. DIGITS:DB 0C0h, 0F9h, 0A4h, 0B0h, 099h, 092h, 082h, 0F8h, 080h, 090h
- 63.
- 64.
- 65. ORG 200H
- 66. USTAW: ACALL LCD_INIT
- 67. JMP START
- 68. RET
- 69.
- 70. LCD_INIT:
- 71. ;MOV R1, #0x32
- 72. ;MOV R2, #0x00
- 73. MOV A, #0x20
- 74. LCALL WRITE_INSTRUCTION
- 75. LCALL DELAY100MS
- 76.
- 77. LCALL WRITE_INSTRUCTION
- 78. MOV A, #0xa0
- 79. LCALL WRITE_INSTRUCTION
- 80.
- 81. ;MOV R1, #0x32
- 82. LCALL DELAY100MS
- 83.
- 84. MOV A, #0x00
- 85. LCALL WRITE_INSTRUCTION
- 86. MOV A, #0x60
- 87. LCALL WRITE_INSTRUCTION
- 88. ;MOV R1, #0x32
- 89. LCALL DELAY100MS
- 90.
- 91. MOV A, #0x00
- 92. LCALL WRITE_INSTRUCTION
- 93. MOV A, #0xf0
- 94. LCALL WRITE_INSTRUCTION
- 95. ;MOV R1, #0x32
- 96. LCALL DELAY100MS
- 97. RET
- 98. LCD_DISPLAY:
- 99. LCALL CLEAR
- 100. LCALL DELAY100MS
- 101. MOV A, R0
- 102. ADD A, #0x30
- 103. LCALL WRITE_CHARACTER
- 104. RET
- 105. SEND_NIBBLE:
- 106. MOV C, ACC.7
- 107. MOV DB7, C
- 108. MOV C, ACC.6
- 109. MOV DB6, C
- 110. MOV C, ACC.5
- 111. MOV DB5, C
- 112. MOV C, ACC.4
- 113. MOV DB4, C
- 114. RET
- 115. CLEAR:
- 116. LCALL DELAY100MS
- 117. MOV A, #0x00
- 118. LCALL WRITE_INSTRUCTION
- 119. LCALL DELAY100MS
- 120. MOV A, #0x10
- 121. LCALL WRITE_INSTRUCTION
- 122. RET
- 123.
- 124. WRITE_CHARACTER:
- 125. SETB RS
- 126. LCALL SEND_NIBBLE
- 127. SETB E
- 128. CLR E
- 129. SWAP A
- 130. LCALL SEND_NIBBLE
- 131. SETB E
- 132. CLR E
- 133. RET
- 134.
- 135. WRITE_INSTRUCTION:
- 136. CLR RS
- 137. LCALL SEND_NIBBLE
- 138. SETB E
- 139. CLR E
- 140. RET
- 141.
- 142. DELAY:
- 143. DJNZ R1, DELAY
- 144. MOV R1, #100
- 145. INC R2
- 146. DJNZ R2, DELAY
- 147. RET
- 148. DELAY1MS:
- 149. MOV R7, #250
- 150. DJNZ R7, $
- 151. MOV R7, #247
- 152. DJNZ R7, $
- 153. RET
- 154. DELAY100MS:
- 155. MOV R6, #99
- 156. LOOP:
- 157. LCALL DELAY1MS
- 158. DJNZ R6, LOOP
- 159. MOV R6, #250
- 160. DJNZ R6, $
- 161. MOV R6, 147
- 162. DJNZ R6, $
- 163. NOP
- 164. RET
- 165.
- 166. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement