可以参考这篇**

[复制链接]
7591|32
 楼主| 发霉的味道 发表于 2007-2-6 09:22 | 显示全部楼层

???

我已经从昨天等到今天了,咋给提示的大侠就这么少呢!!!
 楼主| 发霉的味道 发表于 2007-2-6 09:53 | 显示全部楼层

我还是在线等啊!!

zhaoyu2005 发表于 2007-2-6 10:41 | 显示全部楼层

我也想知道怎么弄

看手机模块中西门子和WAVECOME都可以设成波特率自适应,就是不知道怎么弄的,一般发"AT+回车"看返回"AT"
xxdcq 发表于 2007-2-6 12:48 | 显示全部楼层

如果只是串口发送的控制命令控制某个终端

不需要关心具体是什么数据,我可以通过对脉冲串的波形进行分析,然后得到伪命令去替代真正的控制命令也可以实现对终端的控制
可以不需要知道波特率
我们现在的方案可以做到对最高57600的串口命令进行识别
www.yofeng.com

如果需要关心具体数据目前还没有更可靠的办法用真实的波特率得到正确的数据内容
mon51 发表于 2007-2-6 13:26 | 显示全部楼层

请看下面,你主机发出0X11,就行了。

               CLR     A
                MOV     RCAP2H,A
                MOV     RCAP2L,A
                MOV     TL2,A
                MOV     TH2,A
                MOV     T2MOD,A
                MOV     T2CON,A
L4:             JB      RXD,L4
L6:             JNB     RXD,L6
L7:             SETB    TR2
L8:             JNB     RXD,L10
                JNB     TF2,L8
L10:            JNB     RXD,L10
L12:            JNB     RXD,L14
                JNB     TF2,L12
L14:            JNB     RXD,L14
L15:            CLR     TR2
                JB      TF2,InitSerial
                MOV     R7,TL2
                MOV     R6,TH2

                MOV     A,R6
                CLR     C
                RRC     A
                MOV     R4,A
                MOV     A,R7
                RRC     A
                ADD     A,R7
                MOV     R7,A
                MOV     A,R4
                ADDC    A,R6
                MOV     R6,A

                MOV     A,R7
                ADD     A,#010H
                MOV     R7,A
                CLR     A
                ADDC    A,R6
                MOV     R6,A

                MOV     A,R7
                MOV     R0,#05H
L22:            XCH     A,R6
                CLR     C
                RRC     A
                XCH     A,R6
                RRC     A
                DJNZ    R0,L22
                MOV     R7,A
                CLR     C
                CLR     A
                SUBB    A,R7
                MOV     BRL,A
                CLR     A
                MOV     TL2,A
                MOV     TH2,A
                MOV     T2MOD,A
                MOV     T2CON,A

                ORL     PCON,#080H      ; set SMOD1 to double baudrate
                MOV     BDRCON,#01EH    ; set TBCK/RBCK/BRR/SPD
                MOV     SCON,#01011010B ; Init Serial Interface

bugking 发表于 2007-2-6 14:40 | 显示全部楼层

串行通信波特率的一种自动检测方法

这个博客上介绍的自动侦测波特率,和串口的介绍
http://www.gjwtech.com/scomm/scautodetectbaudrate.htm
 楼主| 发霉的味道 发表于 2007-2-6 15:04 | 显示全部楼层

!!

不知道周立功单片机所写的那种方法可行性,先试验一下再说.
zizzfish 发表于 2007-2-6 20:41 | 显示全部楼层

晕。把原理搞懂就很好做了。

   
-----     ---
    |     |
    |     |
    |     |
     -----
--》  t 《---

通过t就可以计算波特率了。
1、在第一个下降沿启动定时器。
2、等待上升沿,关闭定时器。
用T2做定时。
一般来说只要读取TL2的值就可以了。TH2都是0。
1/rate=t=TL2*fosc/12
fosc/(32*(65536-TH2TL2))=TL2*fosc/12
通过公式化简可以得到一个简单的关系式。通过关系式就可以编程了。
我用C做的,可以在1S内从4.8~115.2k自适应。
小于4.8K还要考虑TH2。本来是给SM5964写ISP程序,由于ISP的空间有限就不考虑TH2了。
自适应过程其实不一定要发0X055,只要LSB是1就可以了。
改天理一下程序供大家参考。
mohanwei 发表于 2007-2-6 21:11 | 显示全部楼层

很简单,在程序里实现一个逻辑分析仪……

不断采集端口的电平,在一段时间内记录下所有上升沿和下降沿出现的时间,保存到内存里,然后分析它。
比如说先找出最短的跳变间隔时间,将它当作1位,算出波特率,然后套其它的,如果都对就到此结束。如果不对,将它当作2位,算出波特率,套其它的……依此类推,肯定可以算出来的,除非发送一方不断改变波特率,呵呵
hotpower 发表于 2007-2-6 23:54 | 显示全部楼层

波特率自动检测的方法太多,真不知选什么好~~~

 楼主| 发霉的味道 发表于 2007-2-8 19:35 | 显示全部楼层

!!

哦,试试再说......
牛皮詹秀波 发表于 2007-2-8 20:33 | 显示全部楼层

_

张明峰的那本书上说的很详细,去看看
05cjb 发表于 2007-3-9 23:00 | 显示全部楼层

可以参考这篇**

串行通信波特率的一种自动检测方法
http://www.mcu361.com/News.asp?Id=97
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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