本帖最后由 wxdn 于 2015-1-21 20:32 编辑
写了一个读16位ADC的程序,程序中需要将读到的结果除以一个小数变量,再将得到的结果送给数码管显示出来,在实际的工作中,这个小数变量不是一个定值,需要校正,校正后要将校正的结果存储在EEPROM中,每次开机后,将存储在EEPROM中的小数变量读出,再去读ADC结果,再将结果除以这个小数变量,得到的商再通过数码管显示出来,请问如何处理这个小数?目前写了一个测试程序,如下:
void Read_byte(void) //读ADC数据并显示
{
unsigned char i,A,B,C,D,E;
unsigned int dat=0;
CLK=1;
for(i=0;i<16;i++)
{
CLK=0;
delayus();
dat=(dat<<1)|OUT;
delayus();
CLK=1;
delayus();
}
CLK=1;
dat=dat/1.9367;//这里的1.9367就是上面所说的小数变量,请问如何将它存储并调用?
A=dat/10000;
B=dat%10000/1000;
C=dat%1000/100;
D=dat%100/10;
E=dat%10;
}
补充说明:这个小数变量大概在1.9000-1.9999之间。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
谢谢你的指点,现在程序这样写的:dat=(unsigned long)dat*x/10000;请问X这个变量如何将它变成一个16位的16进制,再将这个16位的16进制分解成两个8位的16进制数?好将它存进EEPROM里。
一周热门 更多>