最近遇到一个很郁闷的问题(stc芯片)
我做一个AD转化的实验用c写的和用汇编写的结果不一样,,一直想不明白,,郁闷死
下面是程序:void Delay1ms(uint n)
{
uint i,j;
for (j=0;j<=n;j++)
for (i=0;i<=120;i++)
;
}
int Display(uchar Numtime)
{
uchar gewei,shiwei;
gewei=Numtime%10;
shiwei=Numtime/10;
P2=dispcode[gewei];
weige=1;
weishi=0;
Delay1ms(20);
P2=dispcode[shiwei];
weishi=1;
weige=0;
Delay1ms(20);
return 1;
}
void ADC_power_on()
{
ADC_CONTR|=0x80;//再是延时1ms了
Delay1ms(1);
}
void Set_P1_0_ASF()
{
P1ASF|=0x01;//再是短延时了
}
void Set_ADC_Channel_0()
{ uchar i;
ADC_CONTR=0xe1;//在延时20-200us
for(i=0;i<=64;i++)//延时100us
;
}
void GET_AD_RESULT()
{
ADC_RES=0;
ADC_CONTR|=0x08;
_nop_();_nop_();_nop_();_nop_();
while((ADC_CONTR&0x10)==0);
ADC_CONTR&=0xe7;//到这里转换结束可以取值了
Get_result=ADC_RES;
}
[解决办法]
另外的建议:在编程的角度,你的汇编不是太整齐规范。对于子程序(非中断)而言,可以尽量减少对ACC的进出堆栈,以增加时效性。作参考。
[解决办法]
看看.c编译后的汇编...是不是说有些初入..
[解决办法]
e1改成e0就好了。。。。