Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. ;************************************************
  2. ;LEKCJA 6 - WYŚWIETLACZ 7-SEGMENTOWY
  3. ;PRZYKŁAD 3 - PRZEGLĄDANIE WYŚWIETLACZA
  4. ;************************************************
  5. B2R7 EQU 23
  6. SEG_ON EQU P1.6 ;włączenie wyświetlacza 7-segm.
  7.  
  8. ;Stałe używane w programie
  9. ONE EQU 006H ;kod cyfry 1
  10. TWO EQU 05BH ;kod cyfry 2
  11. THREE EQU 04FH ;kod cyfry 3
  12. FOUR EQU 066H ;kod cyfry 4
  13. FIVE EQU 06DH ;kod cyfry 5
  14. SIX EQU 07DH ;kod cyfry 6
  15. SEVEN EQU 007H ;kod cyfry 7
  16.  
  17. ;Pamięć wewnętrzna RAM
  18. DISPLAY EQU 30H
  19.  
  20. ;**************************************
  21. LJMP START
  22.  
  23. ORG 0BH
  24. LJMP INT_T0
  25.  
  26. ORG 100H
  27. START:
  28. MOV TMOD,#1
  29. SETB RS1
  30. MOV R7,#20
  31. MOV B2R7,#20
  32. CLR RS1
  33. MOV TL0,#00H
  34. MOV TH0,#4CH
  35.  
  36. SETB EA
  37. SETB ET0
  38. SETB TR0
  39.  
  40.  
  41. MOV DISPLAY,#7 ;wpisz kody cyfr
  42. MOV DISPLAY+1,#5 ;dla kolejnych
  43. MOV DISPLAY+2,#9 ;wskaźników
  44. MOV DISPLAY+3,#5
  45. MOV DISPLAY+4,#3
  46. MOV DISPLAY+5,#2
  47. MOV DISPLAY+6,#SEVEN
  48. MOV SP,#DISPLAY+6
  49.  
  50. MOV R4,#142
  51. MOV SP,#DISPLAY+6
  52.  
  53. LOOP_DISP: ;ustawienie danych do
  54. ;wyświetlania na 1-szym
  55. ;wskaźniku
  56. MOV R0,#DISPLAY ;adres pobierania kodów
  57. MOV R2,#6 ;licznik-il. wskaźników
  58. MOV R3,#00000001B ;wybór wskaźnika
  59. ;-kod 1 z 8
  60.  
  61. LOOP:
  62. SETB SEG_ON ;wyłącz poprzedni
  63. ;wskaźnik
  64.  
  65. MOV R1,#CSDS ;adres wyboru wskaźnika
  66. MOV A,R3 ;aktualny wskaźnik (1z8)
  67. MOVX @R1,A ;wpisz nr wskaźnika
  68.  
  69. RL A ;obrót w lewo - numer
  70. MOV R3,A ;następnego wskaźnika
  71. ;(kod 1 z 8)
  72.  
  73. MOV R1,#CSDB ;adres danych wskaźnika
  74. MOV A,@R0 ;kod aktualnego wskaźnika
  75.  
  76. LCALL GET_COD7
  77.  
  78. CJNE R3, #00001000B,OMIN
  79. SETB ACC.7
  80.  
  81. OMIN:
  82. CJNE R3, #00100000B,OMIN1
  83. SETB ACC.7
  84.  
  85.  
  86.  
  87.  
  88. OMIN1:
  89. MOVX @R1,A ;wpisz kod segmentów
  90.  
  91. INC R0 ;adres pobierania kodu
  92. ;dla następnego wskaźnika
  93.  
  94. CLR SEG_ON ;włączenie wskaźnika
  95.  
  96. MOV A,#1 ;czas 1ms - świecenie
  97. LCALL DELAY_MS ;jednego wskaźnika
  98.  
  99.  
  100. DJNZ R2,LOOP ;kolejne świecenie
  101. DJNZ R4, LOOP_DISP
  102. MOV R4, 142
  103. CPL P1.7
  104. ;siedmiu wskaźników
  105.  
  106. SJMP LOOP_DISP ;zacznij od wskaźnika 1
  107.  
  108. INT_T0:
  109. SETB RS1
  110. ORL TL0,#00H
  111. MOV TH0,#4CH
  112. DJNZ R7,EXIT
  113. MOV R7,#20
  114.  
  115. CPL P1.7
  116.  
  117. MOV R0,#DISPLAY
  118. INC @R0
  119. CJNE @R0,#10,EXIT
  120. MOV @R0,#0
  121.  
  122. INC R0
  123. INC @R0
  124. CJNE @R0,#6,EXIT
  125. MOV @R0, #0
  126.  
  127. INC R0
  128. INC @R0
  129. CJNE @R0,#10,EXIT
  130. MOV @R0, #0
  131.  
  132. INC R0
  133. INC @R0
  134. CJNE @R0,#6,EXIT
  135. MOV @R0, #0
  136. ;------------------------------------------------------------------------------
  137.  
  138. INC R0
  139. INC @R0
  140. CJNE @R0,#4,DALEJ
  141. MOV R5,DISPLAY+5
  142. CJNE R5,#12,DALEJ
  143. SJMP GODZ_00
  144. DALEJ:
  145. CJNE @R0,#10,EXIT
  146. MOV @R0,#0
  147. ;-------------------------------------------------------------------------------
  148. INC R0
  149. INC @R0
  150. ;CJNE @R0,#3,EXIT
  151. SJMP EXIT
  152. GODZ_00:
  153. CLR A
  154. MOV DISPLAY,A
  155. MOV DISPLAY+1,A
  156. MOV DISPLAY+2,A
  157. MOV DISPLAY+3,A
  158. MOV DISPLAY+4,A
  159. MOV DISPLAY+5,A
  160. EXIT:
  161. CLR RS1
  162.  
  163. RETI
  164.  
  165. ;**************************************
  166. ;Podprogram zamienia cyfrę na kod 7-segmentowy
  167. GET_COD7:
  168. ANL A,#0FH ;tabela kodów 0..15
  169. INC A ;pomiń rozkaz RET
  170. MOVC A,@A+PC ;pobierz kod
  171. RET
  172.  
  173. COD_7SEG:
  174. DB 03FH ;kod znaku 0
  175. DB 006H ;kod znaku 1
  176. DB 05BH ;kod znaku 2
  177. DB 04FH ;kod znaku 3
  178. DB 066H ;kod znaku 4
  179. DB 06DH ;kod znaku 5
  180. DB 07DH ;kod znaku 6
  181. DB 007H ;kod znaku 7
  182. DB 07FH ;kod znaku 8
  183. DB 06FH ;kod znaku 9
  184. DB 077H ;kod znaku A
  185. DB 07CH ;kod znaku b
  186. DB 039H ;kod znaku C
  187. DB 05EH ;kod znaku d
  188. DB 079H ;kod znaku E
  189. DB 071H ;kod znaku F
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement