Advertisement
Guest User

Untitled

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