📄 实验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
;
; Yang Rui
; Lierda, Inc
; NOVEMBER 2003
; Built with IAR Embedded Workbench Version: 1.26B
;---------------------------------------------------------------
;----------------定义发送接收缓存寄存器--------------------------
;---------------------------------------------------------------
sr_send_buffer equ 202h;发送缓存
sr_reci_buffer equ 204h;接收缓存
;---------------------------------------------------------------
;
;-----------------------------------------------------------------
;串口初始化子程序
;说明:初始化程序结束后,MAX3485为接受使能状态
;-----------------------------------------------------------------
ORG 01100h
RESET mov.w #0a00h,SP
Stopwdt mov.w #WDTPW+WDTHOLD,&WDTCTL
call #init_sr485
reti
bis.w #CPUOFF,SR
ret
;-------------------------------------------------------------------------
;---------------485初始化程序---------------------------------------------
;-------------------------------------------------------------------------
init_sr485
and.b #0bfh,&FLL_CTL0 ;XTS低频
bis.b #01h,&UCTL0 ;SWRST=1,准备串口初始化设置
nop
nop
nop
mov.b #CHAR,&UCTL0 ;8-bit characters *SWRST*
mov.b #10h,&UTCTL0 ;UCLK=ACLK
mov.b #0dh,&UBR00 ;32.768下2400波特率
mov.b #00h,&UBR10 ;32.768下2400波特率
mov.b #6bh,&UMCTL0 ;调整寄存器设置
bis.b #UTXE0+URXE0,&ME1 ; Enable USART0 TXD/RXD
bis.b #URXIE0,&IE1 ; Enable USART0 RX interrupt
and.b #7fh,&IE1 ;unable USART0 tx interrupt
bis.b #10h,&P2DIR ;p2.4 out
bis.b #30h,&P2SEL ;P2.4,5=USART0 TXD/RXT
bis.b #02h,&P1DIR ;p1.1 out
and.b #0fdh,&P1SEL ;p1.1 I/O
and.b #0fdh,&P1OUT ;p1.1=low,MAX3485 RO enable
eint
ret
;------------------------------------------------------------------
;串口发送测试,485
;入口参数:发送缓冲变量sr_send_buffer
;占用资源:R9
;说明:本子程序为单字节发送,发送的内容送入sr_send_buff
; 本子程序的开头设置MAX3485为发送使能状态
; 本子程序退出时重新设置MAX3485为接受使能状态
;------------------------------------------------------------------
sr3485_send
bis.b #02h,&P1OUT ;p1.1=high,MAX3485 DI enable
mov.b &sr_send_buffer,&TXBUF0 ;发送数据
Byte_sended mov.b &UTCTL0,R9
and.b #01h,r9
cmp.b #01h,r9
jne Byte_sended ;判断数据发送完继续否
and.b #0feh,&UTCTL0 ;clear TXEPT
and.b #0fdh,&P1OUT ;p1.1=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 + -