xor (25.05.2012 19:40, просмотров: 1720)
hex2bcd, 4.20A vc6.5 работает как надо в IAR при переходе с 3 на 4, с 7 на 8 в 3 разряде в старшем накидывается по единице. как исправить?
unsigned long hex2bcd (unsigned short hex){
unsigned char i;
unsigned long bcd=0;
for(i=0;i<16;i++) {
if ((bcd & 0x000F) >= 0x0005) bcd += 0x0003;
if ((bcd & 0x00F0) >= 0x0050) bcd += 0x0030;
if ((bcd & 0x0F00) >= 0x0500) bcd += 0x0300;
if ((bcd & 0xF000) >= 0x5000) bcd += 0x3000;
bcd <<= 1;
if ((hex & 0x8000)==0x8000) bcd |= 0x0001;
hex <<= 1;
}
return bcd;
}