51单片机串口通信教程:中断方式实现C程序详解
需积分: 50 194 浏览量
更新于2024-07-23
7
收藏 395KB PDF 举报
该资源主要涉及51单片机的串口通信程序,包含RS232串口通信的C51语言实现,适合初学者理解串口通信的基本原理和编程方法。通过示例程序,讲解如何配置51单片机进行串口通信,包括波特率设置、中断服务程序的编写等。
在51单片机中,串口通信是设备间数据传输的重要方式,通常使用标准的RS232接口。在给出的第一个程序中,我们看到串口通信的初始化设置:
1. 打开串口调试工具,将波特率设置为9600,这意味着每秒传输9600个比特。
2. 晶振频率为11.0592MHz,这是计算波特率所必需的参数。
3. SCON寄存器设置为0x50,表示模式1(8位UART),并启用接收。
4. TMOD寄存器设置为0x20,将定时器1配置为模式2,用于8位重装载,以实现波特率发生器。
5. TH1和TL1寄存器设置适当的值(0xFD)以生成9600波特的波特率。
6. TR1置1,启动定时器1。
7. 开启总中断EA和串口中断ES,以处理接收中断和发送中断。
8. 主程序中,主循环不做任何操作,通信由中断服务程序处理。
9. 串行中断服务程序UART_SER()处理接收中断(RI)和发送中断(TI),读取SBUF中的数据并将其转发回电脑。
第二个程序提供了一个中断方式的51单片机与电脑进行串口通信的C程序实例:
1. 引入了必要的头文件<reg51.h>和<string.h>。
2. 定义了全局变量char ch和read_flag用于标记数据是否已读取。
3. init_serialcom()函数中,串口初始化设置与第一个程序类似,但包含了设置SMOD位,用于波特率翻倍(如果需要更高波特率)。
4. TH1的值计算为19200波特的波特率发生器设置。
这两个程序都展示了如何在51单片机上设置串口通信,以及如何通过中断处理数据的接收和发送。中断方式可以提高系统的实时性,因为单片机可以在等待中断的同时执行其他任务。通过这些示例,学习者可以深入理解51单片机的串口通信机制,并能够根据实际需求修改和扩展程序。
2018-12-28 上传
2022-06-15 上传
2019-04-01 上传
2020-08-03 上传
2022-11-10 上传
2016-05-25 上传
点击了解资源详情
菜鸡信息技术
- 粉丝: 23
- 资源: 8
最新资源
- 使用FLEX 和 Actionscript开发FLASH 游戏(二)
- Linux 那些事儿之我是U 盘
- Cache在嵌入式处理器中的使用问题
- 老友记(friends)词频统计.txt
- 使用FLEX 和 Actionscript开发FLASH 游戏(一)
- sap 增强 badi userexit customerexit
- 信息系统安全技术.doc
- Spring+Struts+Hibernate的详解课件.pdf
- WPF入门电子书--新手入门的开始
- 代码找茬游戏 PHP
- matlab统计函数
- llinux设备驱动程序(第三版)
- linux内核完全注释
- 内存DC介绍及其使用
- 难得的EXTJS中文手册
- asp 生成 html 代码