MSP430F169中关于RS485通讯的问题

发布者:EnchantedMelody最新更新时间:2018-05-05 来源: eefocus关键字:MSP430F169  RS485通讯 手机看文章 扫描二维码
随时随地手机看文章

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

 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++);
}
}
}


关键字:MSP430F169  RS485通讯 引用地址:MSP430F169中关于RS485通讯的问题

上一篇:MSP430的SPI通信例程
下一篇:个人总结之MSP430F5510串口通讯(485)

推荐阅读最新更新时间:2024-03-16 16:01

MSP430F169(二)——UART中断(论下)
1. UART中断工作的机制 UART只有一个发送中断向量和一个接收中断向量,通过判断中断向量的标志来控制数据的收发 1.1 发送机制 当用户想发送数据时,UxIFG产生一个中断,表明UxTXBUF已经准备好接收数据。当UxTXBUF接收字符后或中断被执行,URXIFG将会复位。 SWRST = 1或PUC会置位UxIFG (SWRST: 系统复位) SWRST = 1或PUC会复位UxIE 1.2接收机制 UxRXBUF每次接收一个字符并加载时,URXIFGx会产生一个中断标记 UxRXBUF被读取时或中断被执行时,URXIFG被自动复位 当PUC或SWRST = 1时UxRXIE 复位 建议接收中断函数的代码要精简,执
[单片机]
基于RS485总线通讯系统的可靠性措施
引 言 在产业控制及丈量领域较为常用的网络之一就是物理层采用RS-485通讯接口所组成的工控设备网络。这种通讯接口可以十分方便地将很多设备组成一个控制网络。从目前解决单片机之间中长间隔通讯的诸多方案分析来看,RS-485总线通讯模式由于具有结构简单、价格低廉、通讯间隔和数据传输速率适当等特点而被广泛应用于仪器仪表、智能化传感器集散控制、楼宇控制、监控报警等领域。但RS485总线存在自适应、自保护功能脆弱等缺点,如不留意一些细节的处理,常出现通讯失败甚至系统瘫痪等故障,因此进步RS-485总线的运行可靠性至关重要。 电路基本原理 某节点的硬件电路设计如图1所示,在该电路中,使用了一种RS-485接口芯片SN75LBC184,它采
[嵌入式]
RS485转TTL与单片机通讯
采用51单片机编了个串口通讯程序,目的是仿真一下485通讯的效果; 程序简单表述如下: #include reg51.h void Uart_Init(void) { SCON=0x50; //serial mode 1 TMOD|=0x20; //timer1 mode2 8bit auto reload PCON|=0x80; //SMOD=1; TH1=0xfa; //9600 11.0592 ES=1; //enable serial interrupt TR1=1; //enable timer1 EA=1; } void Uart_PutChar(unsigned char ch) { S
[单片机]
<font color='red'>RS485</font>转TTL与单片机<font color='red'>通讯</font>
基于msp430f169的蓝牙风扇可调速程序
设计做的,比较简单,手机通过UART连接单片机,PWM可任意调速,注意风扇的驱动电压。 #include msp430f169.h #include lcd12864.h #include PWM.h #include UART.h #include adc.h unsigned char key = 0; unsigned char Statu = 0; unsigned int a = 0; #pragma vector=USART0RX_VECTOR __interrupt void USART0_RX_ISR(void) { unsigned char data=0; data=U0RXBUF;
[单片机]
基于MSP430F169的多探头辐射测量仪设计
在介绍了整个系统的基础上,对仪器设计中的关键问题进行了详细说明,重点讨论了通过单片机给多个探头供高压电的原理和分别连接多个探头后数据传输的实现方法,并给出了单片机外围电路的原理图。试验证明,该仪器完全可以用于核辐射探测领域,且具有小型化、数字化、低功耗等优点。   1 系统概述   本系统由探头和主机两个部分组成。外接探头内部的探测器类型包括测量α的ZnS探测器、测量β的塑料闪烁体探测器,测量γ的NaI晶体探测器,以及同时测量α,β的双闪烁体探测器和同时测量α,β,γ的双GM管探测器。探头内置一片MSP430F169型单片机,以提高其数字化程度;主机是以单片机MSP430F169为核心检测系统。MSP430F169单片机是超
[单片机]
基于<font color='red'>MSP430F169</font>的多探头辐射测量仪设计
RS232与RS485通讯接口的功能与区别
RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间 串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的 DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。DB25的串口一般只用到的管脚只有2(RXD)、3(TXD)、7(GND)这三个,随着设备的不断改进,现在DB25针很少看到了,代替他的是DB9的接口,DB9所用到的管脚比DB25有所变化,是2(RXD)、3(TXD)、5(GND)这三个。因此现在都把RS232接口叫做DB9。 元器件常识:市场
[嵌入式]
MSP430F169(三) ---- 使用UART实现PC与单片机的数据收发并在1602 液晶显示
本代码需要注意的细节 每次字符串的发送时间至少间隔三秒,发送的字符的数量最好在32个以内,防止数据接收不全。 本代码波特率的设置为1200.如果波特率设置过高,会出现数据接收不全的问题。我试过9600的波特率,会出现问题。读者可以自行修改代码,实现更高的传输速率。 有关的细节会在代码中说明 代码实现 主函数 #include msp430f169.h #include Config.h #include LCD.h #include Init.h #include UART.h //#include stdlib.h 本来想用全局指针来存储接收的数据 // 结果发现自己用不来....
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved