新闻中心

EEPW首页>嵌入式系统>设计应用> MSP430的485通信程序(接收字符串指令)

MSP430的485通信程序(接收字符串指令)

作者: 时间:2016-11-13 来源:网络 收藏
/**************************************************************

程序功能:通过RS485端口一次一次地收发数据
---------------------------------------------------------------
测试说明:用示波器观察RS485端口A、B信号线

本文引用地址://m.amcfsurvey.com/article/201611/316427.htm

上的波形或者用RS485接收器接收发回
的字符,在串口助手上显示。
***************************************************************/
#include <msp430x14x.h>

#define DRE_out P3DIR |= BIT3 //连接485芯片的DE,RE端口的IO设置为输出状态
#define DE P3OUT |= BIT3 //设置485芯片处于发送状态
#define RE P3OUT &= ~BIT3 //设置485芯片处于接收状态
typedef unsigned char uchar;

unsigned char string[8] ;
uchar RX_flag;

void Set_UART1(void);
void PutString0(uchar *ptr);
void Send1Char(uchar sendchar);
void PutString(uchar *ptr);


/****************主函数****************/
void main(void)
{
unsigned int i;

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
DRE_out;
RE;
Set_UART1();
_EINT();

while (1)
{
while( IFG2 & URXIFG1 ); //等待收到test命令字符
if(RX_flag==1)
{
RX_flag=0;
if(string[1]==a)
{
DE;
for(i=0;i<3200;i++);
PutString0("a11.5522.33e ");
Send1Char(n);
for(i=0;i<3200;i++);
RE;
//LPM3;
}
}

}

}
/*******************************************
函数名称:Set_UART1
功 能:设置MCU的UART1对应的寄存器
参 数:无
返回值 :无
********************************************/
void Set_UART1(void)
{
P3SEL |= 0xC0; //将P3.6,P3.7选做UART1的通信端口
ME2 |= UTXE1 + URXE1; //使能USART1的TXD和RXD
UCTL1 |= CHAR; //选择8-bit字符
UTCTL1 |= SSEL0; //驱动时钟选择ACLK
UBR01 = 0x03; //波特率9600
UBR11 = 0x00;
UMCTL1 = 0x4a; //调整
UCTL1 &= ~SWRST; //初始化UART状态机
IE2 |= URXIE1 ; // 中断允许寄存器设置,接收中断允许
}


//串口接收中断,接收字符串指令.
#pragma vector=USART1RX_VECTOR
__interruptvoid usart1_rx (void)
{
static uchar rxcount = 0;
// LPM3_EXIT;
if(RXBUF1 == e)
{
RX_flag =1;
rxcount = 0;
}
else
{
string[rxcount++] = RXBUF1;
}
}

/*******************************************
函数名称:Send1Char
功 能:向PC机发送一个字符
参 数:sendchar--要发送的字符
返回值 :无
********************************************/
void Send1Char(uchar sendchar)
{
while (!(IFG2 & UTXIFG1)); //等待发送寄存器为空
TXBUF1 = sendchar;

}
/*******************************************
函数名称:PutSting
功 能:向PC机发送字符串并换行指令
参 数:ptr--指向发送字符串的指针
返回值 :无
********************************************/
void PutString(uchar *ptr)
{
while(*ptr != )
{
Send1Char(*ptr++); // 发送数据
}
while (!(IFG2 & UTXIFG1));
TXBUF1 = n; //发送换行指令
}
/*******************************************
函数名称:PutSting0
功 能:向PC机发送字符串,无换行
参 数:ptr--指向发送字符串的指针
返回值 :无
********************************************/
void PutString0(uchar *ptr)
{
while(*ptr != )
{
Send1Char(*ptr++); // 发送数据
}
}



评论


技术专区

关闭