完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
#include
void ConfigUART(unsigned int Baud); void main() { ConfigUART(9600); while(1) { while(!RI); RI = 0; SBUF = SBUF+1; while(!ti); TI = 0; } } void ConfigUART(unsigned int Baud) { SCON = 0x50; TMOD &= 0x0f; TMOD |= 0x20; TH1 = 256-(11059200/12/32)/Baud; TL1 = TH1; TR1 = 1; } 为什么这段代码扫进单片机后用串口助手返回的信息是81开始呢?不应该是传说0,返回为01么? 串口截图在2楼,请大家不吝赐教~~~
|
|
相关推荐
12个回答
|
|
|
本帖最后由 andy_wsj 于 2015-4-21 11:06 编辑
波特率设置可能有问题,再仔细计算一下 检查SMOD位是否为1,你程序中是按加倍来计算的
最佳答案
|
|
|
|
|
|
串口截图~~~~~~~~~~
|
|
|
|
|
|
波特率用的是TI配置9600和串口助手设置的是一直的,应该不是这个问题吧。 |
|
|
|
|
|
|
|
|
|
|
|
重新设置波特率
|
|
|
|
|
|
大神,我没有示波器耶,还有我没有用PCON = 0x80,这个波特率翻倍我知道。你的意思是波特率出错到这数据传输出错造成的么?但是UART是单片机内部的一个通信模块,不考虑外围电路吧,这个程序我对照了小宋老师的然后改成跟他一样的,可是结果还是不对。。。。。。。。。。 |
|
|
|
|
|
波特率公式不是TH1 = 256-(11059200/12/2/16)/Baud;TL1 = TH1;这个应该没错吧? |
|
|
|
|
|
PCON 的最高位为1表示波特率翻倍,使用公式256-(11059200/12/32)/Baud
如果PCON的最高位没有设置,为0的话使用公式256-(11059200/12/16)/Baud |
|
|
|
|
|
本帖最后由 追梦2006 于 2015-4-21 12:02 编辑
andy_wsj 发表于 2015-4-21 11:46 反了吧?书上是翻倍为256-(11059200/12/16)/baud;我照你说的改变了波特率为这个后串口显示是从06开始了 |
|
|
|
|
|
本帖最后由 andy_wsj 于 2015-4-21 12:19 编辑
是说反了 初始化加一句TI = 1; 清空发送寄存器试试看,因为发送寄存器里面可能有一个初值 或者写成SCON = 0x52 TH = 0xFD //虽然能整除,改一下试试 TL = 0xFD |
|
|
|
|
|
好的,非常感谢您的指导,谢谢哈
|
|
|
|
|
|
本帖最后由 追梦2006 于 2015-4-21 12:36 编辑
终于决解了,一直以为我的板子用的是11.059200的晶振,刚才看原理图才发现用的是12M的,切12M只能配置1200波特率误差才不会影响到传输出错,所以串口助手也要设置为1200波特率。怪我粗心了,谢谢您能耐心指导,祝您及您的家人生活幸福愉快。谢谢。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
331 浏览 0 评论
532 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
842 浏览 0 评论
1383 浏览 2 评论
824 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16920 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 20:13 , Processed in 0.999818 second(s), Total 100, Slave 80 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1793