Microcontroller 如何在PIC18F26K22上设置多个ADC输入通道的功能?
我使用PIC18f26k22简单读取两个电位计(连接到模拟引脚AN0和AN1)。使用一个锅很容易,但使用多个锅需要一些技巧,我还不太清楚。我确实在互联网上查找了一下,发现了一个ADC_Read()函数。我对代码做了一些更改,以便可以将其用于PIC18F26K22。问题是,尽管我在main中使用了该功能,但只有ADC通道AN0工作,而AN1通道不响应(即,它不会切换LED)。 无符号整数ADC_读取(无符号字符通道)。在主功能中,int'num'和'den'分别用于读取每个模拟输入AN0和AN1。我得到的唯一响应是num(AN0)。如果能帮我找到正确的方向,我将不胜感激Microcontroller 如何在PIC18F26K22上设置多个ADC输入通道的功能?,microcontroller,cpu-architecture,pic,pic18,re-engineering,Microcontroller,Cpu Architecture,Pic,Pic18,Re Engineering,我使用PIC18f26k22简单读取两个电位计(连接到模拟引脚AN0和AN1)。使用一个锅很容易,但使用多个锅需要一些技巧,我还不太清楚。我确实在互联网上查找了一下,发现了一个ADC_Read()函数。我对代码做了一些更改,以便可以将其用于PIC18F26K22。问题是,尽管我在main中使用了该功能,但只有ADC通道AN0工作,而AN1通道不响应(即,它不会切换LED)。 无符号整数ADC_读取(无符号字符通道)。在主功能中,int'num'和'den'分别用于读取每个模拟输入AN0和AN1。
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
}
无符号整数ADC\u读取(无符号字符通道)
{
如果(通道>7)//通道范围为0~7
返回0;
ADCON0&=0b11000000;//清除通道选择位
ADCON0 |=通道
ADC的ADON
位位于ADCON0
寄存器so的位0中
您将在此处关闭ADC:
ADCON0 &= 0b11000000; //Clearing channel selection bits AND ADON
将其更改为:
ADCON0 &= 0b10000011; //Clearing channel selection bits
这只会重置通道位。请知道您可以选择一个新通道
ADCON0 |= channel<<2; //Setting channel selection bits
ADCON0 |=channel这正是什么句子:“ADCON0 |=channel您不想关闭ADON位。ADCON0 |=channel是否将AN1设置为模拟输入?