关于MSP430串口发送数据

2019-03-24 11:47发布

//*************************************************************************
//              串口1发送数据函数
//*************************************************************************
void Send_Byte(uchar data)
{
  RS485_CTR1;
  while(!(IFG2&UTXIFG1));             //发送寄存器空的时候发送数据
  U1TXBUF=data;
}


//********************************************************
//                   命令的判断
//********************************************************
void judge_data(void)
{
  if (sys_tem[1]==0x52)  //命令开始
      {
      Send_Byte(0x24);
      Send_Byte(0x52);
      Send_Byte(0x0D);
      }
  else if(sys_tem[1]==0x57)//写程序
    {
      
      if(sys_tem[2]==0x43)//写信道号
      {
        Send_Byte(0x24);
        Send_Byte(0x57);
        Send_Byte(0x43);
        Send_Byte(0x30);
        Send_Byte(0x30);
        Send_Byte(0x0d);
      }
      else if (sys_tem[2]==0x56)//写校验码
      {
        Send_Byte(0x24);
        Send_Byte(0x57);
        Send_Byte(0x56);
        Send_Byte(0x4e);
        Send_Byte(0x0d);        
      }
     else if (sys_tem[2]==0x42) //写波特率
      {
        Send_Byte(0x24);
        Send_Byte(0x57);
        Send_Byte(0x42);
        Send_Byte(0x44);
        Send_Byte(0x0d);
      }
   }
  
}
   






//*************************************************************************
//               处理来自串口1的接收中断
//*************************************************************************
#pragma vector=UART1RX_VECTOR
__interrupt void UART1_RX_ISR(void)
{
                                 //关闭中断
uint i;
for(i=0;i<6;i++)
{                                    
   sys_tem[i]=U1RXBUF;
}
  IE1 &=~URXIE1;
  judge_data();
  delay_ms(5);                        //切换之前先有个小延时
  RS485_CTR0;                         //切换到接收状态
}

sys_tem[];定义的是个数组用来存放接收到的命令


想实现的功能是从串口中收到一串命令(比如:24,57 ,43,30,30,0d),然后把这串数据发送出去,程序该如何修改

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
pangfive
2019-03-24 20:54
我觉得你的for(i=0;i<6;i++) {sys_tem[i]=U1RXBUF;  }不太可能实现吧,因为每次中断程序只能接受一个char

一周热门 更多>

相关问题

    相关文章