Vissza a főoldalra    Vissza a PIC főoldalra

<< Előző oldal   Vissza a tartalomjegyzékhez   Következő oldal >>

 


11.4.19. 8 bit bináris/3 jegyű BCD átalakítás


Assembly programozás tartalomjegyzék

"A" algoritmus
"B" algoritmus


      Az itt következő algoritmusrészletek a következő ábra szerinti 8 bites bináris/háromjegyű BCD átalakítást hajtják végre az előző fejezetben bemutatott algoritmusokhoz kapcsolódva.

Bináris/BCD átalakítás

11.4.19-1. Ábra

      Egy nyolc bites bináris szám értéke decimálisan a 0..255 intervallumban van. Ebből következik, hogy a háromjegyű BCD szám első jegye (százas helyiérték) csak 0, 1 vagy 2 lehet.
      Mivel a három BCD számjegy képes megjeleníteni a 8 biten ábrázolható összes számot, az algoritmus bemenő értékét nem kell ellenőrizni.
      A következőkben a BCD eredmény százas helyiértékének meghatározása látható, a további számjegyeket az előző fejezet valamelyik algoritmusával kell számítani. A 8 bites bináris kiinduló érték a BIN regiszterben van. A százas helyiérték a BCDH regiszterbe kerül.

      Az egyes megoldások méret- és sebesség-jellemzői láthatók a következő táblázatban.

11.4.19-1. Táblázat
Algoritmus Programmemória
helyfoglalás
Futási idő [utasításciklus]
Minimum Maximum
A 8 6 22
B 16 9 13


      A algoritmus:

      Ez az algoritmus a kiinduló érték százasával való fokozatos csökkentésén alapul (Microchip). A megvalósított program rövid (8 sor), de minél nagyobb a kiinduló érték annál hosszabb a futási idő (maximum 22 utasításciklus).
      A 8 bites bináris kiinduló érték a BIN regiszterben van, ami a programfutás során a százas helyiértéknek megfelelően csökken. Az eredmény, a százas helyiérték szorzója (0, 1 vagy 2), a BCDH regiszterbe kerül.

      Az algoritmus folyamatábrája:

A algoritmus
11.4.19-2. Ábra

      A folyamatábrát megvalósító programrészlet:

... ...    
  clrf BCDH ;BCDH = 0
UJRA movlw 0x64 ;W = 100d
  subwf BIN,0 ;W = BIN - 100d
  btfss STATUS,0 ;ha W >= 0, átlép
  goto VEGE ;ha W < 0, ugrik
  movwf BIN ;BIN = W = BIN - 100d
  incf BCDH,1 ;BCDH = BCDH + 1
  goto UJRA ;visszaugrik az elejére
VEGE ...    
  ...    

Vissza a lap tetejére


      B algoritmus:

      Ez a megoldás a fentiekben bemutatott ciklusos algoritmus szekvenciális változata, aminek eredményeként a program hosszabb lesz ugyan, de a futási idő csökken. A program 16 utasításból áll, futási ideje a bemenő számadattól függően 9, 11 vagy 13 utasításciklus.
      A 8 bites bináris kiinduló érték a BIN regiszterben van, ami a programfutás során a százas helyiértéknek megfelelően csökken. Az eredmény, a százas helyiérték szorzója (0, 1 vagy 2), a BCDH regiszterbe kerül.

      Az algoritmus folyamatábrája:

A B algoritmus
11.4.19-3. Ábra

      A folyamatábrát megvalósító programrészlet:

... ...    
  clrf BCDH ;BCDH = 0
  movlw 0xC8 ;W = 200d
  subwf BIN,0 ;W = BIN - 200d
  btfss STATUS,0 ;BIN > 200 ?
  goto G100 ;ha BIN < 200, ugrás
  movwf BIN ;BIN = BIN - 200d
  movlw 0x02 ;W = 2
  movwf BCDH ;BCDH = 2
  goto VEGE ;a végére ugrik
G100 movlw 0x64 ;W = 100d
  subwf BIN,0 ;W = BIN - 100d
  btfss STATUS,0 ;BIN > 100 ?
  goto VEGE ;ha BIN < 100, ugrás
  movwf BIN ;BIN = BIN - 100d
  movlw 0x01 ;W = 1
  movwf BCDH ;BCDH = 1
VEGE ...    
  ...    

  Tudomány és Technika (test@t-es-t.hu)


 

<< Előző oldal   Vissza a tartalomjegyzékhez   Vissza a lap tetejére   Következő oldal >>

Vissza a főoldalra    Vissza a PIC főoldalra