【发布时间】:2015-08-26 05:54:49
【问题描述】:
从我的“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 ;
}
这里是我的 sprint 代码:
sprintf(lala,"test: %d, %d, %d, %d\r\n",result);
sendString(lala);
__delay32(20000);
谢谢
问候, 纳西夫
【问题讨论】:
-
你是认真的吗:
a = 4; a < 5; a = a++?你可能想要这个:a = 4; a < 5; a++,但这仍然值得怀疑,你的循环只会运行一次。 -
result是什么类型? -
注意:在循环中写入 a=a++ 将导致无限循环,因为 a++ 将增加 a 中的值,但仅在赋值之后,因此 a 将保持不变。相反,你应该写 (a = 4;a
-
@NazifJaafar 您的
sprintf导致未定义的行为,您有 4 个%d格式说明符,但您只提供一个参数 (result)。 -
您想单独打印
result的每个字节吗?如果是,uint32_t可能是更好的选择,因为int只需要能够保持值2^16 - 1。请告诉我们ADC1BUF0是如何创建的。