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

代码求助|已解决

[复制链接]

该用户从未签到

5

主题

22

回帖

89

积分

注册会员

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

回复 送花

使用道具 举报

该用户从未签到

5

主题

22

回帖

89

积分

注册会员

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

使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 59 天

    [LV.5]常住居民I

    4

    主题

    130

    回帖

    297

    积分

    中级会员

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

    使用道具 举报

  • TA的每日心情
    奋斗
    12 小时前
  • 签到天数: 71 天

    [LV.6]常住居民II

    11

    主题

    389

    回帖

    1143

    积分

    金牌会员

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

    使用道具 举报

    该用户从未签到

    5

    主题

    22

    回帖

    89

    积分

    注册会员

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    5 小时前
  • 签到天数: 69 天

    [LV.6]常住居民II

    4

    主题

    414

    回帖

    1126

    积分

    金牌会员

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

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

    使用道具 举报

    该用户从未签到

    5

    主题

    22

    回帖

    89

    积分

    注册会员

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

    好 我试试
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 59 天

    [LV.5]常住居民I

    4

    主题

    130

    回帖

    297

    积分

    中级会员

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

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:49
  • 签到天数: 159 天

    [LV.7]常住居民III

    25

    主题

    733

    回帖

    1833

    积分

    金牌会员

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

    使用道具 举报

    该用户从未签到

    5

    主题

    22

    回帖

    89

    积分

    注册会员

    积分
    89
     楼主| 发表于 6 天前 | 显示全部楼层
    jwd 发表于 2024-4-27 08:56
    变量如果是由其它变量运算的结果需要初始化

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-6 12:33 , Processed in 0.069444 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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