MSP430F149程序——RS485

本文详细介绍了485通信模块的初始化过程,包括引脚定义、硬件连接及移植文件说明。通过具体代码示例,讲解了如何设置波特率、字符长度及驱动时钟,实现UART1的TXD和RXD使能。此外,还提供了发送和接收字符的函数,以及485芯片状态切换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、引脚说明

1.1 接口定义

485引脚功能说明
DE、RE置为高电平则处于发送状态,置为低电平则处于接收状态

1.2 硬件连接

485引脚430引脚
DE、REP4.0

二、移植文件

将 485.c 、 485.h 文件加入到工程文件夹下

2.1 485.c

#include <msp430x14x.h>
#include "485.h"

//9600.8.N.1

extern char str[30];//最终显示的字符串
char data = 0;
void Set_UART1(void)
{
        UCTL1 |= SWRST; //置为1
	UCTL1 |= CHAR; //选择8-bit字符
	UTCTL1 |= SSEL1; //驱动时钟选择外部时钟
	UBR01 = 0x41; //波特率9600
	UBR11 = 0x03;
	UMCTL1 = 0x00; //调整
        ME2 |= UTXE1 + URXE1; //使能USART1的TXD和RXD
	UCTL1 &= ~SWRST; ////置为0  初始化UART状态机
	IE2 |= URXIE1; // 中断允许寄存器设置,接收中断允许
        P3SEL |= BIT6 + BIT7; //将P3.6,P3.7选做UART1的通信端口
        P3DIR |= BIT6; //设置TX口方向为输出
        DRE_out;//连接485芯片的DE,RE端口的IO设置为输出状态
}

void Send1Char(char sendchar)//发送一个字符
{
	while (!(IFG2 & UTXIFG1)); //等待发送寄存器为空
	TXBUF1 = sendchar;
}

void PutString0(char *ptr)//基于发送一个字符函数实现发送字符串
{
	while (*ptr != '\0')
	  Send1Char(*ptr++); // 发送数据         
}

void _485(void)
{
      Set_UART1();//UART1初始化
      DE;//设置485芯片处于发送状态
      PutString0("1你好天朝hello world........test485");
      delay_ms(5);
      _EINT();//打开串行中断
      RE;//设置485芯片处于接收状态
}


//串口接收中断,接收字符串指令.
#pragma vector=USART1RX_VECTOR
__interrupt void usart1_rx(void)
{  
    data = RXBUF1;//data保存接收到的字符

    //测试代码 收到什么发什么
    DE;//设置485芯片处于发送状态
    Send1Char(data);
    delay_ms(5);
    RE;//设置485芯片处于接收状态
    
    /*
    str[i]=data;
    i++;
    if(i==10)//缓冲区满就发出
    {
        str[i]=0;
        i=0;
        DE;//设置485芯片处于发送状态
        PutString0(str);
        delay_ms(5);
        RE;//设置485芯片处于接收状态
    }
    */
    /*
    if(data=='#')//监听到结束字符'#' 就发出之前的字符串并显示在液晶上
    {
        str[i - 1]=0;
        mLCD_ClearLCD();
        mLCD_WriteStrings(0,0,"revice",0);
        mLCD_WriteStrings(0,16,str,0);
        mLCD_LCDDISP();
        DE;//设置485芯片处于发送状态
        PutString0(str);
        delay_ms(5);
        RE;//设置485芯片处于接收状态
        i=0;
    }
    */
}

2.2 485.h


#define CPU_F ((double)8000000)        //内部延时函数所需时钟频率/Hz
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)(x)/1000.0))

#define DRE_out   P4DIR |= BIT0 //连接485芯片的DE,RE端口的IO设置为输出状态
#define DE        P4OUT |= BIT0 //设置485芯片处于发送状态
#define RE        P4OUT &= ~BIT0 //设置485芯片处于接收状态

void Set_UART1(void);
void PutString0(char *ptr);
void Send1Char(char sendchar);
void _485(void);

由 LiangJian 写于 2019 年 10 月 15 日

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值