DEMO板上单片机是MSP430F147,有现成的RS485口,我手头也有一根DT-5019(RS485/422转USB),现在想做一个最简单的试验,就是F147想PC机发送一个字符'A',我用串口调试助手,然后DEMO板家电,没有看到接收到的字符'A'....,现在不知道是硬件连接问题,还是软件问题,大家先帮我分析下程序吧,先谢谢了,,
程序如下:
//===========================================================================//
// 头文件调用 //
//===========================================================================//
#include <msp430x14x.h> // 调用MSP430F14系列头文件库
//===========================================================================//
// 宏定义声明函数 //
//===========================================================================//
#define uchar unsigned char // 定义无符号字符型变量
#define uint unsigned int // 定义无符号整型变量
#define ulong unsigned long // 定义无符号长整形
#define DRE_out P3DIR |= BIT3 //连接485芯片的DE,RE端口的IO设置为输出状态
#define DE P3OUT |= BIT3 //设置485芯片处于发送状态
#define RE P3OUT &= ~BIT3 //设置485芯片处于接收状态
//===========================================================================//
// 声明函数 //
//===========================================================================//
void Clock_Init();//系统时钟初始化
void WDT_Init(); // 看门狗初始化
void Port_Init(); // IO口配置初始化
void UART_Init(); // 串口初始化
void Send_Byte(uchar data);
//===========================================================================//
// 主函数部分 //
//===========================================================================//
void main(void)
{
WDT_Init(); // 看门狗初始化
Port_Init(); // IO端口初始化
Clock_Init(); // 时钟初始化
UART_Init(); // 串口初始化
_EINT(); //开中断
DE;
Send_Byte('A');
RE;
while(1) //无限循环
{
}
}
//============================Port初始化=====================================//
void Port_Init()
{
P3DIR = 0x18 ;//P3口方向,P3.3,P3.4 out
P3OUT = 0x30 ;//P3.3=0,485接收, P3.4,P3.5=1
P3SEL = 0x30 ;//选P3.4,P3.5为USART0的TXD和RXD
}
//============================时钟初始化=====================================//
void Clock_Init()
{
uchar i;
BCSCTL1&=~XT2OFF; //打开 XT2(4MHZ)
BCSCTL2 = 0x88; //选择XT2为系统时钟(MCLK)、SMCLK
do{ //等待时钟转换
IFG1&=~OFIFG;
for(i=0;i<100;i++)
_NOP();
}
while((IFG1&OFIFG)!=0);
IFG1&=~OFIFG;
}
//============================看门狗初始化===================================//
void WDT_Init()
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
}
//=============================IO口初始化====================================//
//=============================串口初始化====================================//