我设置了8个8位buffer:unsigned char buffer[8];
然后我进行数据采集。当我采取的数据为全0(也就是我没有进行任何操作,下位机得到的数据)时候,数据却是如下:
第一次扫描得到数据:
Keil中仿真数据: buffer[0]~buffer[7]:00 00 00 00 00 00 00 10
而串口收到的数据:buffer[0]~buffer[7]:00 00 00 00 00 00 00 20
理想数据: buffer[0]~buffer[7]:00 00 00 00 00 00 00 00
第二次扫描得到数据:
Keil中仿真数据: buffer[0]~buffer[7]:01 00 00 00 01 00 00 10
而串口收到的数据:buffer[0]~buffer[7]:03 00 00 00 03 00 00 20
理想数据: buffer[0]~buffer[7]:00 00 00 00 00 00 00 00
后面几次扫描得到的数据都跟第二次一样,我想知道下这是为什么?
程序如下:
void Turn_pa(unsigned char mask)
{
unsigned char j;
for (j=0; j<8;j++)
{
if(num & 1)
{
buffer[j]|=1<<mask;
}
num >>= 1;
}
}
void Turn_pb(unsigned char mask)
{
unsigned char j;
for (j=0; j<8;j++)
{
if(num & 1)
{
buffer[j]|=1<<mask;
}
num >>= 1;
}
}
void caiyang()
{
uchar j;
Delay380us();
for(j=0;j<2;j++)
{
PC=0xfe;
num=PA;
Turn_pa(j);
PC=0xfd;
}
for(j=1;j<2;j++)
{
Turn_pa(j);
num=PA;
PC=0xfb;
}
for(j=2;j<3;j++)
{
Turn_pa(j);
num=PA;
PC=0xf7;
}
for(j=3;j<4;j++)
{
Turn_pa(j);
num=PA;
PC=0xef;
}
for(j=4;j<5;j++)
{
Turn_pb(j);
num=PB;
PC=0xdf;
}
for(j=5;j<6;j++)
{
Turn_pb(j);
num=PB;
PC=0xcf;
}
for(j=6;j<7;j++)
{
Turn_pb(j);
num=PB;
PC=0x7f;
}
for(j=7;j<8;j++)
{
Turn_pb(j);
num=PB;
PC=0xff;
}
for(i=0;i<8;i++)
{
SBUF=buffer[i];
while(TI==0);
TI=0;
}
} |