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

📄 fet110_549.s43

📁 MSP430X110A demo 汇编语言程序。
💻 S43
字号:
;******************************************************************************
;   MSP-FET430x110 Demo - Software SPI Interface TLC549, Set P1.0 if > 0.5*Vcc
;
;   Description: Read a TLC549 ADC with reference to Vcc using software SPI and
;   store the 8-bit digital code in ADCData(R11).  The TLC549 is sampled in a
;   continous loop. If ADCData > 0.5*Vcc, P1.0 set, else reset.
;   ACLK = n/a, MCLK = SMCLK = default DCO ~800k
;   //* VCC must be at least 3v for TLC549 *//
;
;                        MSP430F1121
;                     -----------------
;                 /|\|              XIN|-
;                  | |                 |
;                  --|RST          XOUT|-
;       TLC549       |                 |
;     ----------     |                 |
;    |        CS|<---|P2.0         P1.0|-->LED
;  ~>| AIN+  CLK|<---|P2.1             |
;    |        DO|--->|P2.3             |
;
#define     ADCData  R11
#define     Counter  R12
CS          EQU      001h                    ; P2.0 - Chip Select
CLK         EQU      002h                    ; P2.1 - Clock
DO          EQU      008h                    ; P2.3 - Data Out
;
;   M. Buccini
;   Texas Instruments Inc.
;   Feb 2005
;   Built with IAR Embedded Workbench Version: 3.21A
;*****************************************************************************
#include  <msp430x11x1.h>
;-----------------------------------------------------------------------------
            ORG     0F000h                  ; Program Start
;-----------------------------------------------------------------------------
RESET       mov.w   #0300h,SP               ; Initialize stackpointer
StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop Watchdog Timer
SetupP2     mov.b   #CS,&P2OUT              ; /CS set, - P2.x reset
            bis.b   #CS+CLK,&P2DIR          ; /CS and CLK outputs
SetupP1     bis.b   #001h,&P1DIR            ; P1.0 output
                                            ;
Mainloop    call    #Meas_549               ; Call subroutine
            bic.b   #01h,&P1OUT             ; P1.0 = 0
            cmp.w   #07Fh,ADCData           ; ADCData > 0.5Vcc?
            jlo     Mainloop                ; Again
            bis.b   #01h,&P1OUT             ; P1.0 = 1
            jmp     Mainloop                ; Again
                                            ;
;-----------------------------------------------------------------------------
Meas_549;   Subroutine to read TLC549, data is shifted into ADCData
;           (R11), Counter (R12) is used as a bit counter.
;-----------------------------------------------------------------------------
            mov.w   #8,Counter              ; 8 data bits
            clr.w   ADCData                 ; Clear data buffer
            bic.b   #CS,&P2OUT              ; /CS reset, enable ADC
ADC_Loop    bit.b   #DO,&P2IN               ; (4) DO -> C (carry)
            rlc.w   ADCData                 ; (1) C -> ADCData
            bis.b   #CLK,&P2OUT             ; (4) Clock high
            bic.b   #CLK,&P2OUT             ; (4) Clock low
            dec.w   Counter                 ; (1) All bits shifted in?
            jnz     ADC_Loop                ; (2) If not --> ADC_Loop
            bis.b   #CS,&P2OUT              ; /CS set, disable ADC
            ret                             ; Return from subroutine
                                            ;
;-----------------------------------------------------------------------------
;           Interrupt Vectors
;-----------------------------------------------------------------------------
            ORG     0FFFEh                  ; MSP430 RESET Vector
            DW      RESET                   ;
            END

⌨️ 快捷键说明

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