请教一个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条回答
kebaojun305
1楼-- · 2020-01-17 16:27
本帖最后由 kebaojun305 于 2016-10-11 08:49 编辑

楼主这是写PC程序呢。
XA144F
2楼-- · 2020-01-17 21:25
x+y要强制类型转换。
xiaoyigechaos
3楼-- · 2020-01-17 22:59
XA144F 发表于 2016-10-11 08:59
x+y要强制类型转换。

你好,AT91SAM9260  核心板的外围IO说明资料可否给一份?就是你照片里的那块板子,我的和你的一模一样,但是买来没资料,玩不起来。谢谢啦!邮箱:   renpeng009@sina.com
bolizhicheng204
4楼-- · 2020-01-18 04:36
wxdn 发表于 2016-10-11 07:21
一夜没有睡觉,等着测试这个程序。

什么问题啊,论坛里让大家讨论问题,既然解决了不妨把原因写一下
XA144F
5楼-- · 2020-01-18 05:01
 精彩回答 2  元偷偷看……
xiaoyigechaos
6楼-- · 2020-01-18 10:33
XA144F 发表于 2016-10-12 16:51
我回去找一下午,晚些时候发给你。

真是太麻烦你了,还要找一下午,太感谢了,不然那个板子就是个摆设,想用起来,谢谢

一周热门 更多>