51单片机串口接收错误,发一串固定字符串,接受的也是固定的,只是接受错误,怎么办?
用伟福仿真器,晶振12MHz,波特率2400bps。voidserial_Init(void)//模式1,8位自动重装,2400bps,12MHz{SCON=0x50;/...
用伟福仿真器,晶振12MHz,波特率2400bps。
void serial_Init(void) //模式1,8位自动重装,2400bps,12MHz
{
SCON=0x50;//串口工作方式为1,SCON允许串口接收位REN置1
TMOD=0x20;//工作方式控制寄存器TMOD,控制定时器1工作在模式2,8位自动重装
TH1=0xF3; //定时计数器1高8位
TL1=0xF3; //定时计数器1低8位,设置T1的溢出率
TR1=1;//定时控制寄存器TCON中的运行控制位,置1表示计数器1启动工作
ES=1;//打开串口中断
EA=1;//允许中断
RI=0;
TI=0;
}
uchar data Send_string=0;//接收数据完成标志,1表示完成
uchar data len=0;
uchar data N;
uchar data b;
sbit Pin=P0^6;//管脚P0^6用作通讯显示
com_interrupt(void) interrupt 4 //串口中断子程序
{
Pin=0;//通讯指示灯亮
if(RI)
{
RI = 0;
b=SBUF;
if((b==0xBB)&&(len==0))//接收开始符为0xBB的数据
{
temp[0]=b;//将开始符赋给temp[0]
}
else//继续接收开始符0xBB后的数据
{
len++;
temp[len]=b;
if(len>6)
{
if((b==0xDD)&&(len>=temp[6]+8))//收到结束符且数据长度为 //(temp[6]+8)时,结束接收
{
N=len;//传递数据长度,数据长度为(N+1)
len=0;//置0,便于下一次接收
Send_string=1;//接收完成标志
}
}
}
}
Pin=1;//通讯指示灯灭
}
当以16进制发送:BB 00 00 00 01 21 05 01 00 77 55 00 01 AF DD时,接收刚开始始终是22 FF FF FD BD F5 FD FF 11 55 FF FD A1 11 07,后来变成22 FF FF FD BD F5 FD FF 11 55 FF FD A1 11 。本人初学51C语言,请教高手真是为什么呢
谢谢大家的热心帮忙,问题解决了 展开
void serial_Init(void) //模式1,8位自动重装,2400bps,12MHz
{
SCON=0x50;//串口工作方式为1,SCON允许串口接收位REN置1
TMOD=0x20;//工作方式控制寄存器TMOD,控制定时器1工作在模式2,8位自动重装
TH1=0xF3; //定时计数器1高8位
TL1=0xF3; //定时计数器1低8位,设置T1的溢出率
TR1=1;//定时控制寄存器TCON中的运行控制位,置1表示计数器1启动工作
ES=1;//打开串口中断
EA=1;//允许中断
RI=0;
TI=0;
}
uchar data Send_string=0;//接收数据完成标志,1表示完成
uchar data len=0;
uchar data N;
uchar data b;
sbit Pin=P0^6;//管脚P0^6用作通讯显示
com_interrupt(void) interrupt 4 //串口中断子程序
{
Pin=0;//通讯指示灯亮
if(RI)
{
RI = 0;
b=SBUF;
if((b==0xBB)&&(len==0))//接收开始符为0xBB的数据
{
temp[0]=b;//将开始符赋给temp[0]
}
else//继续接收开始符0xBB后的数据
{
len++;
temp[len]=b;
if(len>6)
{
if((b==0xDD)&&(len>=temp[6]+8))//收到结束符且数据长度为 //(temp[6]+8)时,结束接收
{
N=len;//传递数据长度,数据长度为(N+1)
len=0;//置0,便于下一次接收
Send_string=1;//接收完成标志
}
}
}
}
Pin=1;//通讯指示灯灭
}
当以16进制发送:BB 00 00 00 01 21 05 01 00 77 55 00 01 AF DD时,接收刚开始始终是22 FF FF FD BD F5 FD FF 11 55 FF FD A1 11 07,后来变成22 FF FF FD BD F5 FD FF 11 55 FF FD A1 11 。本人初学51C语言,请教高手真是为什么呢
谢谢大家的热心帮忙,问题解决了 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询