本帖最后由 lf8013 于 2013-8-16 17:17 编辑
首先不好意思一下,看了本版这么多主题都是来放什么资料,什么代码的出来,我却是来找人帮忙的》》》》》。。。
下面这个函数是把ADC转换的数值换算成我需要的数据,函数中声明了一个32位的整数变量 tmp ,但是不管是烧写代码时间运行,还是软件仿真,都表明这个tmp其实是16位的整数,看下面注释
void adc_convert(void)
{
unsigned long tmp;
tmp=vcc*adc_value1; //vcc是电源电源,adc_value1是通道CH0 的转换值,虽然tmp声明的是32位变量,但是只要两个数相乘的值大于65535则tmp中的值只是低16位中的数
//正确的应该是两个数的乘积呀,不明白到底是怎么回事???
in_data=(tmp*1248)/256000; //只要tmp的值不大于65535,这个结果就是正确的,大于65535就不对了
a=vcc*adc_value2; //这里和上面相同
out_data=(a*10)/2560; //adc1,输出端的电压
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>