51单片机如何修改波特率9600改成2400

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:23:35
本人有一个项目,默认波特率是9600,但是实际需要2400得波特率。我不知道如何改好。尝试了几次。源程序都能编译通过,但是调试就是不成功。单片机放入系统后用串口调试助手发送得数据根本就无法接收,希望指点。
我把程序帖到了我的空间,下边还有电路图 ,希望能得到具体改正方法。原理我也明白,但是就是改不出来,郁闷。

http://hi.baidu.com/dew2901/blog/item/e7b177383221672696ddd849.html

用下面公式重新计算用于产生波特率的定时器重载值:
设9600波特率时定时器重载值是X;
设2400波特率时定时器重载值是Y;
当定时器重载值是8bit时(传统的51单片机型号,如AT89C51的T1):
Y=256-((256-X)*4)
当定时器重载值是16bit时(较新的51单片机型号,如C8051F系列的Timer3):
Y=65536-((65536-X)*4)
//-----------------------------------------------
粗略看了一下你的程序,你可以调整一下MAX_DELAY这个参数。我没具体计算过,只是怀疑是不是波特率降低之后,发送数据的时间变长了,如果发送数据的时间超过MAX_DELAY就会发送错误。
仅供参考。

把定时器的初值改变一下,这个初值是要根据你使用的晶振来确定的。网上有51单片机波特率计算软件,只要你输入定时器工作方式和晶振频率就可以自动计算出初值,并显示误差。一般误差要小于1最好!你到百度里搜下!

如果用的是11.0592Mhz的晶振的话,把
//TL1 = 0x0FD;
//TH1 = 0x0FD;
改成:
//TL1 = 0x0F4;
//TH1 = 0x0F4;