Jste zde

2x algoritmus převodu BIN na BCD pro x51

Přinášíme vám dva příklady pro převod z BIN do BCD formátu. První příklad používá dělení 100,

zatímco druhý algoritmus Hornerova schématu.

BCD i BIN formát čísel hraje v jakémkoli mikropočítači důležitou roli. BCD formát se používá k výpisu na displaye, vstup konstant atd.. BIN formát používá většina výpočetních rutin atd..

Přinášíme vám dva příklady pro převod z BIN do BCD formátu. Obě rutiny se liší algoritmem zpracování problému. První příklad používá dělení 100, zatímco druhý algoritmus Hornerova schématu. 

Algoritmus používající dělení :
Podprogram pro převod binárního čísla, uloženého v akumulátoru, na dekadické číslo v BCD kódu. Výsledné číslo uloženo na paměťová místa se symbolickými názvy STOVKY a DESJED. 
Protože je procesor 8051 vybaven instrukcí dělení, můžeme převod realizovat dělením hodnoty uložené v akumulátoru hodnotou 100. Celočíselný zbytek z prvního dělení vydělíme hodnotou 10 a celočíselný zbytek po druhém dělení představuje jednotky hledaného čísla. 


Algoritmy z tohoto příkladu byly zveřejněny v knize Mikroprocesory řady 8051 vydané v BENu.

 ;NIČÍ: A, B, Příznaky Doba: 18 strojových cyklů 

BINBCD: 
 MOV  B,#100D  ; A=BIN B=100
 DIV  AB  ; A-urči počet stovek B-zbytek celočísel.dělení 
 MOV  STOVKY,A  ; ulož stovky
 MOV  A,#10D
 XCH  A,B  ; A=zbytek, B=10
 DIV  AB
 SWAP  A  ; přesuň desítky do vyšší půlslabiky
 ADD  A,B  ; přičti jednotky
 MOV  DESJED,A
 RET
 DSEG  ; Rezervace datového prostoru

 ORG 30H

DESJED:  DS  1H  ; paměť desítek (bity 7÷4) a jednotek (3÷0)
STOVKY:  DS  1H  ; paměť pro uložení stovek (3÷0)
 

;Stazeno z www.HW.cz 
;    Autorem tohoto SW je Petr Skalicky - SKALICKY@feld.cvut.cz


Zde najdete nejrůznější výrobky autora tohoto příspěvku..


Algoritmus používající Hornerovo schéma :

Algoritmus používající Hornerovo schéma :

Stejný program jako v předchozím příkladě bez použití instrukce dělení a metody postupného odečítání mocnin základu 10.  Není-li procesor vybaven instrukcí dělení nebo převáděné číslo je dlouhé, pak lze k zajištění stejného převodu využít algoritmu vycházejícího z tzv.Hornerova schématu. Každé číslo ve dvojkové soustavě můžeme vyjádřit výrazem který vyjadřuje hledané číslo jako postupný součet dvou stejných čísel (.2) s hodnotou 0 nebo 1 (). 
Jsou-li dvě čísla v BCD formátu (např.0), potom na jejich součet s přičtením hodnoty 0 nebo 1 může být aplikována instrukce dekadické korekce, která koriguje rozdíl mezi součtem dekadických čísel v binární sčítačce (v procesoru) a dekadické sčítačce (přenos do dalšího řádu je generován po dosažení modulu 10). Navržený algoritmus má proti metodě postupného odečítání mocnin základu konstantní dobu trvání nezávislou na převáděném čísle. Při převodu využijeme registry R2 a R1 jako 16 bitový posuvný registr obsahující na konci algoritmu výsledek, registr R3 jako dočasnou paměť převáděného čísla a registr R4 jako počitadlo cyklů (posunů). 


 ;NIČÍ: A, R1, R2, R3, R4, Příznaky
 ;Doba: 24 + 8*13 strojových cyklů 

BINBCD: 
 MOV  R2,#OH  ; nuluj výsledek
 MOV  R1,#OH
 MOV  R3,A  ; paměť převáděného čísla
 MOV  R4,#8D  ; počet posunů

CYKL: 
 MOV  A,R3
 ADD  A,ACC  ; CY = bit a7
 MOV  R3,A  ; uchovej mezivýsledek
 MOV  A,R1
 ADDC  A,ACC  ; součet čísel R2,R1 + 
 DA A   ; dekadická korekce
 MOV  R1,A
 MOV  A,R2
 ADDC  A,ACC
 DA  A
 MOV  R2,A
 DJNZ  R4,CYKL
 MOV  DESJED,R1
 MOV  STOVKY,R2
 RET

;Stazeno z www.HW.cz 
;    Autorem tohoto SW je Petr Skalicky - SKALICKY@feld.cvut.cz


Zde najdete nejrůznější výrobky autora tohoto příspěvku..


DOWNLOAD rutin v .ZIP souboru
Hodnocení článku: