C51单片机串口中断接收与发送实战

版权申诉
5星 · 超过95%的资源 1 下载量 165 浏览量 更新于2024-06-26 收藏 462KB PDF 举报
"该资源为一个关于单片机C51串口中断接收函数的PDF文档,提供了中断接收和发送的示例代码,用于测试51单片机的中断接收和查询发送功能。文档中还包含了初始化串行通信、发送字符、发送字符串以及中断服务函数的实现。" 在嵌入式系统开发中,单片机C51是常见的微控制器,其串口通信是设备之间进行数据交互的重要途径。本文档主要涉及以下几个关键知识点: 1. **串口通信配置**: - `SCON`寄存器设置:在C51中,SCON寄存器用于配置串行接口的工作模式。在示例中,设置为`0x50`,意味着选择串行通信模式1(8位UART),并开启接收中断(REN)。 - `TMOD`寄存器设置:设置定时器1工作在模式2,作为波特率发生器。 - `PCON`寄存器设置:通过设置`SMOD=1`来增加波特率倍增,提高通信速率。 - `TH1`寄存器设置:用于设定波特率,这里设为`0xF4`,对应于4800波特率,假设系统时钟为11.0592MHz。 2. **中断使能**: - `IE`寄存器设置:通过`IE|=0x90`启用串行中断,其中`0x90`表示开启串行口中断(RI和TI)。 - `TR1`设置:启动定时器1,使其开始计数。 3. **串口发送函数**: - `send_chr_com`函数:发送单个字符,等待发送完成后再清除发送标志`TI`。 - `send_string_com`函数:发送指定长度的字符串,逐个字符调用`send_chr_com`发送。 4. **串口接收中断处理**: - `seril`函数是串口中断服务函数,中断发生时执行。在中断处理中,读取`SBUF`获取接收到的字符,并进行校验处理。 - 校验机制:接收到的每个字符与前一个字符异或,当接收到的数据达到预设长度(INBUF_LEN),且校验和正确(即最后一个字符接收到后校验和为0),则设置标志位`red_flg`,表示数据接收完整且无误。 这些示例代码和函数可以作为开发基于C51单片机的串行通信程序的基础,通过中断方式提高实时性,使得系统在接收数据时能够及时响应,而不需要持续轮询。在实际应用中,可以根据项目需求对这些函数进行扩展和优化,例如增加错误处理、数据解析等功能。