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

📄 prac9_max3485.asm

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