16C752单片机UART通信例程解析

需积分: 13 5 下载量 139 浏览量 更新于2024-09-10 收藏 2KB TXT 举报
"16C752 经典例程" 这个资源是一个关于16C752微控制器的经典程序示例,主要用于串行通信的接收和处理。16C752是一款由Microchip Technology公司生产的8位单片机,常用于嵌入式系统设计,具有多个通用I/O端口、定时器和串行接口等功能。 在提供的代码中,可以看到以下几个关键知识点: 1. **串行通信**:16C752的UART(通用异步收发传输器)被用来进行串行通信。`init_UART()`函数初始化UART设置,包括波特率配置。在这里,使用的是9600波特率,通过设置`UARTA_LCR`寄存器的DLAB位来访问DLL和DLH寄存器,分别设置低8位和高8位的波特率分频值。 2. **中断管理**:`EINT`指令开启全局中断,而`DINT`则关闭它。`*IFR=0x3f;`清除了所有中断标志,`*IMR=0x01;`则只允许串行中断(UART)发生。中断处理是实时系统中非常重要的部分,可以确保及时响应外部事件。 3. **数据缓冲区**:`receive_232_data`数组用作接收数据的缓冲区,`receive_count`记录已接收到的数据量,`deal_count`表示已处理的数据量,`over_flag`用于标记数据接收完成。 4. **循环处理**:主函数`main()`中的循环检查是否有未处理的数据,并通过检测UART的线路状态寄存器(UARTA_LSR)的第6位(TX空闲位)来决定是否发送数据。如果数据已经接收并处理完毕,`deal_count`会复位,以准备接收新的数据包。 5. **数据发送**:当检测到可以发送数据时,程序会将`receive_232_data`数组中的16个字节通过UARTA_THR寄存器逐个发送出去。 6. **原始帖子说明**:原始帖子可能需要积分才能访问,但提供者认为内容可能不值得那么多积分,所以分享出来让其他人以较低的成本尝试。 7. **系统初始化**:`SystemInit()`函数初始化了系统的其他配置,如时钟设置、看门狗定时器和中断设置等。具体的配置取决于16C752的特定应用需求。 8. **空函数**:`PHANTOM()`函数在这个示例中为空,可能是预留的函数位置,或者在实际应用中会有特定功能。 9. **循环延时**:注释掉的部分代码使用了一个循环来模拟延时,这种简单的延时方法在一些简单的系统中常见,但在高精度应用中通常会被更精确的延时函数所取代。 此代码段展示了16C752如何处理串行通信,包括数据的接收、存储和发送。对于学习16C752的开发者来说,这是一个了解基本串行通信操作的好例子。