本帖最后由 qe123 于 2010-8-26 09:41 编辑
由于目前使用的这款430单片机没有串口,只能模拟,IO口加定时器模式,通过串口助手给单片机发送数据,接收校验正确后给PC回复数据,出现了很多情况,不清楚原因,把数据放在数组中,采用的1200波特率,采用32768时钟
1.有些数据发送错误
2.有时数据会丢失
程序如下:
if (rsup==0xf)//发送
{
TA1CCR0+=SBITTIME;//使用增模式
switch(numbitup)
{
case 1://起始位
SVALUE_0;//0901SVALUE_0;//
bytebufup = *(ppup++);
break;
case 10://偶校验
if(oddup%2)
SVALUE_1;//SVALUE_1;//0901
else
SVALUE_0;// SVALUE_0;//0901
break;
case 11://停止位
SVALUE_1;//0901SVALUE_1;//
break;
case 12://停止位要两个
SVALUE_1;//0901SVALUE_1;//
datalenup -= 1;
if (datalenup == 0)//数据发送完后停止定时器
{
stop_timerA5();
cmode &= ~(cmd5+cmd4);
RECCIFG;//清中断标志
RECIE;//使能中断
break;
}
numbitup = 0;
oddup=0;
SDIR;//设置发送端口为输出
break;
default:
if (bytebufup&SeBit)
{
SVALUE_1;//0901SVALUE_1;//
oddup++;
}
else
SVALUE_0;//0901SVALUE_0;//
bytebufup>>=1;
break;
}
numbitup++;
} |