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

📄 实验9_max3485.s43

📁 msp430系列开发板源代码
💻 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 + -