📄 prac9_max3485.asm
字号:
#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为接受使能状态
;-----------------------------------------------------------------
.pseg code, abs=01100h
RESET mov.w #0a00h,SP
Stopwdt mov.w #WDTPW+WDTHOLD,&WDTCTL
call #init_sr485
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
;-------------------------------------------------------------------
;//---------------中断向量定义-----------------------------
;-------------------------------------------------------------------
.pseg reset_vector, abs=0FFFEH
.data RESET
.pseg rx_vector, abs=0FFF2H
.data sr485_reci_int
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -