Обсуждаем контроллеры компании Atmel.
Ответить

bin16_ascii

Вс июл 07, 2013 20:27:14

Здравствуйте! Помогите разобратса.Задача передать на LCD цифры от 0 до 65535.
Куда вставить число и откуда его забрать ? Не судите строго я только учусь. Пишу на асме
;*************************************************************************
;* *
;* Convert unsigned 16 bit to 5 digit ASCII *
;* *
;* Author: Peter Dannegger *
;* *
;*************************************************************************
;
;input: R17, R16 = 16 bit value 0 ... 65535
;output: R20, R19, R18, R17, R16 = 5 digits (ASCII)
;cycle: 20 ... 170
;
bin16_ascii:

ldi r20, -1 + '0'
_bcd1: inc r20
subi r16, low(10000) ;-10000
sbci r17, high(10000)
brcc _bcd1

ldi r19, 10 + '0'
_bcd2: dec r19
subi r16, low(-1000) ;+1000
sbci r17, high(-1000)
brcs _bcd2

ldi r18, -1 + '0'
_bcd3: inc r18
subi r16, low(100) ;-100
sbci r17, high(100)
brcc _bcd3

ldi r17, 10 + '0'
_bcd4: dec r17
subi r16, -10 ;+10
brcs _bcd4

subi r16, -'0'
ret

Re: bin16_ascii

Вс июл 07, 2013 21:33:34

Черным по белому же написано :facepalm::

Код:
 ;input: R17, R16 = 16 bit value 0 ... 65535
 ;output: R20, R19, R18, R17, R16 = 5 digits (ASCII)


Вставить в R17, R16, вызвать, вынуть из R16-R20.
Ответить