PC与单片机串口通信程序实现及中断处理
"该资源涉及的是PC机与单片机之间的串口通信程序,使用了C51语言进行编写。程序主要包括初始化串口、发送数据和校验数据等关键功能。串口通信参数设定为波特率9600bit/s,每个数据包包含10个字节,其中1个字节作为起始位,8个字节为数据位,1个字节作为停止位。" 在嵌入式系统和物联网应用中,PC机与单片机的通信是常见的需求,串口通信(Serial Communication)因其简单、可靠而广泛使用。此程序示例提供了实现这一通信方式的基本框架。首先,我们需要了解C51程序,这是专门用于8051系列单片机的C语言扩展,具有丰富的库函数和硬件寄存器操作。 程序中定义的关键函数如下: 1. `UART_init()`:这是串口初始化函数,它负责设置单片机的串行通信接口。在这个例子中,`SCON`寄存器被设置为模式2(多机通信),允许8位数据传输。`TMOD`寄存器配置时钟模式,`TH1`用来计算波特率,确保在11.0592MHz的晶振频率下达到9600bps。最后,开启定时器T1(`TR1=1`),并设置串口中断(`ES=1`)。 2. `COM_send(void)`:这个函数用于发送数据到串口。虽然在给出的代码片段中没有具体实现,但通常会包含将数据写入SBUF(串口数据寄存器)和等待发送完成(通过检查TI或RI标志)的逻辑。 3. `CLU_checkdata(void)`:这个函数可能是数据校验的部分,用于检查接收到的数据是否有效。可能的实现包括CRC校验、奇偶校验或者简单的校验和。 中断服务函数`com_interrupt(void)interrupt 4 using 3`表明这是一个串口中断服务程序,中断源是串口接收(RI位被置1),并且使用了3号寄存器组。在中断服务程序中,通常会处理接收的数据,更新状态标志,并可能触发其他操作,如数据处理或发送响应。 这段代码提供了一个基础的串口通信模型,允许PC机与单片机之间交换数据。在实际应用中,还需要根据具体需求进行扩展和优化,例如增加错误处理机制、提高数据传输效率或支持更复杂的通信协议。
//采用异步方式传送数据,偶校验,一位结束位,传输的数据传输速率为9600bit/s。每个数据帧包含10Byte信息,1Byte作为帧起始标志,8Byte数据,1Byte的校验和。
//-----------------------函数声明,变量定义--------------------------------------------------------
#include <reg51.h>
#define COUNT 10 // 定义接收缓冲区大小
unsigned char buffer[COUNT]; //定义接收缓冲区
unsigned char point; //定义接收数据个数指示变量
void UART_init(); //串口初始化函数
void COM_send(void); //串口接收函数
unsigned char CLU_checkdata(void); //计算校验位函数
//--------------------------------------------------------------------------------------------------
// 函数名称: UART_init()串口初始化函数
// 函数功能: 在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
// 串口接收中断允许,发送中断禁止
//初始化串行口和波特率发生器
//--------------------------------------------------------------------------------------------------
void UART_init()
{
SCON =0x58; //选择串口工作方式,打开接收允许
TMOD =0x21; //定时器1工作在方式2,定时器0工作在方式1
TH1 =0xfd; //实现波特率9600(系统时钟11.0592MHZ)
TR1 =1; //启动定时器T1
ET1 =0;
ES=1; //允许串行口中断
PS=1; //设计串行口中断优先级
EA =1; //单片机中断允许
}
//--------------------------------------------------------------------------------------------------
// 函数名称: com_interrup()串口接收中断处理函数
// 函数功能: 接收包括起始位'S'在内的十位数据到数据缓冲区
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 彩虹rain bow point鼠标指针压缩包使用指南
- C#开发的C++作业自动批改系统
- Java实战项目:城市公交查询系统及部署教程
- 深入掌握Spring Boot基础技巧与实践
- 基于SSM+Mysql的校园通讯录信息管理系统毕业设计源码
- 精选简历模板分享:简约大气,适用于应届生与在校生
- 个性化Windows桌面:自制图标大全指南
- 51单片机超声波测距项目源码解析
- 掌握SpringBoot实战:深度学习笔记解析
- 掌握Java基础语法的关键知识点
- SSM+mysql邮件管理系统毕业设计源码免费下载
- wkhtmltox下载困难?找到正确的安装包攻略
- Python全栈开发项目资源包 - 功能复刻与开发支持
- 即时消息分发系统架构设计:以tio为基础
- 基于SSM框架和MySQL的在线书城项目源码
- 认知OFDM技术在802.11标准中的项目实践