Článek stažen z HW server


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  v registrech rii (Hi byte) a ri (Lo byte)  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..

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
Vytisknout stránku Velikost 1 kByte

Zpátky
© DH servis 2002 -