Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microcontroller 如何在PIC18F26K22上设置多个ADC输入通道的功能?_Microcontroller_Cpu Architecture_Pic_Pic18_Re Engineering - Fatal编程技术网

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

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。

我使用PIC18f26k22简单读取两个电位计(连接到模拟引脚AN0和AN1)。使用一个锅很容易,但使用多个锅需要一些技巧,我还不太清楚。我确实在互联网上查找了一下,发现了一个ADC_Read()函数。我对代码做了一些更改,以便可以将其用于PIC18F26K22。问题是,尽管我在main中使用了该功能,但只有ADC通道AN0工作,而AN1通道不响应(即,它不会切换LED)。 无符号整数ADC_读取(无符号字符通道)。在主功能中,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
 }
无符号整数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设置为模拟输入?