晶振: 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要小得多
我的计算错在那里?
P51我没用过不过大概设置和51差不多!其实你学AVR,STM32挺不错的!何必看P51呢
LZ可以找个 该单片机的 串口里程 参考一下
片子不熟悉 不好说
不知道你是不是参照P89V51RD2的数据手册计算的,因为51系列有好多衍生产品,执行一条指令用的机器周期数都不一样,所以波特率计算公式可能也不一样吧,没用过,不好说,你可以看一下是不是这个原因。
如果计算与实际不一样,
一给出你实测结果,如示波器波形.二给出register描述(你在这里出问题可能很大),然后才能分板原因.单片机说实话相当弱的.都是小问题.细心一点都不会有这些问题了.
你的TMOD=0x21是选择哪个定时器?Timer0?还是Timer1?好像都没有选啊!如果选择模式3,应该是选择Timer0。建议楼主回去好好看看51的定时器的几种工作模式及其设置方法。
哦,忘了给你一份关于你用的单片机的pdf文档了,希望你好好看看文档!多思考思考!
你T2CON中的T2CLK和R2CLK有没有置1?
感谢楼上诸位,TMOD设置的是其他TIMER,我搞混了。
选TIMER2做波特率发生器是下面的语句(T2CON)-->
T2CLK = 1;
R2CLK =1;
我参考的正是8楼提供的文件,波特率计算公式在第34页。
难道真要靠示波器去量吗??晕哦~~:L
可是问题并没有解决啊
请问,大伙儿都是用示波器去量吗?
思路
T2做波特率可划不来,改用T1吧,凡是T1能做的,T2都能做。
T2做波特率发生器,试下这个公试 Baud rate = fosc / (32× (65536 − (RCAP2H, RCAP2L)))