来自我的" 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);
由于
此致 纳齐夫
答案 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);