(十七)串口UART补充


补充内容:串口一帧数据的检测(一帧数据结束判断)


引入一帧数据检测的目的

比如比赛要求我们:发送格式open\r\n开灯,close关灯

我们不能发送openxxx,xxopen,xxopenxx,close\r\n,xxclose,closexx,等类似的字符串格式误触发

或者要求我们:发送’0’开灯,'1’关灯,同样我们不能发01,10,11,00这样的字符串误操作

所以我们必须严格按照比赛数据格式来操作,避免误触发不必要的现象和结果


实现思路

在这里插入图片描述

1. 先判断是否有数据接收
2. 再判断什么时候开始空闲?
3. 知道空闲后开始计时监测
4. 空闲计时达到30ms判为一帧数据结束


部分代码

//数据帧监测
bit rx_ok = 0
  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
编写80C51单片机串行接口的初始化程序,需考虑以下情况: 1. 确定使用哪种串行接口协议,如SPI、I2C或UART等。 2. 确定串行接口的波特率,通常以波特率发生器的配置为依据。 3. 配置相应的数据位数、停止位、校验位等参数。 4. 配置引脚,确定串行接口的引脚连接方式。 5. 开启串行接口的中断功能,以便接收和发送数据过程中的中断处理。 6. 初始化相关寄存器,如发送和接收缓冲区的寄存器等。 7. 根据具体需求,编写发送和接收函数,以方便后续的数据发送和接收操作。 一个可能的80C51单片机串行接口初始化程序如下: ``` // 选择SPI协议 // 设置波特率为9600 // 数据位数为8位,无校验位,1位停止位 // 引脚连接方式为P1.5为SCK(时钟),P1.6为MISO(主输入,从输出),P1.7为MOSI(主输出,从输入) // 启用串行接口中断 void Serial_Init() { TMOD = 0x20; // 设置定时器1的工作模式为定时器/计数器模式 SCON = 0x50; // 设置串口工作模式和波特率 TH1 = 0xFD; // 设置波特率发生器的初值,用于9600波特率 TL1 = 0xFD; PCON = 0x00; // 关闭具备波特率倍增的功能 TR1 = 1; // 启动定时器1 ES = 1; // 串行中断允许 // 配置相关引脚 P1M1 |= 0xE0; // P1.5~P1.7设为强推挽输出 P1M0 &= 0x1F; // 初始化相关寄存器 RI = 0; // 清零接收中断标识 TI = 0; // 清零发送中断标识 } void main() { Serial_Init(); // 初始化串行接口 // 后续操作,如发送和接收数据 // ... } ``` 以上程序只是一个示例,具体的初始化程序还需要根据实际情况进行调整和补充

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小爪.exe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值