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

📄 fc430_es417_cce.asm

📁 lcdcdode cor customized
💻 ASM
📖 第 1 页 / 共 4 页
字号:
            .field  3700,16                 ; 80 F
            .field  3900,16
            .field  4000,16
            .field  4200,16
            .field  4400,16
            .field  4500,16                 ; 75 F
            .field  4700,16
            .field  4900,16
            .field  5100,16
            .field  5300,16
            .field  5500,16                 ; 70 F
            .field  5800,16
            .field  6000,16
            .field  6300,16
            .field  6500,16
            .field  6800,16                 ; 65 F
            .field  7100,16
            .field  7400,16
            .field  7700,16
            .field  8100,16
            .field  8400,16                 ; 60 F
            .field  8800,16
            .field  9200,16
            .field  9600,16
            .field 10000,16
            .field 10500,16                 ; 55 F		
            .field 10900,16
            .field 11400,16
            .field 12000,16
            .field 12500,16
            .field 13100,16                 ; 50 F
            .field 13700,16
            .field 14300,16
            .field 15000,16
            .field 15700,16	
            .field 16500,16                 ; 45 F
            .field 17300,16
            .field 18100,16
            .field 19000,16
            .field 20000,16
            .field 21000,16                 ; 40 F
            .field 22000,16
            .field 23100,16
            .field 24200,16
            .field 25400,16
            .field 26700,16                 ; 35 F
            .field 28100,16
            .field 29600,16
            .field 31100,16                 ; 32 F

;*******************************************************************************
; Initialized Global Variables
;*******************************************************************************

            .bss   status,2,2              ; Alarm status of system
            .bss   level,2,2               ; System cooling level setting
            .bss   LCD,4,2                 ; Temp storage for LCD memory map
            .bss   tachCount,4,2           ; Frequency generator counter of fan
            .bss   tachRPM,4,2             ; Current tachometer reading in RPM
            .bss   lastRPM,4,2             ; Last tachometer reading in RPM
            .bss   tempDegF,4,2            ; Current temperature in degrees F
            .bss   arrowState,4,2          ; State machine for arrows on LCD
            .bss   TEMP,4,2                ; Temp. storage in temp routine        	
            .bss   RESULT,4,2              ; Temp. storage in temp routine
            .bss   IRBIT,4,2               ; Used for bit test
            .bss   IROP1,4,2               ; First operand
            .bss   IROP2L,4,2              ; Second operand low word
            .bss   IROP2H,4,2              ; Second operand high word
            .bss   IRACCL,4,2              ; Math result low word
            .bss   IRACCH,4,2              ; Math result high word
	
;************************* ZERO-INIT GLOBAL VARIABLES **************************

;-------------------------------------------------------------------------------
; Initial Values for Global Variables
            .sect   ".cinit"
            .align  2
;-------------------------------------------------------------------------------
            .field  2,16
            .field  status,16               ; Alarm status of system
            .field  0,16

            .field  2,16
            .field  level, 16               ; System cooling level setting
            .field  1,16

            .field  4,16
            .field  LCD,16                  ; Temp storage for LCD memory map
            .field  0,32

            .field  4,16
            .field  tachCount,16            ; Frequency generator counter of fan
            .field  0,32

            .field  4,16
            .field  tachRPM,16              ; Current tachometer reading in RPM
            .field  0,32

            .field  4,16
            .field  lastRPM,16              ; Last tachometer reading in RPM
            .field  0,32

            .field  4,16
            .field  tempDegF,16             ; Current temperature in degrees F
            .field  0,32

            .field  4,16
            .field  arrowState,16           ; State machine for arrows on LCD		
            .field  0,32

            .field  4,16
            .field  TEMP,16                 ; Temp. storage in temp routine
            .field  0,32

            .field  4,16
            .field  RESULT,16               ; Temp. storage in temp routine
            .field  0,32

            .field  4,16
            .field  IRBIT,16                ; Used for bit test
            .field  0,32

            .field  4,16
            .field  IROP1,16                ; First operand
            .field  0,32

            .field  4,16
            .field  IROP2L,16               ; Second operand low word
            .field  0,32

            .field  4,16
            .field  IROP2H,16               ; Second operand high word
            .field  0,32

            .field  4,16
            .field  IRACCL,16               ; Math result low word
            .field  0,32

            .field  4,16
            .field  IRACCH,16               ; Math result high word
            .field  0,32

;-------------------------------------------------------------------------------
; Application Program / Code Functions
            .sect   ".text"
            .align  2
;-------------------------------------------------------------------------------

;*************************** MAIN SYSTEM PROCESSING ***************************

RESET:      mov.w   #300h, SP               ; Initialize system stackpointer
            call    #initSystem             ; Initialize the system as a whole
main_loop:  bis.w   #LPM0, SR               ; Drop into Low Power Mode 0
            call    #checkTach              ; Update tachometer readings
            call    #sampleTemp             ; Take a temperature reading
            call    #dispTemp               ; Update temperature on LCD
            call    #checkTemp              ; Check temp & set cooling level
            call    #dispLevel              ; Display cooling level setting
            jmp     main_loop               ; Repeat main background loop

;------------------------------------------------------------------------------

initSystem: mov.w   #(WDTPW+WDTHOLD),&WDTCTL; Disable the Watchdog
            bis.b   #XCAP18PF, &FLL_CTL0    ; Set internal load caps for xtal
            mov.w   #0x00, R15              ; Reset counter
setupFLL:   cmp.w   #0x2710, R15            ; Delay for FLL to lock (@ power up)
            jc      setupP1                 ; FLL locked, exit calibration loop
            add.w   #0x01, R15              ; Increment our FLL delay counter
            jmp     setupFLL                ; Busy loop until FLL is locked
setupP1:    bic.b   #ACTIVITY, &P1SEL       ; Configure Port 1 Output Pin(s)
            bis.b   #ACTIVITY, &P1DIR       ; Physically set the Port 1 Pin(s)
setupP2:    mov.b   #0xFF, &P2SEL           ; Set segment outputs for LCD
            mov.b   #0xFF, &P2DIR           ; All outputs
            bic.b   #TACH, &P2SEL           ; Set up tachometer input
            bic.b   #TACH, &P2DIR           ; Set up tachometer direction
            bis.b   #TACH, &P2IE            ; Enable Port 2 interrupt
            bis.b   #TACH, &P2IES           ; Generate ints on falling edge
setupWDT:   mov.w   #WDT_ADLY_1000, &WDTCTL ; Set up Watchdog Interval
            bis.b   #WDTIE, &IE1            ; Enable WatchdogTimer Interval int
setupLCD:   mov.b   #0xFF, &P3SEL           ; Set segment outputs for LCD
            mov.b   #0xFF, &P3DIR           ; All outputs
            mov.b   #0xFF, &P4SEL           ; Set segment outputs for LCD
            mov.b   #0xFF, &P4DIR           ; All outputs
            mov.b   #0xFC, &P5SEL           ; Set Rxx and COM pins for LCD
            mov.b   #0xFF, &P5DIR           ; All outputs
                                            ; 4mux LCD, segs0-15 = outputs
            mov.b   #(LCDON+LCDSG0_3+LCD4MUX), &LCDCTL
                                            ; Set LCD frame freq = ACLK/128
                                            ; Set interrupt interval
setupBT:    mov.b   #(BT_fLCD_DIV128+BTDIV+BTIP2), &BTCTL
            bis.b   #BTIE, &IE2             ; Enable Basic Timer interrupt
            mov.b   #0xFF, &LCDM8           ; Set S15:S14 on LCD
            mov.b   #0xFF, &LCDM9           ; Set S17:S16 on LCD
            mov.b   #0xFF, &LCDM10          ; Set S19:S18 on LCD
            mov.b   #0xF7, &LCDM11          ; Set S21:S20 on LCD
setupPWM:   bis.b   #PWM, &P2DIR            ; Sonfigure for output direction
            bis.b   #PWM, &P2SEL            ; Select peripheral option
            mov.w   #PERIOD050USEC, &TA1CCR0; Set up the PWM Period
            mov.w   #(TASSEL_2+MC_1),&TA1CTL; Use SMCLK, count up mode
            mov.w   #OUTMOD_1, &TA1CCTL1    ; Output HI signal - keep fans off
setupCA0:   and.b   #~(REF+THERM), &P1SEL   ; Select GPIO function for R(ref)
            bis.b   #(REF+THERM), &P1DIR    ; Change R(ref) pin for output
                                            ; (vs. floating; saves power)
            and.b   #~(REF+THERM), &P1OUT   ; Clear resistor outputs
            mov.b   #(REF+THERM+CAIN), &CAPD; Disable input buffers for inputs
            mov.b   #P2CA0, &CACTL2         ; Set up comparator port
initData:   mov.b   #0x01, &level           ; Initialize to Level 1 (one-time)
            mov.w   #0x91, &LCD             ; Initialize LCD (one-time)
enableInts: eint                            ; Enable global interrupts
            ret                             ; Return from subroutine

⌨️ 快捷键说明

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