PIC16F877A的A/D转换与I2C总线程序实现
下载需积分: 31 | DOC格式 | 713KB |
更新于2024-12-09
| 70 浏览量 | 举报
"这篇资源是关于pic16F877微控制器的模拟量输入(A/D转换)和I2C总线工作方式的程序实现。"
本文主要讲解了pic16F877微控制器如何进行A/D转换以及如何配置I2C总线的相关程序。pic16F877是一款广泛应用的8位微控制器,它包含了一个内部的A/D转换器,可以将模拟信号转换为数字信号,便于数字系统处理。在A/D转换的应用中,初始化程序是非常关键的步骤。
A/D转换初始化子程序`adinitial()`中,首先设置了ADCON0寄存器,选择A/D通道RA2,并开启A/D转换器,使其工作在8个系统时钟周期的转换速率。接着,ADCON1被设定以使转换结果右移,高6位清零,同时将RA2配置为模拟输入模式。此外,中断相关寄存器被配置,允许A/D转换中断和外围中断。
程序还使用了一个共用体`union adres`来存储10位A/D转换结果,这样可以方便地访问和处理转换后的数据。共用体是一种特殊的结构类型,它允许多个变量共享同一块内存空间,这里用于组合A/D转换的高低8位结果。
在I/O口初始化子程序`initial()`中,D口被配置为输出,用于显示或控制外部设备。
为了模拟程序的运行流程,还提供了一个简单的延时子程序`delay()`,用于等待一段时间,这在实时系统中通常用于确保操作的同步。
此外,还有一个报警子程序`alarm()`,它通过异或操作改变并输出i的值到D口,可以作为中断发生时的响应示例。
最后,中断服务程序`interrupt adint(void)`处理A/D转换完成的中断。当A/D转换完成后,会清除ADIF标志,并读取ADRESH和ADRESL寄存器中的转换结果,存储在共用体`adresult`中。
这个程序示例涵盖了pic16F877微控制器进行A/D转换的基本配置和中断处理,对于理解pic16F877的A/D转换功能和中断机制有很好的指导意义。然而,I2C总线工作方式的相关程序并未在提供的部分内容中体现,可能需要参考其他资源或文档来获取这部分的信息。
相关推荐