Advertisement
Guest User

Untitled

a guest
May 24th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "io430fg4618.h"
  2. #include "msp430.h"  
  3.  
  4. NAME LCD_A
  5.  
  6. ;LCD_segmenty
  7. ; ----- przypisanie wartości poszczególnym segmentom wyświetlacza --------------
  8. ;             a
  9. ;             -
  10. ;         f | g | b
  11. ;             -
  12. ;         e |   | c
  13. ;             -   . h
  14. ;             d
  15.  
  16. a EQU 01h       ; EQU - przypisuje stałą wartość do a
  17. b EQU 02h
  18. c EQU 10h
  19. d EQU 04h
  20. e EQU 80h
  21. f EQU 20h
  22. g EQU 08h
  23. h EQU 40h ;0x80
  24.  ;_________________________________________________________
  25.  
  26.  
  27.  ORG 0x1200 ;początek rezerwacji pamięci  
  28.  
  29. ;rezerwacja przestrzeni dla 16bitowych liczb typu int
  30.                  
  31. sekundy DC16 1      
  32. minuty  DC16 1    
  33. godziny DC16 1
  34. ;_________________________________________________________
  35.  
  36. ;============================================================================
  37. ; init_lcd
  38. ;============================================================================
  39.  
  40.           PUBLIC init_lcd ; Declare symbol to be exported
  41.           RSEG CODE ; Code is relocatable
  42.          
  43. init_lcd;
  44.    
  45.  
  46.       MOV.B #0x7D,&LCDACTL      ; ustawienia LCD ( tryb mux 4 oraz uruchomienie modułu ( LCDFREQ_128 | | LCDMX1 | LCDMX0 | LCDSON | LCDON  ))      
  47.       MOV.B #0xFF,LCDAPCTL0     ; uruchomienie segnentów
  48.       MOV.B #0,LCDAPCTL1        ; wylaczenie kolejnych segmentow LCD
  49.       MOV.B #0x0008,LCDAVCTL0   ; wlaczenie wewnetrznego generatora ( LCDCPEN )
  50.       MOV.B #0x03,LCDAVCTL1     ; wlaczenie ustawienie napięcia
  51.       MOV.B #0x1C,&P5SEL        ; ustawienienie pinow 2 3 i 4 z portu 5 na funkcje COMx  
  52.       MOV.B #0x1C,&P5DIR        ; ustawienie pinow 2 3 i 4 z portu 5 jako wyjscia      
  53.  
  54.     CLR R4
  55.     CLR R5
  56.     CLR R6
  57.     CLR R7
  58.     CLR R8
  59.     CLR R9
  60.     CLR R10
  61.     CLR R11
  62.     CLR R12
  63.     CLR R13
  64.     CLR R14
  65.     CLR R15
  66.     CLR sekundy
  67.     CLR minuty
  68.     CLR godziny
  69.       ret
  70.      
  71.    
  72. ;============================================================================
  73. ; lcd_display_time
  74. ;============================================================================
  75.  
  76.           PUBLIC lcd_display_time ; Declare symbol to be exported
  77.           RSEG CODE               ; Code is relocatable
  78. lcd_display_time;
  79.     CLR R4
  80.     CLR R5
  81.     CLR R6
  82.     CLR R7
  83.     CLR R8
  84.     CLR R9
  85.     CLR R10
  86.     CLR R11
  87.   ;  CLR R12
  88.   ;  CLR R13
  89.   ;  CLR R14
  90.     CLR R15
  91.     CLR sekundy
  92.     CLR minuty
  93.     CLR godziny
  94.  
  95.    
  96. MOV R12,sekundy             ; przeniesienie pierwszego argumentu funkcji z rejestru R12 do sekundy
  97. MOV R13,minuty              ; przeniesienie drugiego argumentu funkcji z rejestru R13 do minuty
  98. MOV R14,godziny             ; przeniesienie drugiego argumentu funkcji z rejestru R14 do godziny
  99.  
  100. ; ********* blok przekształcający wartość dziesiętną w BCD, w celu wyświetlenia na LCD_A sekund *********
  101. dziesiec:    
  102.     CMP #0,sekundy                
  103.     JL dziesiec_petla                   ; skok do petli  
  104.     CMP #0xA,sekundy              ; sprawdzenie czy sekundy większe od  10  
  105.     JGE dziesiec_petla                  ; jesli wynik wiekszy lub rowny 0 to skok do pętli    
  106.     JMP jeden                           ; skok do jeden
  107. dziesiec_petla:
  108.     INC R4                       ; inkrementacja R4  
  109.     SUB #0xA, sekundy             ; odjecie 100 od wyniku      
  110.     JMP dziesiec                        ; skok bo może być kolejne 10
  111.    
  112. jeden:
  113.     MOV sekundy, R5              ; wpisanie sekundy do R5
  114.     JMP wyswietl_wynik  
  115. ; *******************************************************************************************************  
  116.    
  117. ; ********* blok przekształcający wartość dziesiętną w BCD, w celu wyświetlenia na LCD_A minut **********  
  118. dziesiec_2:
  119.        
  120.     CMP #0,minuty                
  121.     JL dziesiec_petla_2                 ; skok do petli  
  122.     CMP #0xA,minuty                ; sprawdzenie czy minuty większe od  10  
  123.     JGE dziesiec_petla_2                ; jesli wynik wiekszy lub rowny 0 to skok do pętli    
  124.     JMP jeden_2                         ; skok do jeden
  125. dziesiec_petla_2:
  126.     INC R6                          ; inkrementacja R6
  127.     SUB #0xA,minuty                 ; odjecie 100 od wyniku      
  128.     JMP dziesiec_2                      ; skok bo może być kolejne 10
  129.    
  130. jeden_2:
  131.     MOV minuty, R7                  ; wpisanie minuty do R7
  132.     JMP wyswietl_wynik_2  
  133. ; *******************************************************************************************************  
  134.  
  135. ; ********* blok przekształcający wartość dziesiętną w BCD, w celu wyświetlenia na LCD_A godzin **********  
  136. dziesiec_3:
  137.        
  138.     CMP #0,godziny                
  139.     JL dziesiec_petla_3                 ; skok do petli  
  140.     CMP #0xA,godziny                ; sprawdzenie czy godziny większe od  10  
  141.     JGE dziesiec_petla_3                ; jesli wynik wiekszy lub rowny 0 to skok do pętli    
  142.     JMP jeden_3                         ; skok do jeden
  143. dziesiec_petla_3:
  144.     INC R8                          ; inkrementacja R8
  145.     SUB #0xA,godziny                 ; odjecie 100 od wyniku      
  146.     JMP dziesiec_3                      ; skok bo może być kolejne 10
  147.    
  148. jeden_3:
  149.     MOV godziny, R9                  ; wpisanie godziny do R9
  150.     JMP wyswietl_wynik_3  
  151. ; *******************************************************************************************************  
  152.  
  153.    
  154.        
  155. wyswietl_wynik:                 ; wyświetlenie na ekranie LCD sekund
  156.      
  157.     MOV.B wysw(R4),  LCDM2      
  158.     MOV.B wysw(R5),  LCDM1
  159.     MOV #10,R10
  160.     MOV.B wysw(R10), LCDM5      ; wyświetlenie znaku 0xB8 'h'( dziesiąta pozycja w tabeli, dlatego do R10 wpisane jest 10 )
  161. JMP dziesiec_2                  ; skok do przekształcenia minut z wartości dziesiętnej na BCD
  162.  
  163.     wyswietl_wynik_2:           ; wyświetlenie na ekranie LCD minut
  164.     MOV.B wysw(R6),   LCDM4      
  165.     MOV.B wysw_2(R7), LCDM3  
  166.    
  167.  JMP dziesiec_3
  168.  
  169.     wyswietl_wynik_3:            ; wyświetlenie na ekranie LCD godzin
  170.     MOV.B wysw(R9), LCDM7      
  171.     MOV.B wysw(R8), LCDM6
  172.    
  173.     RET  
  174.    
  175.    
  176.  
  177. ;----- utworzenie tablicy znaków LCD do wyświetlenia sekund -----------------------------------------------------------
  178. wysw:                   ;       Przekształcenie wyniku na kod BCD możliwy do wyświetlenia
  179. DB a+b+c+d+e+f          ;0      0B7h, DB - ośmio bitowa stała
  180. DB b+c                  ;1      012h  
  181. DB a+b+d+e+g            ;2      08Fh
  182. DB a+b+c+d+g            ;3      01Fh
  183. DB b+c+f+g              ;4      03Ah
  184. DB a+c+d+f+g            ;5      03Dh
  185. DB a+c+d+e+f+g          ;6      0BDh
  186. DB a+b+c+f              ;7      013h
  187. DB a+b+c+d+e+f+g        ;8      0BFh
  188. DB a+b+c+d+f+g          ;9      03Fh
  189. DB 0xB8                 ;h
  190.  
  191. ;------------------------------------------------------------------------------------------------
  192.  
  193. ;----- utworzenie tablicy znaków LCD do wyświetlenia minut -----------------------------------------------------------
  194. wysw_2:                   ;        Przekształcenie wyniku na kod BCD możliwy do wyświetlenia
  195. DB 0xF7                   ;0.      DB - ośmio bitowa stała
  196. DB 0x52                   ;1.      
  197. DB 0xCF                   ;2.      
  198. DB 0x5F                   ;3.      
  199. DB 0x7A                   ;4.      
  200. DB 0x7D                   ;5.      
  201. DB 0xFD                   ;6.      
  202. DB 0x53                   ;7.      
  203. DB 0xFF                   ;8.      
  204. DB 0x7F                   ;9.  
  205.  
  206. ;------------------------------------------------------------------------------------------------
  207.  
  208.  
  209. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement