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

📄 msp430x24x_uscia0_spi_02.s43

📁 步进电机驱动程序msp430f247单片机
💻 S43
字号:
;*******************************************************************************
;   MSP430x24x Demo - USCI_A0, SPI Interface to HC165 Shift Register
;
;   Description: This program demonstrate a USCI_A0 in SPI mode interface to a
;   an 'HC165 shift register.  Read 8-bit Data from H-A into Data.
;   ACLK = n/a, MCLK = SMCLK = default DCO ~1.045MHz, BRCLK = SMCLK/2
;
;                          MSP430x24x
;                       -----------------
;                   /|\|              XIN|-
;                    | |                 |
;          HC165     --|RST          XOUT|-
;        ----------    |                 |
;    8  |      /LD|<---|P3.6             |
;   -\->|A-H   CLK|<---|P3.0/UCA0CLK     |
;     |-|INH    QH|--->|P3.5/UCA0SOMI    |
;     |-|SER      |    |                 |
;     v
;
;
;   B. Nisarga
;   Texas Instruments Inc.
;   September 2007
;   Built with IAR Embedded Workbench Version: 3.42A
;*******************************************************************************
#include "msp430x24x.h"

Data        EQU     0200h
;-------------------------------------------------------------------------------
            RSEG    CSTACK                  ; Define stack segment
;-------------------------------------------------------------------------------
            RSEG    CODE                    ; Assemble to Flash memory
;-------------------------------------------------------------------------------
RESET       mov.w   #SFE(CSTACK),SP         ; Initialize stackpointer
StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog timer
SetupP3     bis.b   #021h,&P3SEL            ; P3.0,5 USCI_A0 option select
            bis.b   #040h,&P3DIR            ; P3.6 output direction
SetupSPI    bis.b   #UCCKPH+UCMSB+UCMST+UCSYNC,&UCA0CTL0 ; 3-pin, 8-bit SPI mast
            bis.b   #UCSSEL_2,&UCA0CTL1     ; SMCLK
            bis.b   #02h,&UCA0BR0
            clr.b   &UCA0BR1                ;
            clr.b   &UCA0MCTL
            bic.b   #UCSWRST,&UCA0CTL1      ; **Initialize USCI state machine**
                                            ;
Mainloop    call    #RX_HC165               ; Load HC165 value into Rx buffer
            mov.b   &UCA0RXBUF,&Data        ; Move value into Data
            jmp     Mainloop                ; Repeat
                                            ;
;-------------------------------------------------------------------------------
RX_HC165
;-------------------------------------------------------------------------------
            bic.b   #040h,&P3OUT            ; Trigger low edge on HC165 /LD
            bis.b   #040h,&P3OUT            ; Return /LD to high
            bic.b   #UCA0RXIFG,&IFG2        ; Clear U1RXBUF flag
            mov.b   #00h,&UCA0TXBUF         ; Dummy write to start SPI
L1          bit.b   #UCA0RXIFG,&IFG2        ; RXBUF ready?
            jnc     L1                      ; 1 = ready
            ret                             ;
                                            ;
;-------------------------------------------------------------------------------
            COMMON  INTVEC                  ; Interrupt Vectors
;-------------------------------------------------------------------------------
            ORG     RESET_VECTOR
            DW      RESET
            END

⌨️ 快捷键说明

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