问题描述
我使用 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
}