51系列串口中断服务程序详解及寄存器设置

5星 · 超过95%的资源 需积分: 10 23 下载量 166 浏览量 更新于2024-11-26 收藏 4KB TXT 举报
串口中断服务子程序是51系列单片机中处理串行通信的重要组成部分。在给定的代码片段中,我们主要关注以下几个关键知识点: 1. **中断服务子程序(Interrupt Service Routine, ISR)**: - "void RS()interrupt4" 定义了一个名为RS的中断服务子程序,它在接收或发送数据时被系统自动调用,其中断号为4。这意味着当串口接收或发送缓冲区有数据到达或处理完成时,该函数会被硬件触发。 2. **串口通信控制**: - SCON寄存器(串行通信控制寄存器)的设置:`SCON=0x50` 表示波特率设置为9600位/s,同时启用模式1(波特率分频为1:1),并且使能RI(接收标志位)中断。RI置1时,表示接收缓冲区有新数据可用。 3. **定时器T2的配置**: - `T2CON=0x34` 用于配置定时器T2以实现定时器/计数器功能,设置为工作于模式2,作为波特率发生器,配合上文的`RCAP2H=0xFF; RCAP2L=0xD7`(12.583MHz晶振下,9600波特率对应的分频系数)。 4. **数据发送与接收过程**: - 在中断服务子程序中,`Tempsd[Sendcount]=SBUF` 表示将接收到的数据存储到缓冲区`Tempsd`中,并更新发送计数`Sendcount`。 - 当接收到特定字符(如"C")时,`Select_flag=1`,可能表示选择某个功能或状态;而接收到'S'后,重置发送计数。 - 当`Sendcount==15`时,执行校验操作,如果四个特定位置的字符(1, 6, 11, 12)不全为"G",则设置`Control_flag=1`,可能表示数据校验失败。 5. **中断状态与控制**: - `ES=0` 和 `ES=1` 是中断嵌套级别控制,`ES=0` 使能中断,`ES=1` 禁止中断,用于管理中断上下文。 - `RI=0` 将接收标志位清零,表明已读取了接收缓冲区中的数据。 6. **辅助控制信号**: - `sbit`定义了外部中断引脚`duanxuan1`, `duanxuan2`, `weixuan1`, `weixuan2`,这些可能是用户输入的控制信号。 7. **字符编码与校验**: - `ucharcodetable`数组存储了字符编码表,用于转换ASCII字符到特定的LED显示码。 通过以上分析,这段代码描述了如何在51系列单片机中设计一个基本的串口通信系统,包括中断处理、波特率计算、数据收发、中断管理以及字符校验等功能。这些知识对于理解和开发基于51单片机的串口通信应用至关重要。