当前位置: 代码迷 >> 单片机 >> MSP430F147经过RS485和PC通信
  详细解决方案

MSP430F147经过RS485和PC通信

热度:163   发布时间:2016-04-28 14:51:37.0
MSP430F147通过RS485和PC通信
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口初始化====================================//


//=============================串口初始化====================================//