找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2636|回复: 3
打印 上一主题 下一主题
收起左侧

为什么在串口调试助手里会乱码,为什么条件语句里的p2没变化 各位大神,帮帮我吧

[复制链接]
跳转到指定楼层
楼主
ID:160547 发表于 2017-3-21 20:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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没变化,不胜感激!!!!!!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:151348 发表于 2017-3-21 20:41 | 只看该作者
乱码?收发双方的波特率是否相同

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:156390 发表于 2017-3-22 14:17 | 只看该作者
看看波特率有没有匹配
回复

使用道具 举报

地板
ID:180800 发表于 2017-3-22 22:55 | 只看该作者
重点检查波特率,你没说明使用的是晶振频率,要注意计算出来的波特率与标准波特率偏差不能大于3%
不然很容易乱码

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表