历史上的今天
返回首页

历史上的今天

今天是:2025年03月06日(星期四)

正在发生

2020年03月06日 | MSP430的485通信程序(接收字符串指令)

2020-03-06 来源:eefocus

**************************************************************

程序功能:通过RS485端口一次一次地收发数据
---------------------------------------------------------------
测试说明:用示波器观察RS485端口A、B信号线上的波形或者用RS485接收器接收发回的字符,在串口助手上显示。

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

#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
__interrupt void 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++);                     // 发送数据
      }
}


推荐阅读

史海拾趣

DESIGNERSYSTEMS公司的发展小趣事

DESIGNERSYSTEMS公司深知,优质的服务是企业赢得客户的关键。他们始终坚持客户至上的原则,为客户提供从咨询、设计到生产、售后的一站式服务。无论客户遇到什么问题,DESIGNERSYSTEMS都能够迅速响应并提供有效的解决方案。这种优质的服务赢得了客户的广泛赞誉和口碑传播,为DESIGNERSYSTEMS在电子行业中树立了良好的形象。

Defense Supply Center Columbus公司的发展小趣事

在电子行业,人才是企业最宝贵的财富。Defense Supply Center Columbus公司高度重视人才战略的实施。公司积极引进和培养各类人才,建立起一支高素质、专业化的团队。公司注重员工的培训和发展,为员工提供良好的工作环境和职业发展机会。同时,公司还建立了完善的激励机制和绩效考核体系,激发员工的工作积极性和创造力。这些人才战略的实施,为公司的发展提供了有力的人才保障和智力支持。

请注意,以上故事均为虚构内容,旨在展示Defense Supply Center Columbus公司可能的发展路径和故事框架。实际情况可能因公司具体情况和市场环境而有所不同。

AINFO Inc公司的发展小趣事

随着技术的不断进步,AINFO Inc公司不断推出创新产品,满足市场的多样化需求。公司注重产品的质量和性能,通过优化设计和生产工艺,提高了产品的竞争力。同时,公司积极开拓国内外市场,与多家知名企业建立了合作关系,实现了产品的广泛应用。

Faraday Electronics Inc公司的发展小趣事

在电子行业中,单打独斗很难取得长久的发展。Faraday Electronics Inc深知这一点,因此一直注重与合作伙伴建立长期稳定的合作关系。公司不仅与多家国际知名企业建立了战略合作关系,还积极与国内高校和研究机构展开产学研合作。通过合作共赢的伙伴关系,公司不断引进先进技术和管理经验,提升了自身的核心竞争力。

GS Technology公司的发展小趣事
如心电图机、脑电图机等,用于显示生物电信号。
General Electric Company公司的发展小趣事
能够承受较高的电源电压,通常远高于普通运算放大器。

问答坊 | AI 解惑

基于单片机的酒瓶自动计数系统的设计

大家好啊,在这转悠了好几天,发现大家都是高手!我是一名专升本的学生,专科没有学过单片机本科学校因为大部分人都学过所以也就没开这门课,现在要做有关单片机的毕业设计,想请大家帮帮忙,谢谢了!     昨天问了一下老师那个设计一共 ...…

查看全部问答>

Altera的用IP核设计的信号发生程序

本帖最后由 paulhyde 于 2014-9-15 09:24 编辑 Altera的用IP核设计的信号发生程序  …

查看全部问答>

关于手机开发和JavaEE开发哪个好?

毕业在即,是选择JAVAEE的培训还是接受老师推荐,去做手机开发呢,前提是我是一个没有任何嵌入式基础的专科生。…

查看全部问答>

如何将SMDK2440变成多个版本?例如我的产品210,对应的BSP是smdk2440210,产品220对应的是smdk2440220

本人菜鸟,现在碰到一个问题,希望向大家求助一下. 现在我的wince目录中的PLATFORM只有smdk2440一个bsp,这样产生了很多不方便的地方. 第一,目前有3个系列的产品,虽然都是基于2440的,但是在BSP上,还是有些地方是不同的,要维护这三个系列的产品.虽然 ...…

查看全部问答>

急!ARM D/A转换程序实现多种波形输出

ARM D/A转换程序设计 1.编程实现多种波形(正弦波信号、三角波信号、方波信号)的输出,在 DA接口利用示波器观测实验输出。 2.在 LCD上显示信号…

查看全部问答>

AVR与液晶的直接访问和间接访问

请假,利用AVR实现与液晶屏的访问,如果采用直接访问(给液晶屏分配一个地址空间),直接接到对应的地址和数据线上,对应的RD和WR信号分别接到AVR的RD和WR上。但是如果采用间接访问的话,液晶屏幕的RD和WR信号是不是一般不能接在对应AVR的RD和WR信 ...…

查看全部问答>

AD9851软件程序

本帖最后由 paulhyde 于 2014-9-15 03:40 编辑 欢迎支持!    …

查看全部问答>