MCU向PC发送数据出错
时间:10-02
整理:3721RD
点击:
网上的程序,验证发现,PC收到的数据有问题。程序如下:
#include<reg51.h> //包含单片机寄存器的头文件
unsigned char code Tab[ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
void Send(unsigned char dat)
{
SBUF=dat;
while(TI==0)
;
TI=0;
}
void delay(void)
{
unsigned char m,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
;
}
void main(void)
{
unsigned char i;
TMOD=0x20; //TMOD=0010 0000B,定时器T1工作于方式2
SCON=0x40; //SCON=0100 0000B,串口工作方式1
PCON=0x00; //PCON=0000 0000B,波特率9600
TH1=0xfd; //根据规定给定时器T1赋初值
TL1=0xfd; //根据规定给定时器T1赋初值
TR1=1; //启动定时器T1
while(1)
{
for(i=0;i<8;i++) //模拟检测数据
{
Send(Tab[i]); //发送数据i
delay(); //150ms发送一次数据
}
}
}
发送“0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F”,PC端显示为“FE FD FB F7 EF DF FF BF ”,后两个错了。如果是发送“F1 F2 F3 F4 F5 F6 F7 F8 ”则不出错。 还试了其他数据,有的对有的错,不知道为什么?
#include<reg51.h> //包含单片机寄存器的头文件
unsigned char code Tab[ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
void Send(unsigned char dat)
{
SBUF=dat;
while(TI==0)
;
TI=0;
}
void delay(void)
{
unsigned char m,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
;
}
void main(void)
{
unsigned char i;
TMOD=0x20; //TMOD=0010 0000B,定时器T1工作于方式2
SCON=0x40; //SCON=0100 0000B,串口工作方式1
PCON=0x00; //PCON=0000 0000B,波特率9600
TH1=0xfd; //根据规定给定时器T1赋初值
TL1=0xfd; //根据规定给定时器T1赋初值
TR1=1; //启动定时器T1
while(1)
{
for(i=0;i<8;i++) //模拟检测数据
{
Send(Tab[i]); //发送数据i
delay(); //150ms发送一次数据
}
}
}
发送“0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F”,PC端显示为“FE FD FB F7 EF DF FF BF ”,后两个错了。如果是发送“F1 F2 F3 F4 F5 F6 F7 F8 ”则不出错。 还试了其他数据,有的对有的错,不知道为什么?
