微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 PIC18F26K22 上为多个 ADC 输入通道设置功能?

如何解决如何在 PIC18F26K22 上为多个 ADC 输入通道设置功能?

我使用 PIC18f26k22 来简单地读取两个电位计(连接到模拟引脚 AN0 和 AN1)。使用单个锅很容易,但是不止一个锅需要一种我还没有清楚理解的位移技术。我确实环顾了互联网,发现了一个 ADC_Read() 函数。我对代码进行了一些更改,以便可以将其用于 PIC18F26K22。问题是,即使我在 main 中使用了该函数,只有 ADC 通道 AN0 工作但 AN1 通道没有响应(即它不会切换 LED)。 unsigned int ADC_Read(无符号字符通道)。在主函数中,int 'num' 和 'den' 分别用于读取每个模拟输入 AN0 和 AN1。我得到的唯一响应来自 num (AN0)。任何帮助我走向正确方向的帮助将不胜感激。

unsigned int ADC_Read(unsigned char channel)
{
 if(channel > 7)              //Channel range is 0 ~ 7
 return 0;

 ADCON0 &= 0b11000000;              //Clearing channel selection bits
 ADCON0 |= channel<<2;        //Setting channel selection bits
 ADCON2bits.ACQT = 0b001;        // 2 Aquisition Time
 GO_nDONE = 1;                //Initializes A/D conversion
 while(GO_nDONE);             //Waiting for conversion to complete
 return ((ADRESH<<8)+ADRESL); //Return result
 }

解决方法

enter image description here ADC 的 ADON 位位于 ADCON0 寄存器的位 0 中,因此 您将在此处关闭 ADC:

ADCON0 &= 0b11000000;              //Clearing channel selection bits AND ADON

改为:

ADCON0 &= 0b10000011;              //Clearing channel selection bits

这只会重置通道位。知道您可以选择新频道。

ADCON0 |= channel<<2;        //Setting channel selection bits 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?