sn516952 发表于 2012-2-17 13:27:15

这段程序要怎么理解?走过路过的都指点一下.

以下这段程序实现的功能是 让AD采样更稳定一些,先是采50次.再求平均值,然后把两次的值做个比较,最后如果波动小于10的就不管.大于10的就输出显示.

可是我怎么看都是Register5和Register3都是相同的数,哪句里显示是跟上一次的值做比较了?


        for(i=0;i<50;i++)//AD采50次求平均值
                {
                        Register1=read_adc ( adchannel );
                        Register2=Register2+Register1;//Register2=累加50次AD
                        DelayUs(10);
                        NOP();
                }
                        Register3=Register2/50;//求平均
                        Register5=Register3;//???????????????这里应该是一样的值了吧?有朋友说这是跟上一次采样的值比较,可我看上去明明是同一次的,刚赋完值就拿来比,这不是一样的数吗?
/*-----------------------------------------------*/
                        if(Register5>Register3){//为什么以下还要做比较?
                                if(Register5-Register3>10){
                                        Register3=Register5;
                                }
                        }else{
                                if(Register5<Register3){
                                        if(Register3-Register5>10){
                                                Register3=Register5;
                                        }
                                }
                        }
/*-----------------------------------------------*/

algr 发表于 2012-2-17 13:33:27

程序有误吧。
last=now;
now=x;
页: [1]
查看完整版本: 这段程序要怎么理解?走过路过的都指点一下.