ILYAUL писал(а):...
Код: Выделить всё
//------------------------------------------------------------------------
#define tab_h(x) HIGH(x), LOW(x)
#define tab_l(x) LOW(x), HIGH(x)
//------------------------------------------------------------------------
/************************************************************************/
#if (BCD==YES)
.dseg
HEX_DEC_BUFFER:
.equ HEX_DEC_BUFFER_LENGHT = 5
.byte HEX_DEC_BUFFER_LENGHT
.cseg
Hex_Dec:
ldx HEX_DEC_BUFFER
ldz Tab_10_16*2
ldi r19, 4
Hex_Dec_Cycle:
lpm r17, Z+
lpm r16, Z+
rcall Hex_Dec_Digit
st X+, r18
dec r19
brne Hex_Dec_Cycle
mov r16, r14
// ori r16, 0x30
st X+, r16
Hex_Dec_End:
ret
Hex_Dec_Digit:
ldi r18,-1
Hex_Dec_Digit_Cycle:
inc r18
sub r14,r16
sbc r15,r17
brsh Hex_Dec_Digit_Cycle
add r14,r16
adc r15,r17
// ori r18,0x30
ret
Tab_10_16:
.db tab_h (10000)
.db tab_h (1000)
.db tab_h (100)
.db tab_h (10)
#endif
//==================




