51单片机串口通信中断程序详解

5星 · 超过95%的资源 需积分: 50 42 下载量 63 浏览量 更新于2024-07-20 3 收藏 395KB PDF 举报
该资源主要涉及51单片机的串口通信程序,包括一个基本的串口通信示例和一个中断方式的51单片机与计算机串口通信的C语言程序。示例程序中详细说明了如何配置波特率、初始化串口以及设置中断服务函数。 在51单片机的串口通信中,以下是一些关键知识点: 1. **串口通信模式**: - SCON寄存器:用于设置51单片机的串行通信模式。在这个例子中,SCON被设置为0x50,意味着工作在模式1,即8位UART(通用异步收发传输器)模式,允许接收和发送数据。 2. **波特率**: - 波特率决定了串口通信的数据传输速率。在示例中,通过计算TH1和TL1的值来设定波特率为9600bps,这里晶振频率为11.0592MHz。TH1和TL1是定时器1的高8位和低8位寄存器,它们的值用来决定定时器溢出的时间,从而间接设定波特率。 3. **定时器配置**: - TMOD寄存器:用于设置定时器的工作模式。TMOD=0x20表示定时器1工作在模式2,即8位自动重装载模式,适合于串口通信中的波特率发生器。 4. **中断系统**: - 开启总中断EA和串口中断ES:在主程序中,EA=1开启总中断,ES=1开启串口中断,使得串口接收到数据时能够触发中断服务程序。 5. **中断服务程序**: - UART_SER()函数是串行中断服务程序,处理接收中断(RI)和发送中断(TI)。当RI标志位被置1时,表明接收到数据,此时读取SBUF并将数据输出到P1口,同时把接收到的值再发回给计算机。当TI标志位被置1时,表示发送完成,清零TI标志位。 6. **51单片机与计算机的串口通信**: - 提供的C程序示例展示了如何在51单片机端初始化串口通信,通过设置SCON、TMOD和PCON寄存器,以及配置中断处理函数,实现与计算机的串口通信。 7. **C程序中的变量和标志位**: - char ch:用于存储接收到的数据。 - bit read_flag:作为读取状态的标志位,未在提供的代码片段中使用,通常用于标识数据是否已读取。 - init_serialcom()函数:负责初始化串口通信的相关设置,如模式选择、波特率设定等。 这个资源主要介绍了51单片机如何通过串口进行通信,包括基本的串口配置、波特率设定、中断服务以及C语言编程实现,是学习和应用51单片机串口通信的实用示例。