Чт ноя 30, 2017 01:21:14
Чт ноя 30, 2017 01:59:14
.equ END_VIDEO_RAM=10
.def temp5=r21
/************************************************************/
RCALL BIN24BCD8
RJMP PC-1
bin24BCD8:
LDI XL,LOW(END_VIDEO_RAM-5)
LDI XH,HIGH(END_VIDEO_RAM-5)
bin24BCD8A:
SER TEMP5
bin24BCD8_1:
INC TEMP5
SUBI R16,BYTE1(10000000)
SBCI R17,BYTE2(10000000)
SBCI R18,BYTE3(10000000)
BRSH bin24BCD8_1
SUBI R16,BYTE1(-10000000)
SBCI R17,BYTE2(-10000000)
SBCI R18,BYTE3(-10000000)
ST X+,TEMP5
SER TEMP5
bin24BCD8_2:
INC TEMP5
SUBI R16,BYTE1(1000000)
SBCI R17,BYTE2(1000000)
SBCI R18,BYTE3(1000000)
BRSH bin24BCD8_2
SUBI R16,BYTE1(-1000000)
SBCI R17,BYTE2(-1000000)
SBCI R18,BYTE3(-1000000)
ST X+,TEMP5
SER TEMP5
bin24BCD8_3:
INC TEMP5
SUBI R16,BYTE1(100000)
SBCI R17,BYTE2(100000)
SBCI R18,BYTE3(100000)
BRSH bin24BCD8_3
SUBI R16,BYTE1(-100000)
SBCI R17,BYTE2(-100000)
SBCI R18,BYTE3(-100000)
ST X+,TEMP5
SER TEMP5
bin24BCD8_4:
INC TEMP5
SUBI R16,BYTE1(10000)
SBCI R17,BYTE2(10000)
SBCI R18,BYTE3(10000)
BRSH bin24BCD8_4
SUBI R16,BYTE1(-10000)
SBCI R17,BYTE2(-10000)
SBCI R18,BYTE3(-10000)
ST X+,TEMP5
SER TEMP5
bin24BCD8_5:
INC TEMP5
SUBI R16,BYTE1(1000)
SBCI R17,BYTE2(1000)
BRSH bin24BCD8_5
SUBI R16,BYTE1(-1000)
SBCI R17,BYTE2(-1000)
ST X+,TEMP5
SER TEMP5
bin24BCD8_6:
INC TEMP5
SUBI R16,BYTE1(100)
SBCI R17,BYTE2(100)
BRSH bin24BCD8_6
SUBI R16,BYTE1(-100)
SBCI R17,BYTE2(-100)
ST X+,TEMP5
SER TEMP5
bin24BCD8_7:
INC TEMP5
SUBI R16,10
BRSH bin24BCD8_7
SUBI R16,-10
ST X+,TEMP5
bin24BCD8_8:
ST X,R16
RET
.exit
Чт ноя 30, 2017 07:53:02
short int t; // Переменная которую нужно конвертировать
char out[4]; // Здесь будет результат
short int tmp;
tmp=t;
out[2]=tmp%10+48; tmp=tmp/10;
out[1]=tmp%10+48;
out[0]=tmp/10+48;
out[3]=0; // Символ конца строки
Чт ноя 30, 2017 07:57:50
; ----------
bin2bcd2:
; ----------
; Преобразование однобайтного числа в упакованный BCD
; ----------
; Вход : R24 - число от 0 до 255
; Выход: R17:16 - BCD представление
; Изменяет: R18, R24, SREG
; ----------
ldi R16, 0 ; инициализация результата
ldi R17, 0 ;
ldi R18, 8 ; счетчик циклов
loop:
cpi R16, 0x05 ; сравнение разряда 0
brhs L1 ; если <= 4, продолжаем
subi R16, 256-3 ; иначе увеличиваем разряд 0 на 3
L1:
cpi R16, 0x50 ; сравнение разряда 1
brcs L2 ; если <= 4,
subi R16, 256-(3*16); иначе увеличиваем разряд 1 на 3
L2:
cpi R17, 0x05 ; сравнение разряда 2
brhs L3 ; если <= 4, продолжаем
subi R17, -3 ; иначе, увеличиваем разряд 2 на 3
L3:
lsl R24 ; сдвиг
rol R16
rol R17
dec R18 ; цикл
brne loop
ret
Чт ноя 30, 2017 08:44:58
Чт ноя 30, 2017 09:20:23
Пт дек 01, 2017 09:35:13
Пт дек 01, 2017 09:58:03