- 打卡等级:以坛为家III
- 打卡总天数:620
- 最近打卡:2025-12-16 09:11:00
已绑定手机
金牌会员
- 积分
- 1674
|
【项目名称】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日
【项目作者】陈家乐
|
|