Jste zde

2x převod BIN na BCD pro x51

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. Právě proto přinášíme dva

příklady převodu.

    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. 

    Pokud máte hotové podobné SW rutiny, které chcete publikovat, pošlete nám je pokoušíme se zde vytvořit knihovnu podobných utilit.  



     ;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



    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ů). 

    Pokud máte hotové podobné SW rutiny, které chcete publikovat, pošlete nám je pokošíme se zde vytvořit knihovnu podobných utilit. - INFORMACE PRO AUTORY 

     ;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



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