51内核UART串行总线环形缓冲区驱动实现

本文介绍了51单片机如何利用串行总线的环形缓冲区驱动实现中断接收和发送数据。通过设置RI中断标志位,中断发送函数发送数据,而中断接收函数则保存符合协议的数据。在main函数中,通过轮询接收标志位处理接收到的数据。文中给出了仿照modbus协议的串口发送函数和中断处理函数的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:

1:驱动简述;

2:代码示例;

3:串口波形;

正文:

1:驱动简述;

驱动实现串口中断接收和发送数据,缓冲区使用环形缓冲区。发送:手动置RI中断标志位为1,发生中断,在中断发送函数中将需要发送的数据一一发送出去,具体见示例;接收:在中断接收函数中保存接收到满足协议的数据,后置接收成功标志位,最终在main函数while循环中轮询接收成功标志位是否置1,如果置1,处理接收到的数据。

2:代码示例;

以下代码模仿modbus协议,贴串口发送函数和中断处理函数,适用于51系列单片机,具体的串口协议可参考modbus协议或者自己根据需求定义。

uart.h文件

#define COM_TX1_Lenth 20
#define COM_RX1_Lenth 20

typedef struct
{ 
	unsigned char	TX_read;		  //发送读指针
	unsigned char	TX_write;		  //发送写指针
	unsigned char	B_TX_busy;		//忙标志

	unsigned char RX_Cnt;			//接收字节计数
	unsigned char	RX_read;      //接收读指针
	unsigned char RX_w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值