[问题] 8051 RS232传送有问题

楼主: wannet (活出新的自己)   2013-05-19 22:44:49
我用8051测试送收1byte的资料,但资料的高字节却一直错误
我在8051设定一组十六进制数值0x00,透过rs232传送到监看软件,
结果却秀出十六进制0x80,正确应为0x00,而设定0x80就可以正常显示
从监看软件送到8051的P0倒是很正常
发现低位元都对,但高位元却一直错误,
有试过DEBUG模式,看到送出的资料是正确的,但电脑接收总是有问题
请问问题出在那里,谢谢您的帮忙~
附上程式及测试结果
程式
#include <reg52.h>
unsigned char c;
/*
作者: jiannan1828 (我也不願意)   2013-05-20 01:05:00
直接用SBUF = 0x00不要再卡一个while你振荡器用12MHz吗接收不要用call function的方式做call function有可能看错位置资料没对齐,又卡一个while,绝对会误判要计算一下指令的动作花费的机械周期
楼主: wannet (活出新的自己)   2013-05-20 09:42:00
有用过SBUF = 0x00的方式 送到PC还是0x80 收都正确收的时候 有指定收到0x00时才做动作 动作正常是12MHZ 在keil c里 设定11.059mhz感觉很像SBUF高位元不知道被啥占住了...
作者: cwl751005 (纬)   2013-05-20 11:35:00
i以参考看看我之前帮版友改的CODE,在1565篇用中断比用call function稳多了
作者: jiannan1828 (我也不願意)   2013-05-20 14:28:00
你baudrate设定多少?应该就要设定成12MHz 最好不要设11.0592MHz0xFD的话,12MHz的Baudrate应该是10416 不是9600你这边如果要使用9600,最好把震荡器换掉10416的Baudrate不是完美震荡0xFD产生9600的Baudrate 是基于11.0592MHz的震荡器你换震荡器后,应该就会正常了1565篇中,有提到 9600Baudrate@11.5092MHz另外建议,传送还是不要卡一堆while比较好直接写入register就可以了 TI旗标可以不用理他
楼主: wannet (活出新的自己)   2013-05-20 15:05:00
我刚刚改了12MHZ 结果还是一样还是我换一颗振荡器看看?还试了cw1751005大的方式 也是同样...谢谢各位的回复 卡在这问题两个礼拜了...(有可能是硬件吗?)刚刚去ATMEL下载source code 结果一样...我傻了= =
作者: jiannan1828 (我也不願意)   2013-05-20 17:34:00
是换成11.0592MHz的振荡器,不是重新换一个12MHz
楼主: wannet (活出新的自己)   2013-05-20 22:43:00
没有买11.0592的震荡器,明天去补一颗试试,谢谢~~^^找了网络上的12MHZ鲍率计算方式 成功收到想要的数值了!!!谢谢大家的帮助!!^______^
作者: jimmytzeng (jimmytseng)   2013-05-21 13:52:00
想请问计算方式有网页吗?
楼主: wannet (活出新的自己)   2013-05-21 19:15:00
作者: jimmytzeng (jimmytseng)   2013-05-22 11:06:00
谢谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com