16C752单片机UART通信例程解析
需积分: 13 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的开发者来说,这是一个了解基本串行通信操作的好例子。
2011-07-06 上传
2020-12-12 上传
2011-07-26 上传
2009-07-25 上传
2014-06-20 上传
2021-10-11 上传
2022-09-14 上传
2021-09-10 上传
2009-09-09 上传
yupengfeiCq
- 粉丝: 0
- 资源: 6
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全