dbkdz 发表于 2023-6-26 18:19:06

请问用串口1做接收和发送波特率配置


hsrzq 发表于 2023-6-26 20:04:56

同一个串口收发波特率肯定是相同的,非要不一样的话那你得用两个串口才行

dbkdz 发表于 2023-6-26 20:32:51

hsrzq 发表于 2023-6-26 20:04
同一个串口收发波特率肯定是相同的,非要不一样的话那你得用两个串口才行 ...

不是的,同一个串口我用STC89C52,用定时器2做接收波特率,定时器1做发送波特率,输入和输出波特率不一样。能用的。手上有一些STC12芯片想用掉。我再研究研究

hsrzq 发表于 2023-6-26 23:40:14

dbkdz 发表于 2023-6-26 20:32
不是的,同一个串口我用STC89C52,用定时器2做接收波特率,定时器1做发送波特率,输入和输出波特率不一样 ...

搞定了发出来看一下,或者你直接把STC89的发出来看看,想见识见识这种牛逼东西~~

dbkdz 发表于 2023-6-27 10:41:10

hsrzq 发表于 2023-6-26 23:40
搞定了发出来看一下,或者你直接把STC89的发出来看看,想见识见识这种牛逼东西~~ ...

89C52定时器2,你仔细看:
mov t2con,#00100100b ;T2当串口接收波特率,且启动T2; RLCK=1 定时器2的溢出脉冲做串行口模式1或3的接收时钟

我用T2做接收波特率,用T1做发送波特率。能看懂没?
mov tmod,#00100001b;定时器工作方式寄存器高4位是定时器1设置:工作模式2,8位计数器自动重载初值;低4位是定时器0设置 方式1 16位定时器/计数器

dbkdz 发表于 2023-6-27 10:42:24

hsrzq 发表于 2023-6-26 23:40
搞定了发出来看一下,或者你直接把STC89的发出来看看,想见识见识这种牛逼东西~~ ...

正在验证我的思路:

STC12C系列 晶振11.0592串口12400波特率 8位数据
独立波特率发生器 倍速SMOD打开 定时器时钟12T

ORL                PCON,#80H   ;使能波特率倍速位SMOD
MOV                SCON,#50H   ;8位数据,可变波特率
ANL                AUXR,#0FBH;定时器时钟12T模式
ORL                AUXR,#01H   ;串口1使用独立波特率发生器
ORL                AUXR,#10H   ;启动独立波特率发射

;思路 初始化检测拨码定位当前接收波特率。
   ;串口RXD接收完,再改固定2400波特率发送,发完了再检测拨码改回去

MOV        BRT,#0E8H ;2400重载值
MOV        BRT,#0F4H ;4800重载值
MOV        BRT,#0FAH ;9600重载值
MOV        BRT,#0FFH ;115200重载值

dbkdz 发表于 2023-6-27 11:18:50

hsrzq 发表于 2023-6-26 23:40
搞定了发出来看一下,或者你直接把STC89的发出来看看,想见识见识这种牛逼东西~~ ...

老兄,我验证成功,完美实现进来多种波特率,出去固定波特率或者拨码选择其他波特率。这个问题困扰我好几天了!终于解决了。思路就是:接收完了改波特率发送,发完了再改回去   (感谢我西安同学提供的思路)

dbkdz 发表于 2023-6-27 11:45:52

dbkdz 发表于 2023-6-27 10:42
正在验证我的思路:

STC12C系列 晶振11.0592串口12400波特率 8位数据


我有个产品就是要这样用的。1进1出1串口,半双工就行。全双工要用2个串口了。关键是我硬件电路PCB做完了一批了。恰好手上有几百个STC12单片机想用掉。就研究它。能解决问题就好了。

32G12K128 发表于 2023-6-27 14:36:32

楼主真棒,解决就好!
页: [1]
查看完整版本: 请问用串口1做接收和发送波特率配置