⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fet4xx_rtcwlcd.s43

📁 430系列开发之MSP430FE42x开发代码实例
💻 S43
📖 第 1 页 / 共 2 页
字号:
              rla    R14                       ;position for word table (2 bytes per char)
              mov.b  R12,LCDM2(R14)            ;low byte to LCD
              swpb   R12
              mov.b  R12,LCDM3(R14)            ;high byte to LCD
              add    #2,R14                    ;increase R14 (LCD mem pointer) 

              ret

_setPoint:
setPoint
              rla    R12                       ;position for word table (2 bytes per char)
              bis.b  #dp,LCDM2(R12)            ;low byte to LCD
              ret

;-------------------------------------------------------------------------------
_SetupClock:
SetupClock    ;Configure modules and control registers 
;-------------------------------------------------------------------------------
_SetupLCD:      
SetupLCD      
              mov.b   #LCDON+LCD4MUX+LCDP2,&LCDCTL ; STK LCD 4Mux, S0-S15
#ifdef P5SEL_
              mov.b  #0FCh,&P5SEL              ; Enable R(LCD) + COM Lines
#endif

SetupBT       mov.b  #BT_ADLY_1000,&BTCTL      ;Basic Timer interrupt = 1 second
              bis.b  #BTFRFQ1,&BTCTL           ;set fLCD = ACLK / 128
              mov.b  #BTIE,&IE2                ;enable Basic Timer interrupt
              
ClearRAM      
              mov.b  #00h,SEC                  ;preload SEC        # rolls over
              mov.b  #00h,MIN                  ;preload MIN        # to 12:00 @     
              mov.b  #012h,HOUR                ;preload HOUR       # 1st second

              mov.b  #01h,DAY                  ;preload DAY
              mov.b  #01h,MONTH                ;preload MONTH
              mov.b  #03h,YEAR                 ;preload YEAR


ClearLCD      mov    #20,R15                   ;20 LCD memory bytes to clear
Clear1        mov.b  #0,LCDM1(R15)             ;write zeros in LCD RAM locations
                                               ;so clear display
              dec    R15                       ;all LCD mem clear?
              jc     Clear1                    ;more LCD mem to clear, use JC
                                               ;to get memory location 0  
              ret          


;-------------------------------------------------------------------------------
;             Basic Timer causes 1 second interrupt. Mode bits changed on stack
;             so CPU is returned in active upon return from the interrupt
;-------------------------------------------------------------------------------
BT_ISR
              
              call   #UpdateClock              ;update hours and minutes each
                                               ;second even if not displayed 
              reti


;-------------------------------------------------------------------------------
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; LCD  Definitions
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

LCD_TYPE 
; Top Digit at LCD
;SB LCD
ta      equ     10h     
tb      equ     01h
tc      equ     04h
td      equ     08h
te      equ     40h
tf      equ     20h
tg      equ     02h
tdp     equ     80h

_TLCD_Tab:
TLCD_Tab DB   ta+tb+tc+td+te+tf            ; displays "0"
         DB   tb+tc                        ; displays "1"
         DB   ta+tb+td+te+tg               ; displays "2"
         DB   ta+tb+tc+td+tg               ; displays "3"
         DB   tb+tc+tf+tg                  ; displays "4"
         DB   ta+tc+td+tf+tg               ; displays "5"
         DB   ta+tc+td+te+tf+tg            ; displays "6"
         DB   ta+tb+tc                     ; displays "7"
         DB   ta+tb+tc+td+te+tf+tg         ; displays "8"
         DB   ta+tb+tc+td+tf+tg            ; displays "9"
         DB   ta+tb+tc+te+tf+tg            ; displays "A"
         DB   tc+td+te+tf+tg               ; displays "B" 
         DB   ta+td+te+tf                  ; displays "C"
         DB   tb+tc+td+te+tg               ; displays "D" 
         DB   ta+td+te+tf+tg               ; displays "E"
         DB   ta+te+tf+tg                  ; displays "F"

         even                              ; succeeding .text sections must be even aligned! 

;SB LCD
a       equ     08h     
b       equ     04h
c       equ     02h
d       equ     01h
e       equ     20h
f       equ     40h
dp      equ     10h
colon   equ     80h

g       equ     4000h
h       equ     8000h
j       equ     0800h
k       equ     0400h
m       equ     0200h
n       equ     0100h
q       equ     1000h
p       equ     2000h

;--- character definitions
; decode special Char to be placed at end of the table
CHAR_SPACE equ  LCD_sp
_CHAR_SPACE equ  LCD_sp
CHAR_MINUS equ  LCD_mi
_CHAR_MINUS equ  LCD_mi
        
_LCD_Tab:
LCD_Tab DW   a+b+c+d+e+f                ; displays "0"
        DW   b+c                        ; displays "1"
        DW   a+b+d+e+g+m                ; displays "2"
        DW   a+b+c+d+g+m                ; displays "3"
        DW   b+c+f+g+m                  ; displays "4"
        DW   a+c+d+f+g+m                ; displays "5"
        DW   a+c+d+e+f+g+m              ; displays "6"
        DW   a+b+c                      ; displays "7"
        DW   a+b+c+d+e+f+g+m            ; displays "8"
        DW   a+b+c+d+f+g+m              ; displays "9"
        DW   dp                         ; displays ":" 
        DW   g+m                        ; displays ";" 
        DW   k+n                        ; displays "<" 
        DW   d+g+m                      ; displays "="
        DW   h+q                        ; displays ">" 
        DW   a+b+m+p                    ; displays "?"
        DW   a+b+d+e+f+g+m              ; displays "@"
        DW   a+b+c+e+f+g+m              ; displays "A"
        DW   c+d+e+f+g+m                ; displays "B" 
        DW   a+d+e+f                    ; displays "C"
        DW   b+c+d+e+g+m                ; displays "D" 
        DW   a+d+e+f+g                  ; displays "E"
        DW   a+e+f+g                    ; displays "F"
        DW   a+c+d+e+f+m                ; displays "G"
        DW   b+c+e+f+g+m                ; displays "H"
        DW   b+c                        ; displays "I"
        DW   b+c+d+e                    ; displays "J"
        DW   e+f+g+k+n                  ; displays "K"
        DW   d+e+f                      ; displays "L"
        DW   b+c+e+f+h+k                ; displays "M"
        DW   e+f+h+n+c+b                ; displays "N" 
        DW   c+d+e+g+m                  ; displays "O" 
        DW   a+b+e+f+g+m                ; displays "P"
        DW   a+b+c+d+e+f+n              ; displays "Q"
        DW   e+f+a+b+m+g+n              ; displays "R" 
        DW   a+c+d+f+g+m                ; displays "S"
        DW   a+j+q                      ; displays "T" 
        DW   c+d+e+f+b                  ; displays "U" 
        DW   e+f+p+k                    ; displays "V"
        DW   e+f+p+n+c+b                ; displays "W"
        DW   h+n+q+k                    ; displays "X"
        DW   h+k+p                      ; displays "Y"
        DW   a+k+q+d                    ; displays "Z" 
LCD_sp  DW   0                          ; displays " " 
LCD_mi  DW   g+m                        ; displays "-" 
        
LCD_Tab_End
        even                            ; succeeding .text sections must be even aligned! 


;-------------------------------------------------------------------------------
;             Interrupt vectors
;-------------------------------------------------------------------------------
#if !defined(__CROSSWORKS__)
              COMMON INTVEC
#else
              RSEG   INTVEC
              KEEP
#endif            
              ORG    BASICTIMER_VECTOR         ;Basic Timer Vector
              DW     BT_ISR                                         

              END     


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -