oufuqiang 发表于 2012-8-3 01:55:24

STC15F系列单片机模拟串口57600bps@24MHz

上图上PDF:


oufuqiang 发表于 2012-8-6 20:46:47

论坛BUG?

XIVN1987 发表于 2012-8-6 20:51:33

牛!!!支持楼主。。。

oufuqiang 发表于 2012-8-20 13:19:08



oufuqiang 发表于 2012-8-20 13:19:47

hpdell 发表于 2012-8-25 10:40:09

牛牛牛XX

i_kkyu 发表于 2013-1-31 21:07:36

挺猛。。。

oufuqiang 发表于 2013-1-31 23:04:44

收到的数据全部回传,你用串口工具试试就知道了

qqtfh 发表于 2013-2-1 08:28:37

厉害!!!!!!!!!!!!!!!!!!1

xyz2008 发表于 2013-2-1 09:20:18

oufuqiang 发表于 2013-1-31 23:04 static/image/common/back.gif
收到的数据全部回传,你用串口工具试试就知道了

楼主,能否吧你的程序传上来,让我试试

mcuprogram 发表于 2013-2-1 09:27:45

牛!!!!!

oufuqiang 发表于 2013-2-1 10:31:12

xyz2008 发表于 2013-2-1 09:20 static/image/common/back.gif
楼主,能否吧你的程序传上来,让我试试

PDF都传上来了,你自己打开复制就好了啊。
本人向来不传.C文件,太懒了。

wbdos 发表于 2013-4-20 08:42:24

楼主啊 我怎么测试了下 丢包这么严重啊11.0592M 9600波特率下~

oufuqiang 发表于 2013-4-20 22:01:55

丢包?我都用了一年了,没丢啊。说详细点

STM32LOU 发表于 2013-8-6 09:54:22

厉害!!!!学习了

STM32LOU 发表于 2013-8-6 10:35:25

这个程序不怎么可靠,,因为没有采样,一般都用定时器的频率比波特率低采样。。

oufuqiang 发表于 2013-8-6 14:04:28

STM32LOU 发表于 2013-8-6 10:35 static/image/common/back.gif
这个程序不怎么可靠,,因为没有采样,一般都用定时器的频率比波特率低采样。。 ...

请仔细看帖。另外自己没有试过不要轻易下结论。

STM32LOU 发表于 2013-8-6 16:10:32

oufuqiang 发表于 2013-8-6 14:04 static/image/common/back.gif
请仔细看帖。另外自己没有试过不要轻易下结论。

我看了程序,根据波特率定时,,不怎么可靠,,再开个定时器采样,频率大于波特率

zndz410 发表于 2013-8-6 16:24:40

学习了。厉害!!!!

oufuqiang 发表于 2013-8-6 20:24:30

STM32LOU 发表于 2013-8-6 16:10 static/image/common/back.gif
我看了程序,根据波特率定时,,不怎么可靠,,再开个定时器采样,频率大于波特率 ...

定时器中断频率是波特率的三倍。

STM32LOU 发表于 2013-8-7 09:41:11

oufuqiang 发表于 2013-8-6 20:24 static/image/common/back.gif
定时器中断频率是波特率的三倍。

这个我知道,,是3倍,,但是也没有用,,,再X3检测也是一样。。

oufuqiang 发表于 2013-8-7 16:07:38

STM32LOU 发表于 2013-8-7 09:41 static/image/common/back.gif
这个我知道,,是3倍,,但是也没有用,,,再X3检测也是一样。。

膜拜高手……高手说的话我等平民百姓听不懂。

不知能否百忙中抽点空给我们普及一下关键技术呢?

STM32LOU 发表于 2013-8-7 16:54:55

oufuqiang 发表于 2013-8-7 16:07 static/image/common/back.gif
膜拜高手……高手说的话我等平民百姓听不懂。

不知能否百忙中抽点空给我们普及一下关键技术呢?


我也是菜鸟啊, 我看了你程序没有采样多少次高电平才算这位是高电平,我想了一下除非用两个定时器,我想有一种方法跟你差不多,就是刚开始检测起始位,把定时器频率调高点,然后检测到了起始位,就跟波特率一样,貌似跟你的方法一样的。。

demonkly 发表于 2013-8-19 01:32:52

好人,值得一试。

virginlulu 发表于 2013-9-16 13:41:25

接收只采样一次,就是在第三次定时中断的时候

virginlulu 发表于 2013-9-20 13:58:06

楼主的程序写的并不完善,不足有三:
第一:原则性错误,定时器优先级不是PX0而是PT0
第二:接收一位的采样不在中点,改进一下:
if(RX_IO==0)                                          
{                                                   
   receing=1;                                          
   rece_pls_count=4;   3改成4即可                           
   rece_bit_count=8;
}

第三:发送停止位只是拉高数据线即结束,导致停止位发送不全,连续发送的时候可能导致数据接收错误,最好发送的停止位不少于一比特的时间

菜鸟,说不对的地方请见谅,代码请自行修改                                 

jun66 发表于 2015-5-14 14:54:10

学习了,最近也在做模拟串口 15系统的单片机没办法和蓝牙进行透传 郁闷!

小李非刀 发表于 2015-5-14 17:11:21

STC官方例子有各种模拟串口程序

thyewfty 发表于 2017-10-7 15:19:07

{:smile:}试试。

easier 发表于 2017-12-30 11:31:44

      if (--rece_pls_count == 0) //三次脉冲计数够了吗?
      {
            //接收一位二进制位开始
            rece_pls_count = 3; //脉冲计数辅助变量复位

            if (rece_bit_count) //是在接收数据位还是停止位
            {
                //接收数据位开始
                receing_data = receing_data >> 1; //向右移一位,准备拼入一位二进制数据

                if (RX_IO == 1)
                {
                  receing_data = receing_data | 0x80; //如果收到的是二进制位"1",则拼入最高位中
                }

                rece_bit_count = rece_bit_count - 1; //已接收一位,接收位计数变量计数
            } //接收数据位结束

            else //如果已经收完8位数据
            {
                //就开始接收停止位
                receing = 0; //本字节已接收完毕

                if (RX_IO == 1) //停止位是"1"吗
                {
                  //是“1”
                  byte_received = receing_data; //将数据输出
                  received = 1; //摇旗示意数据正确接收完毕
                } //数据输出处理完毕
            } //停止位处理完毕
      } //接收一位二进制位结束
    } //接收中处理结束



// 看不到有機制,比較之前是否一樣,只是等待時間過
// 這樣 x10倍頻也沒用
页: [1]
查看完整版本: STC15F系列单片机模拟串口57600bps@24MHz