请教一个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);//写下刀数       
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
labtech
1楼-- · 2020-01-18 14:45
哈哈,楼主呢?
ilikemcu
2楼-- · 2020-01-18 15:59
51做浮点运算很正常的啊?我还用51算四元一次的浮点数方程呢,不过KEIL C51只支持32位精度的浮点,没用过IAR 51,只知道IAR AVR支持64位的高精度浮点
XA144F
3楼-- · 2020-01-18 20:01
ilikemcu 发表于 2016-10-14 07:21
51做浮点运算很正常的啊?我还用51算四元一次的浮点数方程呢,不过KEIL C51只支持32位精度的浮点 ...

有没有想过吧把8087数学处理器连上来加速呢?
ilikemcu
4楼-- · 2020-01-18 22:30
 精彩回答 2  元偷偷看……
pcr386
5楼-- · 2020-01-19 00:53
我是来看笑话的。

一周热门 更多>