楼主的加一 减一函数太复杂了!
/***加一*****************/
void inc_c(unsigned char data *a)
{
{
if(*a==10)
{
*a=0 ;
(*(a+1))++;
}
if((*(a+1))==10)
{
(*(a+1))=0 ;
(*(a+2))++;
}
if((*(a+2))==10)
{
(*(a+2))=0 ;
(*(a+3))++;
}
if((*(a+3))==10)
{
(*(a+3))=0 ;
(*(a+4))++;
}
if((*(a+4))==10)
{
(*(a+4))=0 ;
(*(a+5))++;
}
if((*(a+5))==10)
{
(*(a+5))=0 ;
(*(a+6))++;
}
if((*(a+6))==10)
{
(*(a+6))=0 ;
(*(a+7))++;
}
if((*(a+7))==10)
{
(*(a+7))=0 ;
}
}
temp_r=jisuan(jieshou);
send_code(temp_r);
}
/***减一***************/
void dec_c(unsigned char data *a)
{
{
if(*a==255)
{
*a=9 ;
(*(a+1))--;
}
if((*(a+1))==255)
{
(*(a+1))=9 ;
(*(a+2))--;
}
if((*(a+2))==255)
{
(*(a+2))=9 ;
(*(a+3))--;
}
if((*(a+3))==255)
{
(*(a+3))=9 ;
(*(a+4))--;
}
if((*(a+4))==255)
{
(*(a+4))=9 ;
(*(a+5))--;
}
if((*(a+5))==255)
{
(*(a+5))=9 ;
(*(a+6))--;
}
if((*(a+6))==255)
{
(*(a+6))=9 ;
(*(a+7))--;
}
if((*(a+7))==255)
{
(*(a+7))=9 ;
}
}
temp_r=jisuan(jieshou);
send_code(temp_r);
}
我改成这样,如何?
//定义全局变量
unsigned char f_bit=4; //频率步进位置变量 4为千赫兹位 7为赫兹位 1为兆赫兹位
unsigned char f_vfo[8] = {1,0,0,0,0,0,0,0}; //频率数据变量 10mhz
void f_inc(void)
{
unsigned char i;
f_vfo[f_bit]++;
for(i=f_bit; i>0 ; i--)
{
if (f_vfo>9)
{
f_vfo = 0;
f_vfo[i-1]++;
}
else
{
break;
}
}
}
void f_dec(void)
{
unsigned char i;
f_vfo[f_bit]--;
for(i=f_bit; i>0 ; i--)
{
if (f_vfo>254)
{
f_vfo = 9;
f_vfo[i-1]--;
}
else
{
break;
}
}
}