|
楼主 |
发表于 2009-11-12 09:55:20
|
显示全部楼层
你好
while(1)
{
seek_scan(1);//进入ATS
if(band==0)
{
if(++chdisplay>9)
{
chdisplay=0;
goto table;
}
if(fm_freq1==760)
{
set_bit(flag5,channel_ats);
goto table;
}
}
else if(band==1)
{
if(++chdisplay>19)
{
chdisplay=0;
goto table;
}
if(fm_freq2==870) goto table;
}
else //if(band==2)
{
if(++chdisplay>19)
{
chdisplay=0;
goto table;
}
if(am_freq==522) goto table;
}
i=chdisplay;
i<<=1;//为了得到正确频率存储位子
if(band==0)
{
// fmch1=chdisplay;
fm_channel1=fm_freq1/256;
fm_channel1[i+1]=fm_freq1%256;
}
else if(band==1)
{
// fmch2=chdisplay;
fm_channel2=fm_freq2/256;
fm_channel2[i+1]=fm_freq2%256;
}
else//if(band==3)
{
//amch=chdisplay;
am_channel=am_freq/256;
am_channel[i+1]=am_freq%256;
}
}
table:
if(band==0)
{
fm_freq1=fm_channel1[0]*256+fm_channel1[1] ;
set_freq(fm_freq1*10); //频率调整
}
else if(band==1)
{
fm_freq2=fm_channel2[0]*256+fm_channel2[1];
set_freq(fm_freq2*10); //频率调整
}
else
{
am_freq=(am_channel[0]*256+am_channel[1]);
set_freq(am_freq);
}
我也试过goto,可是运行到跳出while循环到table时 出错了,如果用break仿真时好像可以跳出整个while循环(IAR编译器)
我在电脑上查看fm_channel1[0]的值是0x02;fm_channel1[10]的值是0xf8
而fm_freq1得值却是519,如果正确的值应该是fm_freq1=(0x02*256+0xf8) |
|