OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 51单片机模拟串口的波特率计算公式看不懂,贴在下面了。请大神解释

共11条 1/2 1 2 跳转至

51单片机模拟串口的波特率计算公式看不懂,贴在下面了。请大神解释

助工
2014-03-10 11:11:14    评分

后续1:看了各位高手的回复: 看书上,1200用T1: 0Xe8.实际验证:错误

         用软件,0xe7.实际验证,错误。

 看到有的例程上,2400 用的是0xe8.验证:正确。 为什么呢?

代码如下:

TMOD=0x22; /*定时器1为工作模式2(8位自动重装),0为模式2(8位
自动重装) */
PCON=00;


TR0=0; //在发送或接收才开始使用
TF0=0; 

/**问题在这里**//
TH0=256-96; //9600bps 就是 1000000/9600=104.167微秒 执行的imer是
//       104.167*11.0592/12= 96     ;

//经验证,这样得出的TH0确实是9600. 如果改成1200.那么1000000/1200*11.0592/12=768.

TH0=256-768=-512.不对啊。且不说负值。TH0也就是8位大小。这根本不行啊。直接将TH0=0XE8,也不行。

请问,如果要是1200,程序怎么改???
TL0=TH0;
ET0=1;
EA=1;


高工
2014-03-10 11:34:06    评分
2楼

看来得翻书啊

网上有专门计算编程小软件计算的,,, 51单片机波特率计算小软件


高工
2014-03-10 11:37:14    评分
3楼
在这个论坛常用工具中有51单片机波特率计算的软件,你下载下来就可以计算好了,小伙子,勤动手会增长智慧的。

高工
2014-03-10 11:38:35    评分
4楼

9600和1200的区别,1200需要更长的延时,8位自动重装不够用。延时不了那么多。选用16位自动重装模式。

    SCON = 0x50;        //8位数据,可变波特率
    AUXR |= 0x40;        //定时器1时钟为Fosc,即1T
    AUXR &= 0xFE;        //串口1选择定时器1为波特率发生器
    TMOD &= 0x0F;        //设定定时器1为16位自动重装方式
    TL1 = 0x00;        //设定定时初值
    TH1 = 0xF7;        //设定定时初值
    ET1 = 0;        //禁止定时器1中断
    TR1 = 1;        //启动定时器1


这个是stc单片机工具生成的。移到自己的单片机,可能要改一下。


高工
2014-03-10 11:42:41    评分
5楼

高工
2014-03-10 11:44:03    评分
6楼
咱论坛好像米有这个小东西,,,

助工
2014-03-10 14:05:06    评分
7楼
对了,我用的是模拟串口。 上面所述的波特率软件计算。书上的计算都不好使。继续请高手指点

助工
2014-03-11 10:21:39    评分
8楼
继续求解,模拟串口的如何运算呢?

高工
2014-03-11 16:16:22    评分
9楼

你自己的晶振是多大?

进行过频率的处理吗?


院士
2014-03-11 21:40:15    评分
10楼
谢谢版主,我收藏了此贴。

共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]