Jste zde

Převod BIN -> BCD formátu čísla pro x51

Použité SW řešení není zcela standardní, ale je velmi rychlé. Vstupem je BIN číslo ve dvou 8bitových registrech v rozsahu od 0 po 1000D - 03E8H.

Pro převod na DEC potřebujeme zjistit počet obsažených stovek - to jest vydělit vstupní údaj stovkou. Instrukční sada 8051 však obsahuje pouze dělení v rozsahu 8 bitů ! Nyní ale stačí, když požijeme fintu, která spočívá v tom,  že číslo 100 lze vyjádřit jako 4*25!  Fakticky tedy vstupní údaj vydělíme 4 (pouze dva binární posuvy doprava – viz. binární aritmetika)  vysledek dělení 4 se vejde do rozsahu 1 byte, který již vydělíme 25 klasickým postupem instrukcí DIV ab.

Celkový zbytek po dělení obnovíme v opačném pořadí = zbytek po dělení 25 násobíme 4 a připočteme zbytek po dělení 4.

Tento způsob snížení čísla, které dělíme lze použít obecně i ve složitějších algoritmech..

DOWNLOAD


Download rutiny - bin2bcd_finta.zip  (1 kB)

 
Bin2BCD:
            mov a,rii                          ;jed_tisic do Acc
            rrc a
            xch a,ri
            rrc a                              ;deli 2
            xch a,ri
            rrc a
            xch a,ri
            rrc a                              ;znovu deli 2, dohromady 4
            mov f0,C
            mov b,#25D                         ;deli 100/4
            div ab
            xch a,ri                           ;do ri odlozi pocet stovek (BCD)
            rlc a                             ;bit 7 ri {puvod. bit 0 rii}do Cy
            mov a,b                            ;zbytek do acc
            rlc a
            mov C,f0
            rlc a
            mov b,#10D
            div ab
            swap a
            orl a,b                            ;desitky a jednotky bcd v acc
            ret
            

 
Rutinu napsal : Zbyhněv Brudny
Hodnocení článku: