becomeAGeneral 发表于 2024-4-22 16:49:23

代码求助|已解决

本帖最后由 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转换的结果加起来后,将所有的结果取平均后,这个取余和取模的结果怎么不对

becomeAGeneral 发表于 2024-4-22 16:50:00

这个ADCChangeDataAverageH老是多1

lezjin 发表于 2024-4-22 18:36:19

变量定义的是如果是局部变量的话,可以全部都初始化一下试试,未初始化就使用,有风险。

xiangzichen 发表于 2024-4-22 22:52:23

本帖最后由 xiangzichen 于 2024-4-22 22:54 编辑

为啥不这样:
ADCChangeData=resultChange/5;
ADCChangeDataAverageH=ADCChangeData>>8;
ADCChangeDataAverageL=(unsigned char)ADCChangeData;

乘除2^n,这种2的倍数,用移位多方便.

becomeAGeneral 发表于 2024-4-23 08:12:03

xiangzichen 发表于 2024-4-22 22:52
为啥不这样:
ADCChangeData=resultChange/5;
ADCChangeDataAverageH=ADCChangeData>>8;


好的谢谢您
我试试

小飞侠 发表于 2024-4-23 09:22:10

lezjin 发表于 2024-4-22 18:36
变量定义的是如果是局部变量的话,可以全部都初始化一下试试,未初始化就使用,有风险。 ...

变量使用前初始化一下还是有必要的

becomeAGeneral 发表于 2024-4-23 09:22:55

小飞侠 发表于 2024-4-23 09:22
变量使用前初始化一下还是有必要的

好 我试试

lezjin 发表于 2024-4-27 07:55:21

我试了下,变量未初始化,不能得到想要的结果,编译器用的GCC,结果为1,并且提示一个警告,变量在使用前没有初始化,你的这个 应该就是这个问题。

jwd 发表于 2024-4-27 08:56:06

变量如果是由其它变量运算的结果需要初始化

becomeAGeneral 发表于 2024-4-30 09:37:33

jwd 发表于 2024-4-27 08:56
变量如果是由其它变量运算的结果需要初始化

好的写   按照这个方法我已经解决了
页: [1]
查看完整版本: 代码求助|已解决