请教一个51的减法运算错误

2020-01-16 18:34发布

本帖最后由 wxdn 于 2016-10-11 04:47 编辑

这段子程序是ADC采样,将采样的结果通过运算得到n,xiadao是全局变量unsigned int型,用来修正这个ADC值,上电默认值为0;每次会加10,理论上,如果xiadao的值加到大于n的时候,是无法进去减运算的,可是现在当xiadao的值大于n,一样进去进行减运算,如果将代码中的n和xiadao直接赋值,就不会进去减,真的想不通了,来请教一下高手,这是什么情况?

void XDADC_READ(void)
{       
        unsigned char x,y,BAI,SHI,GE;
        unsigned int n;
        ADC_CONTR = 0Xcf;//启动ADC,180个时钟转换一次,P1.7为采样输入
        while(!(ADC_CONTR&0x10));//等待完成ADC转换       
        x = ADC_RES;        //读出高8位结果
        ADC_CONTR = 0xc0;//清除ADC

        ADC_CONTR = 0Xcf;//启动ADC,180个时钟转换一次,P1.7为采样输入
        while(!(ADC_CONTR&0x10));//等待完成ADC转换       
        y = ADC_RES;        //读出高8位结果
        ADC_CONTR = 0xc0;//清除ADC
        n=x+y;
        if(n>=245&&n<=510)
        {
                n=n-245;
                n=n*0.8;
//                n=100;
//                xiadao=105;
                if(n>=xiadao)
                {
                        n=n-xiadao;
                }
        }
        else
        {
                n=0;
        }
        BAI  = n%1000/100;
        SHI  = n%100/10;
        GE   = n%10%10;
        Display_shuzi(10,BAI,SHI,GE);//写下刀数       
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。