本帖最后由 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);//写下刀数
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>