导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→关于波特率检测~![ajaxyy]

 *第39866篇: 关于波特率检测~!

  
楼 主:ajaxyy 2006年5月4日20:21
 关于波特率检测~!
我的思路是这样的,因为我要检测的数据是一些未知数,所以我编程的过程中用检测高低电平的宽度来确定波特率~!
使用定时器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,如果这个思路不行,各位大侠能不能提供一些好的建议啊???
  
2楼:黑猫 2006年5月5日23:11
 建议你,,,
最好用汇编写,汇编可以精确的使用指令到指令周期时间,可以选用最快的指令,可以准确的确定对一段指令的执行总时间。另外,你应该判断高/低电平的周期,数个周期在允许误差内,求出平均值,然后对所测得的周期进行查表。

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:救救我吧气死人的飞利普单片机

[下一篇主题]:求助!!!