【软件模拟】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日
【项目作者】陈家乐
感谢分享{:4_202:} STC15系列,可以考虑 STC32G8K64, 有硬件串口超时中断
我看你用的也是比较老的 408AS 单片机,,是不是后来的 STC15W4K32S4,就没有这个问题了0.0.不开也是可以正常访问xdata
wangxiangtan 发表于 2025-12-16 06:25
感谢分享
{:4_168:}调试了很久的 _奶咖君_ 发表于 2025-12-16 06:55
我看你用的也是比较老的 408AS 单片机,,是不是后来的 STC15W4K32S4,就没有这个问题了0.0.不开也是可以正 ...
没办法啊,初学者都爱用老单片机,我也没办法,手上也没存货,买个板子比8051U还要贵 _奶咖君_ 发表于 2025-12-16 06:55
我看你用的也是比较老的 408AS 单片机,,是不是后来的 STC15W4K32S4,就没有这个问题了0.0.不开也是可以正 ...
换了STC8之后就没有这个问题了,搞得我排查了很久
页:
[1]