发新帖我要提问
12
返回列表
打印

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

[复制链接]
楼主: shaojunyun
手机看帖
扫描二维码
随时随地手机跟帖
21

void Uart_Init()
{
     TMOD=0x20;
    TH1=0xfd;
    TL1=0xfd;
    SCON=0x50;
    TR1=1;

    [color=Red]
    if(RI) dummy = SBUF;
    RI=0;
    [/color]
}
初始化时先读一下可不可以

使用特权

评论回复
22
刘前辈| | 2012-1-16 18:31 | 只看该作者
本帖最后由 刘前辈 于 2012-1-16 18:42 编辑
……但无一例外的是复位后全部恢复正常。


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

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

void receive()
{
     for( i=0;  table !=8;  )
    {
         while(!RI);
           table[ i ++ %7]=SBUF;
         RI=0;
    }
}   


、、

使用特权

评论回复
23
shaojunyun|  楼主 | 2012-1-17 12:08 | 只看该作者
22# 刘前辈
所以我怀疑是板子的问题,我总共换过4快板子,同是那个程序,有一块是正常显示,没出过差错。两外3块就有错误。但都是第一次下进程序的时候有错误,上电复位后恢复正常。

使用特权

评论回复
24
cjseng| | 2012-1-17 19:32 | 只看该作者
第一次返回的数字有所差别”“但无一例外的是复位后全部恢复正常”
请问你的第一次是怎么定义的?难道复位后不能认为是第一次?

你就直接说吧:用的什么单片机?如何把程序烧进去的?你的第一次是不是通过串口烧进去之后开始运行算作第一次

使用特权

评论回复
25
刘前辈| | 2012-1-18 12:26 | 只看该作者
把复位电路贴出来让大家学习学习。

使用特权

评论回复
26
harvard83| | 2012-1-18 14:42 | 只看该作者
23# shaojunyun
我以前做串口的时候 有过一样的问题
后来没有追究了 同等高人指点:)

使用特权

评论回复
27
shaojunyun|  楼主 | 2012-1-18 18:26 | 只看该作者
“第一次返回的数字有所差别”“但无一例外的是复位后全部恢复正常”
请问你的第一次是怎么定义的?难道复位后不能认为是第一次?

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

我用的是stc的51单片机(也试过stcd的5a单片机,情况一样),用的是stc 官方的下载工具下载,确实如你所说:烧进去后的第一次执行算作第一次,只要没上电复位过,执行结果都有错误(第一次返回1234567,之后返回81234567)。上电复位之后结果才就如预期所示(返回12345678)。

使用特权

评论回复
28
shaojunyun|  楼主 | 2012-1-18 18:28 | 只看该作者
25# 刘前辈 我用的几块板子都是上电复位。你的意思是让我把原理图贴出来么?

使用特权

评论回复
29
linjing| | 2012-1-19 01:26 | 只看该作者
数据接收不及时或者随机出现的接收错误导致接收数据丢失时,帧错位了

可以加帧识别标志的方法来处理,即数据以“帧”的形式发送,接收端通过识别帧的开始或者结束来分辨一帧完整的数据,比如,超时控制,标志字,转义字、标志位。。。总之,要主动的识别一帧数据,不能用简单的用收发固定为几个字节这种方式,不然,一旦出错,只能等复位了

使用特权

评论回复
30
dbtonny| | 2012-1-19 10:08 | 只看该作者
如果怀疑是板子干扰的问题,可以用示波器抓一抓TTL端和RS232端的波形,看是哪边的数据错了,再进一步查找原因

使用特权

评论回复
31
刘前辈| | 2012-1-19 12:10 | 只看该作者
#28楼   麻烦贴出上电复位电路及手动复位电路。怀疑复位电路有问题。


、、

使用特权

评论回复
32
shaojunyun|  楼主 | 2012-1-19 17:52 | 只看该作者
我已经把我用的3块板子的原理图 上传了 你们可以看看

使用特权

评论回复
33
shaojunyun|  楼主 | 2012-1-19 17:56 | 只看该作者
普中科技电路图(原理图).pdf (141.08 KB) 31# 刘前辈
我已经上传我试过3快板子的原理图了  麻烦前辈过目一下:)

韩's.PDF

677.03 KB

赵'S.pdf

47.54 KB

使用特权

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






、、

使用特权

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

复位后.jpg (53.35 KB )

复位后.jpg

未复位.jpg (53.19 KB )

未复位.jpg

使用特权

评论回复
36
shaojunyun|  楼主 | 2012-2-5 12:02 | 只看该作者
36# 刘前辈
唉,复位前后的闪烁时一样的,:Q:Q
不好意思 这次拖了这么久才来回复前辈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则