标题: 为什么在串口调试助手里会乱码,为什么条件语句里的p2没变化 各位大神,帮帮我吧 [打印本页]

作者: 小霸王2    时间: 2017-3-21 20:03
标题: 为什么在串口调试助手里会乱码,为什么条件语句里的p2没变化 各位大神,帮帮我吧
#include<AT89X51.h>
#include <stdio.h>
unsigned char dat1,num;
unsigned char cont=0x01;
unsigned char k;
unsigned char sz[8]        ;
float x,y;
unsigned int i,j,z;
void delay(z)
{
     for(i=z;i>0;i--)
         for(j=110;j>0;j--);
}
void InitUART (void)
{
   SCON = 0x40;   //配置串口为模式1
    TMOD &= 0x0F;  //清零T1的控制位
    TMOD |= 0x20;  //配置T1为模式2
    TH1 = 0xf3;  //计算T1重载值
    TL1 = TH1;     //初值等于重载值
    TR1 = 1;       //启动T1
    ES = 1;   //打开串口中断
    EA = 1;   //打开总中断
        }

void SendByte(unsigned char dat)
{
SBUF = dat;
while(!TI);
  delay(100);
      TI = 0;
}

void SendStr(unsigned char *s)
{
while(*s!='\0')// \0 表示字符串结束标志,通过检测是否字符串末尾
  {
  SendByte(*s);
  s++;
  }
}
void main ()
{
          P0=0;
          while(P3!=0x00)
          {
        dat1=P3;
   for (k=0;k<8;k++,cont<<=1)
   {
   if (cont&dat1)
      sz[k]=1;
   else
      sz[k]=0;
          }
x=(sz[0]*1+sz[1]*0.7+sz[2]*0-sz[3]*0.7-sz[4]*1-sz[5]*0.7+sz[6]*0+sz[7]*1);
y=(sz[0]*0+sz[1]*0.7+sz[2]*1+sz[3]*0.7+sz[4]*0-sz[5]*0.7-sz[6]*1-sz[7]*0.7);
  if(x>0)
  {P2_0=0,P2_1=1;}
  else
   {if(x<0)
  {P2_0=1,P2_1=0;}
  else
  {if(x=0)
  {P2_0=1,P2_1=1;}
        }
        }
   if(y>0)
   {P2_2=0,P2_3=1;}
  else
  {if(y<0)
  {P2_2=1,P2_3=0;}
  else
  {if(y=0)
  {P2_2=1,P2_3=1;}
          }
}
    while(1)
        {
         InitUART();
         if(P3_0=0)
         SendStr("  Y\r\n");
         else  SendStr("  N\r\n");
         if(P3_1=1)
         SendStr(" N");
         else  SendStr(" Y");
          if(P3_2=0)
         SendStr(" Y\r\n");
         else  SendStr(" N\r\n");
        if(P3_3=0)
         SendStr("Y");
         else  SendStr("N");
        if(P3_4=0)
         SendStr("   Y\r\n");
         else  SendStr("   N\r\n");
         if(P3_5=0)
         SendStr(" Y");
         else  SendStr(" N");
         if(P3_6=0)
         SendStr(" Y\r\n");
         else  SendStr(" N\r\n");
         if(P3_7=0)
         SendStr("  Y\r\n");
         else  SendStr("  N\r\n");
           }
        }
          }
帮忙指出程序的问题,为什么在串口调试助手里会乱码,为什么条件语句里的p2没变化,不胜感激!!!!!!


作者: imxuheng    时间: 2017-3-21 20:41
乱码?收发双方的波特率是否相同
作者: cpc1995    时间: 2017-3-22 14:17
看看波特率有没有匹配
作者: tenacity2012    时间: 2017-3-22 22:55
重点检查波特率,你没说明使用的是晶振频率,要注意计算出来的波特率与标准波特率偏差不能大于3%
不然很容易乱码




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1