找回密码
 立即注册
查看: 511|回复: 9

代码求助|已解决

[复制链接]

30

主题

77

回帖

383

积分

中级会员

积分
383
发表于 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转换的结果加起来后,将所有的结果取平均后,这个取余和取模的结果怎么不对

回复

使用道具 举报 送花

30

主题

77

回帖

383

积分

中级会员

积分
383
发表于 2024-4-22 16:50:00 | 显示全部楼层
这个ADCChangeDataAverageH老是多1
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:339
  • 最近打卡:2025-05-06 20:07:45

23

主题

296

回帖

1168

积分

金牌会员

积分
1168
发表于 2024-4-22 18:36:19 | 显示全部楼层
变量定义的是如果是局部变量的话,可以全部都初始化一下试试,未初始化就使用,有风险。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:340
  • 最近打卡:2025-05-06 19:09:22
已绑定手机

14

主题

600

回帖

2215

积分

荣誉版主

积分
2215
发表于 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的倍数,用移位多方便.
回复 支持 反对

使用道具 举报 送花

30

主题

77

回帖

383

积分

中级会员

积分
383
发表于 2024-4-23 08:12:03 | 显示全部楼层
xiangz*** 发表于 2024-4-22 22:52
为啥不这样:
ADCChangeData=resultChange/5;
ADCChangeDataAverageH=ADCChangeData>>8;

好的  谢谢您
我试试
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:400
  • 最近打卡:2025-05-07 05:26:49

16

主题

702

回帖

994

积分

高级会员

积分
994
发表于 2024-4-23 09:22:10 | 显示全部楼层
lez*** 发表于 2024-4-22 18:36
变量定义的是如果是局部变量的话,可以全部都初始化一下试试,未初始化就使用,有风险。 ...

变量使用前初始化一下还是有必要的
回复 支持 反对

使用道具 举报 送花

30

主题

77

回帖

383

积分

中级会员

积分
383
发表于 2024-4-23 09:22:55 | 显示全部楼层
小*** 发表于 2024-4-23 09:22
变量使用前初始化一下还是有必要的

好 我试试
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:339
  • 最近打卡:2025-05-06 20:07:45

23

主题

296

回帖

1168

积分

金牌会员

积分
1168
发表于 2024-4-27 07:55:21 | 显示全部楼层
我试了下,变量未初始化,不能得到想要的结果,编译器用的GCC,结果为1,并且提示一个警告,变量在使用前没有初始化,你的这个 应该就是这个问题。
截图202404270752106568.jpg
截图202404270752589177.jpg
截图202404270753181070.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:524
  • 最近打卡:2025-05-07 07:52:10
已绑定手机

46

主题

1728

回帖

2682

积分

金牌会员

积分
2682
发表于 2024-4-27 08:56:06 | 显示全部楼层
变量如果是由其它变量运算的结果需要初始化
回复 支持 反对

使用道具 举报 送花

30

主题

77

回帖

383

积分

中级会员

积分
383
发表于 2024-4-30 09:37:33 | 显示全部楼层
jw*** 发表于 2024-4-27 08:56
变量如果是由其它变量运算的结果需要初始化

好的  写   按照这个方法我已经解决了
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-7 14:55 , Processed in 0.195169 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表