关于波特率检测~!
我的思路是这样的,因为我要检测的数据是一些未知数,所以我编程的过程中用检测高低电平的宽度来确定波特率~!
使用定时器0来测量电平宽度,包括低电平和高电平
先是定时器初始化
然后的程序是这样的
uchar CharH,CharL,count;
uint temp[20];
void record(void) 记录函数,记录一组脉冲的宽度
{
while(!CPURX)
TR0=1;
while(!TF0)
{if(IF0)
break;
while(CPURX);
CharH=THO;
CharL=TL0;
temp[count]=CharH < <8+CharL;
count++;
if(IF0)
break;
while(!CPURX);
CharH=THO;
CharL=TL0;
temp[count]=CharH < <8+CharL;
count++;
}
TF0=0;
TR0=1;
}
viod computer(void)
{计算函数就是把记录的一组脉冲宽度进行计算,两两相减,计算出最小的宽度,我认为理想的情况是发送的数据肯定会出现一个高电平或者一个低电平,然后它的波特率就是一个最小脉冲的倒数(不知道这个思路对不对哦?)。程序就省略了……
}
程序编好以后,我用串口调试助手发送了一组0x55,接受的电平宽度误差比较大,
请问各位,1,我这个思路可行嘛???
2,我是用c编的,请问对脉冲时间的计数是不是不准确??
3,波特率是不是一个最小脉冲的倒数啊?
4,我用的是8位单片机,我计算的数组是uint型,请问这样可以嘛?
4,如果这个思路不行,各位大侠能不能提供一些好的建议啊???
发表时间:2006年5月4日20:21:36