我回复的4个语句放在if(EnterTag)中,就说明,接到了4个字节,而且也是02开头的,就算是有问题,也只会回复4个字节,
回复 chen您说的静态变量有点道理,我试下, 其实我也是有前缀的,02开头被接收,FF结尾,除非那干扰就是02,不然是不会影响数组数据的。 回复 chen我刚才试下,中断里改成全局变量就OK,那延时加不加都没有关系了,确实是中断重复定义局部变量的问题,您这一说就明白是什么一回事了,非常感谢!!! 梁工 发表于 2023-2-6 15:26
串口都要用中断方式收发,特别是接收。比如115200的波特率,86.8us中断一次,进中断读SBUF保存在接收数组 ...
没用的,
10几年前的事, 用的 AT89C51, 用串口中断, 9600 就掉数据,
分析原因, PC机传输速度太快了, 51只有一个SBUF, 没有接收缓冲区 现在的单片机, 速度比以前快了约十倍, 估计要好多了.
最后强调一下, 通过品usb转串口的, 实际通讯速率(平均速率)都有所下降. LAOXU 发表于 2023-2-7 19:19
没用的,
10几年前的事, 用的 AT89C51, 用串口中断, 9600 就掉数据,
我90年代就开始用8031用于工控,115200波特率都不会丢数据,如果这个MCU用9600都丢数据,几十年前它就不会存在于市场。当年的8031、Z80、6502,三分天下。
9600都丢数据,一定要仔细查查自己的程序了。 STC32G12K128, STC8H8K64U, STC8A8K64D4 等新款 8051,都有 DMA 支持4组串口,
====谁不用DMA, 谁自己拿自己开心,DMA 支持串口, 6M bps 太轻松
STC15F2K60S2如嫌慢,有 STC15H2K64S4-36I-LQFP44/LQFP32, 同频,速度快 80%
STC15H2K64S4的资料见STC8G系列的资料
梁工 发表于 2023-2-7 20:08
我90年代就开始用8031用于工控,115200波特率都不会丢数据,如果这个MCU用9600都丢数据,几十年前它就不 ...
这个不用争了, 确实存在!!!
一个老司机可能犯错, 数个老司机集中攻关, 怎可能犯低级错误?
当时用于电力系统, 上位机PC, 制作功能单一的 RS232toRS232 模块, 用以解决通讯掉数据问题.
由于年代较早, 那时的电力系统监控通讯, 估计还没有用到通讯校验.
最后说一下, 上位PC和下位控制系统, 都是用全米进口的(电力局有钱,国家投资)
用全米进口的上/下系统(不是一家公司的), 在通讯时, 一天有时会丢几次数据,所以加了 RS232toRS232 模块, 以确保可靠性
页:
1
[2]