16F877 PIC单片机A/D转换C语言编程实战
5星 · 超过95%的资源 需积分: 10 7 浏览量
更新于2024-09-17
收藏 124KB DOC 举报
"本文档是关于PIC单片机使用C语言进行A/D转换编程的实例教程,主要针对16F877型号的单片机,介绍了如何初始化A/D转换,以及如何处理转换结果。文中通过示例代码详细讲解了A/D转换的初始化过程,并利用共用体来存储转换结果。此外,还包含了系统的I/O口初始化、延时子程序、报警子程序和中断服务程序的实现。"
在这个教程中,我们学习了如何在基于16F877的PIC单片机上应用A/D转换。A/D(模拟到数字)转换是将连续的模拟信号转换为离散的数字信号的过程,这对于处理传感器数据和其他物理测量值至关重要。在16F877单片机中,A/D转换的初始化是通过配置ADCON0和ADCON1寄存器完成的。
初始化A/D转换的关键步骤包括:
1. 设置ADCON0寄存器:在本例中,`ADCON0 = 0x51`,这选择了A/D通道RA2,开启了A/D转换器,并设置了转换时钟为8个系统时钟周期(8tosc)。
2. 配置ADCON1寄存器:`ADCON1 = 0X80`,这使得转换结果右移,ADRESH寄存器的高6位清零,并将RA2设置为模拟输入模式。
3. 允许A/D转换中断:通过设置`ADIE = 1`和`PEIE = 1`,允许A/D转换中断和外围中断。
在C语言编程中,为了处理A/D转换的10位结果,作者使用了一个共用体(union),`union adres`,它包含一个整型变量`y1`和两个字节型数组`adre[2]`。这样可以方便地访问和存储转换结果的高低字节。
除了A/D转换初始化,教程还提供了系统I/O口初始化的子程序,将D口配置为输出。延时子程序使用循环来实现固定时间的延迟,而报警子程序通过异或操作改变并输出D口的值来实现报警功能。
中断服务程序`void interrupt adint(void)`中,当A/D转换完成时,首先清除中断标志`ADIF = 0`,然后读取并存储A/D转换的低字节`ADRESL`和高字节`ADRESH`到共用体中。
通过这个实例,开发者能够学习到如何在实际项目中实现和管理A/D转换,以及如何结合中断系统处理转换结果,为基于PIC单片机的嵌入式系统开发提供了实用的指导。
2010-03-22 上传
2013-09-01 上传
2010-12-26 上传
点击了解资源详情
2021-10-07 上传
2023-08-18 上传
2021-10-30 上传
chichiwang
- 粉丝: 0
- 资源: 4
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载