如何从一个变量中提取更多价值
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);
从我的 "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);