16F877 PIC单片机A/D转换C语言编程实战
5星 · 超过95%的资源 需积分: 10 67 浏览量
更新于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单片机的嵌入式系统开发提供了实用的指导。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2011-05-25 上传
2010-12-26 上传
2021-12-13 上传
2021-10-02 上传
2010-03-22 上传
2021-10-30 上传
chichiwang
- 粉丝: 0
- 资源: 4
最新资源
- ARMSYS2410-Bmanual 开发板硬件用户手册
- VC下的supermap
- Makefile中文教程
- 中華電信NGOSS推動計畫概論
- Learning+OpenCV_+Computer+Vision+with+the+OpenCV+Library
- OO系统分析员之路 Thinking in UML
- C#教程 pdf格式
- ARM入门与提高 入门知识简介
- C/ C++高质量编程指导(林锐)
- 新一代视频压缩编码标准H[1].264.pdf
- GEC2410开发板实战手册
- C#编码规范DOCC#编码规范
- 嵌入式 Ucos-Ii的最新发展和应用.pdf
- 适合初学者的C#教程
- tomcat与eclipse开发servletjsp
- 自己动手写开发工具--基于Eclipse的工具开发.pdf