#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没变化,不胜感激!!!!!!
|