📄 实验9_max3485.s43
字号:
#include "msp430x44x.h"
;-----------------------------------------------------------------
;MSP-Test44x Demo - USART0 UART 2400
;USART0经RS-485串口通信程序模块
;P2.4/USART0 TXD=MAX3485 DI
;P2.5/USART0 RXD=MAX3485 RO
;P1.1=MAX3485 /RE=MAX3485 DE
;----------------------------------------------------------------
; MSP430F449
; -----------------
; /|\| XIN|-
; | | | 32768Hz
; --|RST XOUT|-
; | |
; | P2.4|-----------> DI
; | |2400- 8N1
; | P2.5|<----------- RO
;
;---------------------------------------------------------------
;----------------定义发送接收缓存寄存器--------------------------
;---------------------------------------------------------------
sr_send_buffer equ 202h;发送缓存
sr_reci_buffer equ 204h;接收缓存
;---------------------------------------------------------------
;
;-----------------------------------------------------------------
;串口初始化子程序
;说明:初始化程序结束后,MAX3485为接受使能状态
;-----------------------------------------------------------------
ORG 08000h
RESET mov.w #0600h,SP
Stopwdt mov.w #WDTPW+WDTHOLD,&WDTCTL
call #init_sr485
reti
main bis.w #CPUOFF,SR
nop
jmp main
;-------------------------------------------------------------------------
;---------------485初始化程序---------------------------------------------
;-------------------------------------------------------------------------
init_sr485
SetupFLL bis.b #XCAP14PF,&FLL_CTL0 ;XTS低频
; bis.b #01h,&UCTL0 ;SWRST=1,准备串口初始化设置
SetupUART0 mov.b #SSEL0,&UTCTL0 ; UCLK = ACLK
mov.b #00Dh,&UBR00 ; 32k/2400 - 13.65
mov.b #000h,&UBR10 ; 32k 2400
mov.b #06Bh,&UMCTL0 ; 32k 2400 modulation
mov.b #CHAR,&UCTL0 ; 8-bit characters *SWRST*
bis.b #UTXE0+URXE0,&ME1 ; Enable USART0 TXD/RXD
bis.b #URXIE0,&IE1 ; Enable USART0 RX interrupt
SetupP2 bis.b #030h,&P2SEL ; P2.4,5 = USART0 TXD/RXD
bis.b #010h,&P2DIR ; P2.4 = output direction
SetupP5
bis.b #04h,&P4DIR ;p4.2 I/O
bic.b #04h,&P4OUT ;p4.2=low,MAX3485 RO enable
eint
ret
;------------------------------------------------------------------
;串口发送测试,485
;入口参数:发送缓冲变量sr_send_buffer
;占用资源:R9
;说明:本子程序为单字节发送,发送的内容送入sr_send_buff
; 本子程序的开头设置MAX3485为发送使能状态
; 本子程序退出时重新设置MAX3485为接受使能状态
;------------------------------------------------------------------
sr3485_send
bis.b #04h,&P5OUT ;p4.2=high,MAX3485 DI enable
mov.b &sr_send_buffer,&TXBUF0 ;发送数据
tx bit.b #UTXIFG0,&IFG1
jz tx ;判断数据发送完继续否
bic.b #04h,&P4OUT ;p4.2=low,MAX3485 RO enable
ret
;--------------------------------------------------------------
;串口接受中断,485
;出口参数:接受缓冲变量sr_reci_buffer ;
;--------------------------------------------------------------
sr485_reci_int
mov.b &RXBUF0,&sr_reci_buffer
mov.b &sr_reci_buffer,&sr_send_buffer
call #sr3485_send
reti
;-------------------------------------------------------------------
;---------------中断向量定义-----------------------------
;-------------------------------------------------------------------
ORG 0FFFEH
DW RESET
ORG 0FFF2H
DW sr485_reci_int
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -