msp430x24x_uscia0_uart_05_9600.s43
来自「步进电机驱动程序msp430f247单片机」· S43 代码 · 共 68 行
S43
68 行
;*******************************************************************************
; MSP430x24x Demo - USCI_A0, Ultra-Low Pwr UART 9600 Echo ISR, 32kHz ACLK
;
; Description: Echo a received character, RX ISR used. Normal mode is LPM3,
; USCI_A0 RX interrupt triggers TX Echo.
; ACLK = BRCLK = LFXT1 = 32768, MCLK = SMCLK = DCO ~1.045MHz
; Baud rate divider with 32768Hz XTAL @9600 = 32768Hz/9600 = 3.41
; //* An external watch crystal is required on XIN XOUT for ACLK *//
;
; MSP430F249
; -----------------
; /|\| XIN|-
; | | | 32kHz
; --|RST XOUT|-
; | |
; | P3.4/UCA0TXD|------------>
; | | 9600 - 8N1
; | P3.5/UCA0RXD|<------------
;
; B. Nisarga
; Texas Instruments Inc.
; September 2007
; Built with IAR Embedded Workbench Version: 3.42A
;*******************************************************************************
#include "msp430x24x.h"
;-------------------------------------------------------------------------------
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 WDT
SetupP1 mov.b #0FFh,&P1DIR ; All P1.x outputs
clr.b &P1OUT ; All P1.x reset
SetupP2 mov.b #0FFh,&P2DIR ; All P2.x outputs
clr.b &P2OUT ; All P2.x reset
SetupP3 bis.b #030h,&P3SEL ; P3.4,5 = USCI_A0 TXD/RXD
mov.b #0FFh,&P3DIR ; All P3.x outputs
clr.b &P3OUT ; All P3.x reset
SetupP4 mov.b #0FFh,&P4DIR ; All P4.x outputs
clr.b &P4OUT ; All P4.x reset
SetupUSCI0 bis.b #UCSSEL_1,&UCA0CTL1 ; CLK = ACLK
mov.b #03h,&UCA0BR0 ; 32kHz/9600 = 3.41
mov.b #00h,&UCA0BR1 ;
mov.b #UCBRS1+UCBRS0,&UCA0MCTL; Modulation UCBRSx = 3
bic.b #UCSWRST,&UCA0CTL1 ; **Initialize USCI state machine**
bis.b #UCA0RXIE,&IE2 ; Enable USCI_A0 RX interrupt
;
Mainloop bis.b #LPM3+GIE,SR ; Enter LPM3, interrupts enabled
nop ; Required for debugger
;
;-------------------------------------------------------------------------------
USCI0RX_ISR; Echo back RXed character, confirm TX buffer is ready first
;-------------------------------------------------------------------------------
TX0 bit.b #UCA0TXIFG,&IFG2 ; USCI_A0 TX buffer ready?
jz TX0 ; Jump if TX buffer not ready
mov.b &UCA0RXBUF,&UCA0TXBUF ; TX -> RXed character
reti ;
;
;-------------------------------------------------------------------------------
COMMON INTVEC ; Interrupt Vectors
;-------------------------------------------------------------------------------
ORG USCIAB0RX_VECTOR ; USCI0 Rx Vector
DW USCI0RX_ISR ;
ORG RESET_VECTOR ; RESET Vector
DW RESET ;
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?