Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 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, #00001000B,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. ;------------------------------------------------------------------------------
  125.  
  126. INC R0
  127. INC @R0
  128. CJNE @R0,#4,DALEJ
  129. MOV R5,DISPLAY+5
  130. CJNE R5,#12,DALEJ
  131. SJMP GODZ_00
  132. DALEJ:
  133. CJNE @R0,#10,EXIT
  134. MOV @R0,#0
  135. ;-------------------------------------------------------------------------------
  136. INC R0
  137. INC @R0
  138. ;CJNE @R0,#3,EXIT
  139. SJMP EXIT
  140. GODZ_00:
  141. CLR A
  142. MOV DISPLAY,A
  143. MOV DISPLAY+1,A
  144. MOV DISPLAY+2,A
  145. MOV DISPLAY+3,A
  146. MOV DISPLAY+4,A
  147. MOV DISPLAY+5,A
  148. EXIT:
  149. CLR RS1
  150.  
  151. RETI
  152.  
  153. ;**************************************
  154. ;Podprogram zamienia cyfrę na kod 7-segmentowy
  155. GET_COD7:
  156. ANL A,#0FH ;tabela kodów 0..15
  157. INC A ;pomiń rozkaz RET
  158. MOVC A,@A+PC ;pobierz kod
  159. RET
  160.  
  161. COD_7SEG:
  162. DB 03FH ;kod znaku 0
  163. DB 006H ;kod znaku 1
  164. DB 05BH ;kod znaku 2
  165. DB 04FH ;kod znaku 3
  166. DB 066H ;kod znaku 4
  167. DB 06DH ;kod znaku 5
  168. DB 07DH ;kod znaku 6
  169. DB 007H ;kod znaku 7
  170. DB 07FH ;kod znaku 8
  171. DB 06FH ;kod znaku 9
  172. DB 077H ;kod znaku A
  173. DB 07CH ;kod znaku b
  174. DB 039H ;kod znaku C
  175. DB 05EH ;kod znaku d
  176. DB 079H ;kod znaku E
  177. DB 071H ;kod znaku F
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement