void ArrayHEXtoBCD (uint8 *address,uint32 tdat,uint8 num)
{
switch (num)
{
case 5:
*(address+4) = HEXtoBCD(tdat/100000000l);
case 4:
tdat %= 100000000;
*(address+3) = HEXtoBCD(tdat/1000000l);
case 3:
tdat %= 1000000;
*(address+2) = HEXtoBCD(tdat/10000l);
case 2:
tdat %= 10000;
*(address+1) = HEXtoBCD(tdat/100);
case 1:
tdat %= 100;
*address = HEXtoBCD(tdat);
break;
default:
break;
}
}
uint32 ArrayBCDtoHEX (uint8 *addr,uint8 num)
{
uint32 ww=0;
uint32 jj=0;
switch (num)
{
case 5:
jj=BCDtoHEX(*(addr+4));
jj=jj*100000000;
ww=jj;
case 4:
jj=BCDtoHEX(*(addr+3));
jj=jj*1000000;
ww=ww+jj;
case 3:
jj=BCDtoHEX(*(addr+2));
jj=jj*10000;
ww=ww+jj;
case 2:
jj=BCDtoHEX(*(addr+1));
jj=jj*100;
ww=ww+jj;
case 1:
ww=ww+BCDtoHEX(*addr);
default:break;
}
return ww;
}
void main(void)
{
uint8 cur_val[4];
ArrayHEXtoBCD(cur_val,Currentval,4);
}
就是上面的代码,软仿真和实际仿真结果不一样,大家帮我看看!呵呵,或许不应该让单片机做这么复杂的运算,但是是别人的程序,自己也不想改动,找找毛病吧!
|