微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机发送多个字节不能被另一块单片机识别识别

51单片机发送多个字节不能被另一块单片机识别识别

时间:10-02 整理:3721RD 点击:
   各位大神帮我看下,为什么我发送5个字节的命令,另外一片单片机没有返回5个值,而我不用程序,直接用
串口调试助手发送相同的5个字节的命令给另一片单片机,有5个返回值呢?而且我用串口给这个单片机发送5个命令也可以接收。            //通信协议如下:波特率19200,8位数据位,一位停止位
#define N 5     //接收字节数
void uart_init();
void delay_ms(uint z);
uchar flag,i;                                                       //删除无用变量                           
uchar code table[]={0xff,0xfe,0x02,0x02,0x03};            //发送5个人字节的命令
uchar table1[N];                                              //接收缓存数组
uchar j=0;   

main()
{       
        uchar *p;
               uint Co2_hi,n;
         uart_init();
                LCD_INIT();    //
         while(1)
         {
                  ES=0;
              for(i=0;i<5;i++)
              {
                    SBUF=table[i];
                    while(!TI);
                   TI=0;                 
              }               
               ES=1;
                  delay_ms(500);         
       
                                        
                if(flag==1)
                 {
                                ES=0;
                                    p=table1;
                                Data_Decode(p);
                                Co2_hi=Co2_Val/1000;
                                  if(Co2_hi!=0)
                                  {write_char(0,1,num[Co2_hi]);}
                                 write_char(0,2,num[Co2_Val/100%10]);
                                 write_char(0,3,num[Co2_Val/10%10]);
                                 write_char(0,4,num[Co2_Val%10]);
                                 ES=1;       
                                 flag=0;
                     }   
                    delay_ms(50);            
         }
}




void uart_init()          //晶振11.0592,波特率19200
{  
    TMOD = 0x20;
    SCON = 0x50;  //  SM0=0;  SM1=1;
    REN=1;
    TH1 = 0xFD;
    TL1 = 0xFD;
    PCON=0x80;            //波特率加倍
    EA = 1;
    ES = 1;
    TR1 = 1;      
}
void ser()interrupt 4
{                 
             RI=0;
             table1[j++]=SBUF;                               //存数据到接收缓存
             if(j==N)                                         //数组满时,允许处理
            {  flag=1;
                        j=0;
                        }
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top