关于串口很奇怪的一个问题

[复制链接]
sytu_chyq 发表于 2012-1-16 15:54 | 显示全部楼层

  1. void Uart_Init()
  2. {
  3.      TMOD=0x20;
  4.     TH1=0xfd;
  5.     TL1=0xfd;
  6.     SCON=0x50;
  7.     TR1=1;

  8.     [color=Red]
  9.     if(RI) dummy = SBUF;
  10.     RI=0;
  11.     [/color]
  12. }
初始化时先读一下可不可以
刘前辈 发表于 2012-1-16 18:31 | 显示全部楼层
本帖最后由 刘前辈 于 2012-1-16 18:42 编辑
……但无一例外的是复位后全部恢复正常。


上电复位电路没起作用?加入开机延时100ms或以上。

我完全照你程序运行的,结果一切正常。用的是萧峰的串口调试器,晶控的51实验板。

  1. void receive()
  2. {
  3.      for( i=0;  table !=8;  )
  4.     {
  5.          while(!RI);
  6.            table[ i ++ %7]=SBUF;
  7.          RI=0;
  8.     }
  9. }   


、、
 楼主| shaojunyun 发表于 2012-1-17 12:08 | 显示全部楼层
22# 刘前辈
所以我怀疑是板子的问题,我总共换过4快板子,同是那个程序,有一块是正常显示,没出过差错。两外3块就有错误。但都是第一次下进程序的时候有错误,上电复位后恢复正常。
cjseng 发表于 2012-1-17 19:32 | 显示全部楼层
第一次返回的数字有所差别”“但无一例外的是复位后全部恢复正常”
请问你的第一次是怎么定义的?难道复位后不能认为是第一次?

你就直接说吧:用的什么单片机?如何把程序烧进去的?你的第一次是不是通过串口烧进去之后开始运行算作第一次
刘前辈 发表于 2012-1-18 12:26 | 显示全部楼层
把复位电路贴出来让大家学习学习。
harvard83 发表于 2012-1-18 14:42 | 显示全部楼层
23# shaojunyun
我以前做串口的时候 有过一样的问题
后来没有追究了 同等高人指点:)
 楼主| shaojunyun 发表于 2012-1-18 18:26 | 显示全部楼层
“第一次返回的数字有所差别”“但无一例外的是复位后全部恢复正常”
请问你的第一次是怎么定义的?难道复位后不能认为是第一次?

你就直接说吧:用的什么单片机?如何把程序烧进去的?你的第一次是不是通过串口烧 ...
cjseng 发表于 2012-1-17 19:32

我用的是stc的51单片机(也试过stcd的5a单片机,情况一样),用的是stc 官方的下载工具下载,确实如你所说:烧进去后的第一次执行算作第一次,只要没上电复位过,执行结果都有错误(第一次返回1234567,之后返回81234567)。上电复位之后结果才就如预期所示(返回12345678)。
 楼主| shaojunyun 发表于 2012-1-18 18:28 | 显示全部楼层
25# 刘前辈 我用的几块板子都是上电复位。你的意思是让我把原理图贴出来么?
linjing 发表于 2012-1-19 01:26 | 显示全部楼层
数据接收不及时或者随机出现的接收错误导致接收数据丢失时,帧错位了

可以加帧识别标志的方法来处理,即数据以“帧”的形式发送,接收端通过识别帧的开始或者结束来分辨一帧完整的数据,比如,超时控制,标志字,转义字、标志位。。。总之,要主动的识别一帧数据,不能用简单的用收发固定为几个字节这种方式,不然,一旦出错,只能等复位了
dbtonny 发表于 2012-1-19 10:08 | 显示全部楼层
如果怀疑是板子干扰的问题,可以用示波器抓一抓TTL端和RS232端的波形,看是哪边的数据错了,再进一步查找原因
刘前辈 发表于 2012-1-19 12:10 | 显示全部楼层
#28楼   麻烦贴出上电复位电路及手动复位电路。怀疑复位电路有问题。


、、
 楼主| shaojunyun 发表于 2012-1-19 17:52 | 显示全部楼层
我已经把我用的3块板子的原理图 上传了 你们可以看看
 楼主| shaojunyun 发表于 2012-1-19 17:56 | 显示全部楼层
31# 刘前辈
我已经上传我试过3快板子的原理图了  麻烦前辈过目一下:)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
刘前辈 发表于 2012-1-20 12:54 | 显示全部楼层
既然是买的成品板,应该没什么问题。 那么LZ的供电电源的开关是装在了交流端?一定要保证装在直流端。复位电源VCC对上升沿有要求,不能缓慢上升,要陡直上升。 韩.PDF 图中  AVR复位电容画反了,另2个正确。总不会3个板子都有同样的问题吧。






、、

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| shaojunyun 发表于 2012-1-20 20:58 | 显示全部楼层
34# 刘前辈
这个我也觉得是画反了,今天我又用普中的那块板子试了一下那个程序,用的是stc90c516RD+单片机,stc官方下载工具下载,供电用的是USB连接到电脑的,我用串口调试助手发送和接受,我把图剪切了,你可以看看。
(未复位的那张第一次返回1234567,第二次返回81234567;
复位后的那张正常返回,两侧都是12345678。)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| shaojunyun 发表于 2012-2-5 12:02 | 显示全部楼层
36# 刘前辈
唉,复位前后的闪烁时一样的,:Q:Q
不好意思 这次拖了这么久才来回复前辈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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