如何从一个变量中提取更多价值

How to extract more value from one variable

从我的 "for" 循环的结果中,存储了四个值。 如何提取该值以显示值(sprintf)?

请参阅附件中的图像文件。

这里是代码:

for( a = 4; a < 5; a = a++ )
           {
                 AD1CHS0bits.CH0SA = a   ;  //select which ANI connect to channel 0
                 AD1CHS0bits.CH0NA = 0   ;  //vref as channel 0 -ve input
                 AD1CON1bits.ADON  = 1   ;
                 AD1CON1bits.SAMP = 1    ;
                 __delay32(50)           ;
                 AD1CON1bits.SAMP = 0    ;   //sampling bit to 0
                 while(!AD1CON1bits.DONE);
                 result = ADC1BUF0       ;
           }

这是我的 sprinf 代码:

           sprintf(lala,"test: %d, %d, %d, %d\r\n",result);
           sendString(lala);
           __delay32(20000);

谢谢

此致, 纳齐夫

如果我理解正确的话,你基本上有:

for( a = 4; a < 5; a = a++ )
{
   /* code to sample one channel and store
    * the result in "result" */
}

...您希望对四个通道中的每一个进行采样,然后您尝试打印所有四个结果:

sprintf(lala,"test: %d, %d, %d, %d\r\n",result);
sendString(lala);
__delay32(20000);

首先,您的循环目前只进行一次迭代(在将 a = a++ 更正为 a++ 之后),其中 a 等于 4。您似乎需要它从 0 循环到 3(对于 AN0-AN3):

for ( a = 0; a < 4; a++ )

此外,result 一次只会保存一个值。每次通过循环,赋值都会用新值替换旧的 result 值——它不会向 result 添加第二个、第三个等值,而是更改第一个值 result成立。因此,您需要有四个单独的变量(例如数组的 4 个元素),或者对循环中的每个值执行您需要的操作,以便在读取下一个值之前完成它。使用数组,您可能有:

int results[4];

/* ... */

for( a = 0; a < 4; a++ )
{
    /* ... */
    results[a] = ADC1BUF0;
}

/* ... */

sprintf(lala,"test: %d, %d, %d, %d\r\n",
        results[0],results[1],results[2],results[3]);
sendString(lala);
__delay32(20000);