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

时间:2015-08-26 05:54:50

标签: c pic

来自我的" for"循环,已存储四个值。 如何提取该值以显示值(sprintf)?

请参阅随附的图像文件。

Extrac value in ADC1BUF0

这里是代码:

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);

由于

此致 纳齐夫

1 个答案:

答案 0 :(得分:0)

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

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);