Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[asm][avr] Konwersja BCD to BIN

darkonel 13 Mar 2011 11:11 2923 3
  • #1
    darkonel
    Level 19  
    Witam. Stanąłem przed problemem konwersji liczby BCD wyświetlanej na wyświetlaczu LCD i zapisanej na 4 bajtach (4 rejestry mikrokontrolera) na liczbę w postaci BIN (3 bajty), którą mogę dodawać lub odejmować od innych liczb zapisanych w postaci bin w programie.
    Rozwiązania tego potrzebuję do zrealizowania tzw. offsetu przy cyfrowym pomiarze częstotliwości.

    O ile napisałem procedurę do konwersji 3 bajtów BIN na 4 bajty BCD (8 cyfr), to z konwersja odwrotna mam problem. Piszę tylko w assemblerze.
    Czy ktoś pomoże lub naprowadzi na właściwe rozwiązanie?

    Offset chcę zrealizować w ten sposób, że pod wyświetlaną częstotliwością umieszczę 8 cyfr (4 bajty BCD), i każdą z nich będę mógł zmieniać. Tak zmienioną liczbę BCD chcę przekonwertować z powrotem na BIN i dodać lub odjąć od liczby zliczonej przez liczniki mikrokontrolera (pomiar częstotliwości). Niestety mam problem z tą konwersją. pozdrawiam
  • #2
    krzych41
    Level 15  
    Czy nie prościej liczbę w postaci BIN (lub HEX) przed konwersją na BCD zapisać w buforze w RAM-ie, a później ewentualnie odczytać i przeprowadzać obliczenia niż tam i z powrotem konwertować: BIN -> BCD -> (ASCII) -> BCD -> BIN ?
  • #3
    asembler
    Level 32  
    Pierwszą cyfre pomnóż przez 1000 drugą przez 100 trzecia przez 10 i wszystko to dodaj razem do siebie razem z 4 cyfrą.
  • #4
    darkonel
    Level 19  
    Dziękuję za podpowiedzi, ale zanim je przeczytałem to zdążyłem opracować swoją procedurę konwersji dla 24 bitów (3 bajty lub 6 cyfr). Ta metoda z mnożeniem jest ok, tylko musiałbym zacząć od mnożenia przez 100000 i tak po kolei, gdzie wystąpi dużo przesunięć bitów i operacji dodawania.
    Moja procedurka polegająca na przesuwaniu bitów i odejmowaniu działa bez zarzutu.
    Pozdrawiam i zamykam temat.
    Attachments: