Advertisement
Guest User

Untitled

a guest
May 29th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 3.17 KB | None | 0 0
  1.                            LJMP START
  2.  
  3.         ORG 000BH
  4.         MOV TH0, #88H
  5.         MOV TL0, #00H
  6.         DEC R0
  7.         RETI
  8.  
  9. LCDstatus equ 0FF2EH
  10. LCDControl equ 0FF2CH
  11. LCDdataWR equ 0FF2DH
  12.  
  13.  
  14. #define HOME 0x80
  15. #define INITDISP 0x38
  16. #define HOM2 0xc0
  17. #define LCDON 0x0e
  18. #define CLEAR 0x01
  19.  
  20. P5 EQU 0F8H
  21. P7 EQU 0DBH
  22.  
  23. ORG 0100H
  24.  
  25. LCDcntrlWR MACRO x
  26.         LOCAL loop
  27. loop: MOV DPTR,#LCDstatus
  28.         MOVX A,@DPTR
  29.         JB ACC.7,loop
  30.  
  31.         MOV DPTR,#LCDcontrol
  32.         MOV A,x
  33.         MOVX @DPTR,A
  34.         ENDM
  35.  
  36. LCDcharWR MACRO
  37.     LOCAL tutu
  38.     PUSH ACC
  39.  
  40. tutu: MOV DPTR,#LCDstatus
  41.         MOVX A,@DPTR
  42.         JB ACC.7, tutu
  43.  
  44.         MOV DPTR,#LCDdataWR
  45.         POP ACC
  46.         MOVX @DPTR,A
  47.         ENDM
  48.  
  49. init_LCD MACRO
  50.     LCDcntrlWR #INITDISP
  51.     LCDcntrlWR #CLEAR
  52.     LCDcntrlWR #LCDON
  53.     ENDM
  54.  
  55. START:
  56. MOV DPTR,#8000H
  57. MOV A,#'0'
  58. MOVX @DPTR,A
  59. MOV DPTR,#8001H
  60. MOV A,#'1'
  61. MOVX @DPTR,A
  62. MOV DPTR,#8002H
  63. MOV A,#'2'
  64. MOVX @DPTR,A
  65. MOV DPTR,#8003H
  66. MOV A,#'3'
  67. MOVX @DPTR,A
  68. MOV DPTR,#8004H
  69. MOV A,#'4'
  70. MOVX @DPTR,A
  71. MOV DPTR,#8005H
  72. MOV A,#'5'
  73. MOVX @DPTR,A
  74. MOV DPTR,#8006H
  75. MOV A,#'6'
  76. MOVX @DPTR,A
  77. MOV DPTR,#8007H
  78. MOV A,#'7'
  79. MOVX @DPTR,A
  80. MOV DPTR,#8008H
  81. MOV A,#'8'
  82. MOVX @DPTR,A
  83. MOV DPTR,#8009H
  84. MOV A,#'9'
  85. MOVX @DPTR,A
  86.  
  87.  
  88.  
  89. init_LCD
  90. MOV TMOD, #01H
  91. MOV TH0, #8CH
  92. MOV TL0, #00H
  93. SETB TR0
  94. MOV IE, #82H
  95. ;MOV A, #00H
  96. ;MOV P1, A
  97. MOV B, #00H
  98. MOV R3, #00H
  99. MOV R4, #0AH
  100. MOV R5, #00H
  101. MOV R6, #00H
  102. DALEJ:
  103.     MOV R0, #20H        ;odmierza 32 odliczenia czasu ~sekunde
  104. CZEKAM:
  105.     MOV A, R0       ;jak odmierzy, to przechodzi dalej
  106.     JNZ CZEKAM
  107.     init_LCD        ;zeruje wyswietlacz
  108.    
  109.    
  110.     MOV A, R6
  111.     MOV DPH, #80H
  112.     MOV DPL, A     
  113.     MOVX A,@DPTR       
  114.     LCDcharWR
  115.     MOV A, ':'
  116.     LCDcharWR
  117.     MOV B, R5       ;przypisujemy wartosc z R5 do B
  118.     MOV A, R3       ;przypisujemy wartosc z R3 do A zeby wyswietlic odpowiednia cyfre
  119.     MOV DPH, #80H
  120.     MOV DPL, A      ;ustawiamy DPTR na odpowiednia wartosc
  121.     MOVX A,@DPTR        ;odczytujemy z DPTR'a odpowiednia cyfre do wyswietlenia
  122.     LCDcharWR       ;drukujemy cyfre dla dziesiatek sekund
  123.    
  124.    
  125.    
  126.     JMP CONTINUE
  127.     DALEJ2:
  128.     JMP DALEJ
  129.     CONTINUE:
  130.    
  131.     MOV DPH, #80H
  132.     MOV DPL, B      ;ustawiamy DPTR na odpowiednia cyfre do odczytania dla B
  133.     MOVX A,@DPTR
  134.     LCDcharWR       ;drukujemy cyfre dla sekund
  135.    
  136.     CJNE R6, #02H, ELO3 ;sprawdza, czy wartosc R6 jest równa 2. Jesli tak to wychodzi z programu, bo odliczyl 2 minuty
  137.     JMP EXIT
  138.     ELO3:
  139.    
  140.    
  141.     INC B           ;inkrementuje B  (B jest cyfra dla sekund)
  142.     MOV R5, B       ;przerzuca B do rejestru R5
  143.     CJNE R5, #0AH, ELO  ;sprawdza, czy wartosc B jest równa 10. Jesli tak to inkrementuje R3 (R3 odpowiada za cyfre dziesiatek sekund)
  144.     INC R3
  145.     MOV R5, #00H        ;po inkrementacji R3, zeruje R5, które potem przypiszemy do B
  146.     ELO:
  147.    
  148.     CJNE R3, #06H, ELO2 ;sprawdza, czy wartosc R3 jest równa 6. Jesli tak to inkrementuje R6 (R6 odpowiada za cyfre minut)
  149.     INC R6
  150.     MOV R3, #00H        ;po inkrementacji R6, zeruje R3
  151.     ELO2:
  152.    
  153.    
  154.     MOV R1, #7FH    ;\
  155.     MOV A, R1       ; |
  156.     MOV P5, A       ;  \
  157.     MOV A, P7       ;   |
  158.     ANL A, R1       ;    >>> sprawdza, czy nie nacisnelismy czegosc z pierwszej kolumny, jesli tak, to resetuje licznik
  159.     MOV R2, A       ;   |
  160.     CLR C           ;  /
  161.     SUBB A, R1      ; |
  162.     JZ DALEJ2       ;/
  163.     MOV B, #00H
  164.     MOV R3, #00H
  165.     MOV R6, #00H
  166.     JMP DALEJ2
  167.  
  168.  
  169. EXIT:
  170. NOP
  171. NOP
  172. NOP
  173. JMP $
  174. END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement