您现在的位置: 主页 > MCU > 单片机技术应用 > MSP430F169中关于RS485通讯的问题 -
本文所属标签:
为本文创立个标签吧:

MSP430F169中关于RS485通讯的问题 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
1、大体框架:实现单片机和PC机之间的通讯。PC机(USB接口)发送字符,经过USB 转RS232,再经过RS232转RS485,到单片机(RS485 接口)接收字符。2、程序设计如下:分步调试的过程中,无论发送什么样的字

1、大体框架:实现单片机和PC机之间的通讯。

本文引用地址: http://www.21ic.com/app/mcu/201806/764514.htm

PC机(USB接口)发送字符,经过USB 转RS232,再经过RS232转RS485,到单片机(RS485 接口)接收字符。

2、程序设计如下:分步调试的过程中,无论发送什么样的字符,RXBUF1变量始终是0X01。求指导!!!


/***********************************************
程序功能:通过RS485端口接收传感器的数据,然后通过RS232把数据传出到显示屏
------------------------------------------------
测试说明:首先查看RS485接收到的数据,然后用串口调试工具,查看发出的数据,最后再调试显示屏上面内容是否显示正确


温湿度传感器的数据命令格式:01 03 00 00 00 02 C4 0B;01设备地址,03功能号,02表示数据长度,C4 0B表示CRC校验码


************************************************/
#include


#define DRE_out P3DIR |= BIT3 //连接485芯片的DE,RE端口的IO设置为输出状态
#define DE P3OUT |= BIT3 //设置485芯片处于发送状态 ,DE为高电平,
#define RE P3OUT &= ~BIT3 //设置485芯片处于接收状态(RE为低电平,接收器输出使能
char tmp;
void Set_UART1(void);


/****************主函数****************/
void main(void)
{

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
DRE_out;
RE; //设置485处于接收状态
Set_UART1();


while (1)
{

_EINT(); //打开全局中断

while(IFG2 & URXIFG1);
tmp=RXBUF1;
}
}





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


//发送字符串
void SendString(void)
{
unsigned int i;
for(i=0;i<=7;i++)
{
while(!(IFG2 & UTXIFG1)); //等待发送结束 ,UTXIFG1发送中断标志
TXBUF1 = send_data_buf[i]; //发送字符
}

}
//------------------------------------------------------------------------------
//延时函数
void Delay_us(unsigned int n)
{
unsigned int i;
for(i=0;i}
//-----------------------------------------------------------------------------
//延时函数
void Delay_ms(char n)
{
unsigned int i,j,k;


for(i=0;i{
for(k=0;k<5;k++)
{
for(j=0;j<200;j++);
}
}
}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > MSP430F169中关于RS485通讯的问题 -
 

"MSP430F169中关于RS485通讯的问题 -"的相关文章

网站地图

围观()