忧闷? 一个简单的串口程序调了两天.....

[复制链接]
3269|15
 楼主| TCL 发表于 2007-8-25 23:04 | 显示全部楼层 |阅读模式
用PC机的串口给GSM模块发0102030405061A就能发出,可用89C552控制MAX232发同样的数据(用串口调试程序检测数据是对的)可就发不出???
打开GSM模块发现他用的是MAX3232来接受的,难到是电平问题?
偶量PC机的232输出在-9.57.  89C552控制MAX232的输出在-8.31
难到是电平问题??????  星期天去拿示波器看看???
有谁碰到类似的问题吗?
一级菜鸟 发表于 2007-8-25 23:06 | 显示全部楼层

RS-232发送电平-8.31不会有问题,检查其他地方

最简单的办法是将MCU发送的数据接到PC上,观察PC实际接收到的数据
 楼主| TCL 发表于 2007-8-25 23:21 | 显示全部楼层

我以用串口调试程序监测了数据是对的,还回是那的问题?

最简单的办法是将MCU发送的数据接到PC上,观察PC实际接收到的数据?
我以用串口调试程序监测了数据是对的,还回是那的问题?
zusen 发表于 2007-8-26 08:34 | 显示全部楼层

有时是时间问题

字节与字节发送间 的 时间
一级菜鸟 发表于 2007-8-26 09:25 | 显示全部楼层

那么就继续检查,

设定PC发送给MCU你认为应该的应答,看看MCU是不是收到。以排除软硬件件问题
lfjwfm 发表于 2007-8-26 10:41 | 显示全部楼层

简单吧

计算机与单片机联时 2-2 3-3 5-5 直通,而单片机去控制其他串口数据时,得:2-3 3-2 5-5 (指串口的脚),因为所谓的收、发脚,是对计算机而言,那么当单片机主控是,就要反
ww4u 发表于 2007-8-26 18:56 | 显示全部楼层

长见识了

好像有这个问题。单片机与计算机通讯时就是用普通的串口线就可以了,而两个单片机中的连接就得反,怎么会这样呢?同样都是232啊?
 楼主| TCL 发表于 2007-8-26 21:20 | 显示全部楼层

哈, 问题查出了,........

换了11.0592的晶体去发可以了,原来的是12的晶体,计算的数据是F9(9600波特率)难道是12的晶体发的波特率误差比较大吗?
jxyhome 发表于 2007-8-26 21:31 | 显示全部楼层

晕倒

可能问题出在你自己吧,其实先可以测量下晶体频率的……
li_mu 发表于 2007-8-26 22:19 | 显示全部楼层

12的有误差,一般不要用

51基本教材都有讲的(晶振与串口误差表)
tcl 发表于 2007-8-27 15:51 | 显示全部楼层

12的有误差,一般不要用.?

tcl 发表于 2007-8-27 15:54 | 显示全部楼层

12的有误差,一般不要用.?

12的有误差?我知道,有误差?但是我6分种发一次,都两天连一次都不对吗?这误差也太大了点吧?
gyt 发表于 2007-8-27 17:31 | 显示全部楼层

用定时器2来做波特率就行了

一级菜鸟 发表于 2007-8-27 18:03 | 显示全部楼层

晶振误差为绝对误差,非相对,跟你多长时间发一次没关系

tcl 发表于 2007-8-28 08:59 | 显示全部楼层

晶振误差为绝对误差?

晶振误差为绝对误差?   是说在100个发送字节中有几个固定字节在发送时总是
错的吗?
eastbest 发表于 2007-8-28 09:06 | 显示全部楼层

建议楼主仔细看看串口的原理

51用的是异步串口,传一个10位的数据,Rx的波特率和Tx的误差不能超过5%,否则会出错,自己可以证明一下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

TCL

20

主题

76

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部