陈家乐 发表于 2025-12-15 23:47:18

【软件模拟】STC15单片机串口接收超时检测功能实验 | STC8H2K12U/STC8H2K32U

【项目名称】STC15W408AS单片机的串口接收超时实验(软件模拟)

【项目配置】所有的STC15系列都可以用这份代码,其他的非STC89/90单片机请自行修改单片机头文件为该单片机
         的头文件,保证适配性;
         串口:串口1
         串口波特率:9600(因为传统8051单片机不允许太高的波特率,所以为了适配,本实验采用9600)
         串口波特率发生器:定时器2(STC15W408AS单片机没有定时器1)
         串口数据编码格式:GB2312,串口数据不能有中文,中文打印请自行修改为UTF-8格式

【项目描述】使用STC15W408AS单片机核心板,用CH340转串口模块,或者使用STC官方的一箭双雕/双串口工具
         接到计算机,打开串口,单片机上电时会用串口1打印"System OK\r\n"的上电成功信息,并且需
         要注意!因为串口1的发送和接收均采用中断形式进行收发,所以在初始化时需要开启EA,否则设备
         就会卡死在串口1发送代码上,【注意】巨坑!STC15因为内核比较老,在变量处于xdata区域时,需
         手动开启P_SW2|=0X80;的语句,打开访问拓展寄存器XSFR的语句,经过实测,不开启访问不了xdata
         的变量,出现奇奇怪怪的毛病;然后在串口工具上发送小于接收缓冲区和发送缓冲区的字符串(代码
         中默认缓冲区均为64个字节),会发现一收一发,不会丢包,这就是串口超时接收的好处,不定长接收,
         而且基本不会丢包,并且程序采用定时器0当作串口1超时计数定时器,和任务调度系统一起,不占用额外
         的硬件定时器资源!

【项目日期】2025年12月15日

【项目作者】陈家乐

wangxiangtan 发表于 2025-12-16 08:25:02

感谢分享{:4_202:}

神农鼎 发表于 2025-12-16 08:54:43

STC15系列,可以考虑 STC32G8K64, 有硬件串口超时中断







_奶咖君_ 发表于 2025-12-16 08:55:36

我看你用的也是比较老的 408AS 单片机,,是不是后来的 STC15W4K32S4,就没有这个问题了0.0.不开也是可以正常访问xdata

神农鼎 发表于 2025-12-16 08:58:07










陈家乐 发表于 2025-12-16 14:17:07

wangxiangtan 发表于 2025-12-16 06:25
感谢分享

{:4_168:}调试了很久的

陈家乐 发表于 2025-12-16 14:17:55

_奶咖君_ 发表于 2025-12-16 06:55
我看你用的也是比较老的 408AS 单片机,,是不是后来的 STC15W4K32S4,就没有这个问题了0.0.不开也是可以正 ...

没办法啊,初学者都爱用老单片机,我也没办法,手上也没存货,买个板子比8051U还要贵

陈家乐 发表于 2025-12-16 14:18:18

_奶咖君_ 发表于 2025-12-16 06:55
我看你用的也是比较老的 408AS 单片机,,是不是后来的 STC15W4K32S4,就没有这个问题了0.0.不开也是可以正 ...

换了STC8之后就没有这个问题了,搞得我排查了很久
页: [1]
查看完整版本: 【软件模拟】STC15单片机串口接收超时检测功能实验 | STC8H2K12U/STC8H2K32U