代码求助|已解决
本帖最后由 STCAI-32位8051 于 2024-4-30 10:29 编辑unsigned short flag1,flag2,i,result,resultChange,ADCChangeData=0,ADCChangeDataAverageH,ADCChangeDataAverageL.
while(1)
{
for(i=0;i<5;i++){
ADC_CONTR|=0x40;
Delay(100);
while(!(ADC_CONTR&0x20));
ADC_CONTR&=~0x20;
flag1=ADC_RES;
flag2=ADC_RESL;
Delay(100);
result=flag1*256+flag2;
resultChange=result+resultChange;
}
ADCChangeData=resultChange/5;
ADCChangeDataAverageH=ADCChangeData/256;
ADCChangeDataAverageL=ADCChangeData%256;
}我想请问一下,我把五次ad转换的结果加起来后,将所有的结果取平均后,这个取余和取模的结果怎么不对
这个ADCChangeDataAverageH老是多1
变量定义的是如果是局部变量的话,可以全部都初始化一下试试,未初始化就使用,有风险。 本帖最后由 xiangzichen 于 2024-4-22 22:54 编辑
为啥不这样:
ADCChangeData=resultChange/5;
ADCChangeDataAverageH=ADCChangeData>>8;
ADCChangeDataAverageL=(unsigned char)ADCChangeData;
乘除2^n,这种2的倍数,用移位多方便.
xiangzichen 发表于 2024-4-22 22:52
为啥不这样:
ADCChangeData=resultChange/5;
ADCChangeDataAverageH=ADCChangeData>>8;
好的谢谢您
我试试 lezjin 发表于 2024-4-22 18:36
变量定义的是如果是局部变量的话,可以全部都初始化一下试试,未初始化就使用,有风险。 ...
变量使用前初始化一下还是有必要的 小飞侠 发表于 2024-4-23 09:22
变量使用前初始化一下还是有必要的
好 我试试
我试了下,变量未初始化,不能得到想要的结果,编译器用的GCC,结果为1,并且提示一个警告,变量在使用前没有初始化,你的这个 应该就是这个问题。 变量如果是由其它变量运算的结果需要初始化 jwd 发表于 2024-4-27 08:56
变量如果是由其它变量运算的结果需要初始化
好的写 按照这个方法我已经解决了
页:
[1]