51串口通信问题,郁闷之极!

[复制链接]
3578|11
 楼主| 457878 发表于 2007-8-7 09:49 | 显示全部楼层 |阅读模式
这段代码有问题吗?收不到数据,郁闷之极!<br />(波特率绝对正确,上位机发出的波形正常!)<br /><br /><br />/*********************************************************************<br />串口初始化(由用户调用)<br />*********************************************************************/<br />void&nbsp;Init_UART()//串口初始化<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TMOD=(TMOD&nbsp;&&nbsp;0x0F)|0x20;&nbsp;&nbsp;&nbsp;&nbsp;//定时器1工作在模式2<br />&nbsp;&nbsp;&nbsp;&nbsp;SCON=0x50;&nbsp;&nbsp;&nbsp;&nbsp;//串口模式1,允许接收<br />&nbsp;&nbsp;&nbsp;&nbsp;ES=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//禁止串行中断<br />&nbsp;&nbsp;&nbsp;&nbsp;PCON&nbsp;|=&nbsp;0x80;&nbsp;&nbsp;&nbsp;&nbsp;//串口双倍速<br />&nbsp;&nbsp;&nbsp;&nbsp;TH1=0xF4;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL1=0xF4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//串口波特率为4800&nbsp;bps&nbsp;at&nbsp;11.0592MHz<br />&nbsp;&nbsp;&nbsp;&nbsp;TR1=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动定时器1<br />}<br />void&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Init_UART();<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!RI);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RI&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;SBUF;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SBUF&nbsp;=&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!TI);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TI&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}
 楼主| 457878 发表于 2007-8-7 10:55 | 显示全部楼层

开始怀疑STC51单片机的串口...

使用软串口试试!
 楼主| 457878 发表于 2007-8-7 11:26 | 显示全部楼层

经过试验,软串口是可以的:

说明STC51的硬串口有问题?或许是STC的串口不是标准串口?或者其实现出了问题?希望STC的斑竹看到能解释下。
mikesullen 发表于 2007-8-7 12:00 | 显示全部楼层

不喜欢看代码

问题肯定是在自己的程序。。。
 楼主| 457878 发表于 2007-8-7 14:21 | 显示全部楼层

4楼很武断,做事不能这样子的

  
udbit18 发表于 2007-8-7 16:28 | 显示全部楼层

子程序

这是C语言,对我有难度,但好像是子程序有点问题吧???
lypd96 发表于 2007-8-7 18:42 | 显示全部楼层

RE:

一定是楼主的程序问题,如一个单片机连串口都做不好,那卖给谁,而且STC的是靠串口下载程序的,如串口不能用,那你的程序怎么写进去的.<br />退一万步讲,就算是串口有问题,也轮不到你发现,因为这个MCU出来好几年了,有问题也早解决了
erhui_cn 发表于 2007-8-8 16:17 | 显示全部楼层

re

1.首先,将你的电脑串口23脚接起来试下是否正常;<br /><br />2.检查你的串口调试软件设置的单片机设置是否一致;<br /><br />3.单片机串口出来的232电路有没有问题.
lbx_00 发表于 2007-8-8 20:05 | 显示全部楼层

串口持续发送#0AAH,

用示波器察看,检查一下波特率,顺便也看一下波形,还有,您说收数据有问题,是不是指的没有返回码,如果是,发送也不能够排出。<br /><br />检查您的电气特性,波特率,通信模式,实验是不会出鬼的
xzl 发表于 2007-8-9 08:17 | 显示全部楼层

加一句 REN=1;

  
 楼主| 457878 发表于 2007-8-10 09:27 | 显示全部楼层

问题解决了!

都是看门狗惹的祸!太不听话,杀掉给大家吃了算了!<br /><br />这样就好了:<br /><br />while(1)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while(!RI)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WDTC();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;RI=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;SBUF;<br />&nbsp;&nbsp;&nbsp;&nbsp;Led_Test();<br />&nbsp;&nbsp;&nbsp;&nbsp;SBUF&nbsp;=&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(!TI);TI=0;<br />}<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

270

主题

885

帖子

3

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