[讨论]一个怪问题,大家有没有见过仿真可以,烧写到STC不行
我有个程序,有一段一个判断在仿真器上很正常,但一写到片子里就不行,仿真器是JDT8052,片子是STC89C52RC, 请注意位变量 autest 在仿真器时 如果ad_buf[0] 大于5,autest会变成 1 ;但一写到STC89C52RC片子里,这里就操作不了,另外我发现只要对 ad_buf[x]间接操作, x值为0-6,例如: mic_vol= mic[ad_buf[6]/6] ; 在仿真器里就正常,一写到片子里就操作无效。
整个程序编译后显示编译成功,
结果如下:
data=77.1, xdata=0, code=5494,
程序如下:
/**********************得到AD值****************************/
uchar idata ad_buf[7] ;
bit autest=0 ;
void adget(void)//读各电位器AD值
{
uchar adcon ;
P2|=0x70 ;
if((P2&0x70)==0x70)
{
adcon=0 ;
ad_start=1 ;
P2&=adset[adno] ;
delay(1) ;
EA=0 ;
ad_start=0 ;
while(C_ADTEST==1){adcon++ ;}
EA=1 ;
if(ad_buf[adno]!=adcon)
{
ad_buf[adno]=adcon ;
if(adno==0)
{
if(ad_buf[0]> 5)autest=1 ;
else autest=0 ;
}
if(adno==1)
{
autreble=1 ;
}
if(adno==2)
{
aubass=1 ;
}
if(adno==3)
{
mic429=1 ;
}
if(adno==4)
{
auvollock=1 ;
}
if(adno==5)
{
if(ad_buf[5]> 5)mictest=1 ;
else mictest=0 ;
}
}
adno++ ;
if(adno> 6)adno=0 ;
}
P2|=0x70 ;
}
//=======================================================
发表时间:2006年9月21日11:21:35