[讨论] 新手请教:我的P89V51RD2的Baudrate的计算--哪里有误?

liluo44   2009-10-26 22:02 楼主
晶振: 32MHz
用timer2做Baudrate设置
TMOD = 0x21; //用mode3

根据公式 Baud rate = fosc / (16 × (65536 − (RCAP2H, RCAP2L)))
----------------------------------------------------------------------------------------------- -

如果Baudrate = 9600
可以拿到:RCAP2H = 0xff; RCAP2L = 0x30;

可我接收到的总不正确,在9600下拿到00,0e等长串的0和1,似乎实际Baudrate要小得多

我的计算错在那里?

回复评论 (13)

P51我没用过不过大概设置和51差不多!其实你学AVR,STM32挺不错的!何必看P51呢
点赞  2009-10-27 09:29
LZ可以找个 该单片机的 串口里程 参考一下  
片子不熟悉  不好说
每天进步一点点
点赞  2009-10-27 09:38
不知道你是不是参照P89V51RD2的数据手册计算的,因为51系列有好多衍生产品,执行一条指令用的机器周期数都不一样,所以波特率计算公式可能也不一样吧,没用过,不好说,你可以看一下是不是这个原因。
点赞  2009-10-27 09:46

如果计算与实际不一样,

一给出你实测结果,如示波器波形.二给出register描述(你在这里出问题可能很大),然后才能分板原因.单片机说实话相当弱的.都是小问题.细心一点都不会有这些问题了.
点赞  2009-10-27 09:57

6楼 redstone9910 该用户已被删除

提示: 作者被禁止或删除 内容自动屏蔽
点赞  2009-10-27 10:05
你的TMOD=0x21是选择哪个定时器?Timer0?还是Timer1?好像都没有选啊!如果选择模式3,应该是选择Timer0。建议楼主回去好好看看51的定时器的几种工作模式及其设置方法。
点赞  2009-10-27 13:40
哦,忘了给你一份关于你用的单片机的pdf文档了,希望你好好看看文档!多思考思考!
点赞  2009-10-27 13:41
你T2CON中的T2CLK和R2CLK有没有置1?
点赞  2009-10-27 15:39
感谢楼上诸位,TMOD设置的是其他TIMER,我搞混了。
选TIMER2做波特率发生器是下面的语句(T2CON)-->
T2CLK = 1;
R2CLK =1;

我参考的正是8楼提供的文件,波特率计算公式在第34页。
难道真要靠示波器去量吗??晕哦~~:L
点赞  2009-10-27 22:58
呵呵,自己认识到了,会了就行了!
点赞  2009-10-28 09:25
可是问题并没有解决啊

请问,大伙儿都是用示波器去量吗?
点赞  2009-10-28 23:29
思路
T2做波特率可划不来,改用T1吧,凡是T1能做的,T2都能做。
点赞  2009-10-28 23:41
T2做波特率发生器,试下这个公试 Baud rate = fosc / (32× (65536 − (RCAP2H, RCAP2L)))
点赞  2009-12-25 11:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复