logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Konwersja binarna na BCD w asemblerze dla ATmega8 - jak to zrobić?

ŁM 24 Mar 2006 13:03 1317 3
REKLAMA
  • #1 2451435
    ŁM
    Poziom 10  
    Posty: 29
    Witam

    Mam uklad na ATmega8 , z wyswietlaczem LCD itd. i wykorzystuje wejscia ADC kontrolera do pomiaru napiecia (przynajmniej na wejsciu ADC). Co wazne, pisze w asemblerze, a trafilem na problem -byc moze banalny ale juz troche sie mecze, tez troche szukalem i ...
    Czy ktos moze wyjasnic w jakis sposob liczbe binarna w Asemblerze !! zamienic na 3 liczby dziesietne (czy tam BCD, pozniej juz sobie wysle na LCD np po dodaniu 30). Jak sobie z tym radzicie -> dzielenie chbya nie wchodzi w gre :>, komendy do zamiany na BCD tez nie widzialem. Czy piszecie sami jakies algorytmy do przeliczania
    Prosze o odpowiedzi raczej na temat (wdzieczny bede za jakis algorytm, ew jakas rzucona komenda itd.)

    Z gory dzieki
  • REKLAMA
  • #2 2452034
    andrewn
    Poziom 18  
    Posty: 172
    Pomógł: 25
    Ocena: 6
    Kiedyś miałem podobny problem ale nie zachowałem listingiu tego programu, pamiętam tylko żeby nie wykonywać dzielenia, rozwiązałem to w następujący sposób: od zadanej liczby, w pętlach odejmowałem odejmowałem 100, następnie 10, zliczając za każdym razem ilośc przebiegów pętli i zapisując w trzech bajtach. W ten sposób miałem ilość setek, ilość dziesiątek i reszta która zostawała to były jednostki. tak też z liczby binarnej otrzymywałem trzy liczby do sterownia LED siedmiosegmentowym.
  • REKLAMA
  • #3 2461956
    ŁM
    Poziom 10  
    Posty: 29
    Dzieki ,

    bardzo mi to pomoglo, bo chyba sie ludzilem ze nie trzeba bedzie nic przeliczac. Jesli komus sie to przyda podaje swoje wypociny :

    setki :
    ldi r19,255 ; laduje dana do przerobki
    cpi r19,100
    brlo dziesiatki ; skacz jesli mniejsza od 100
    inc r20
    subi r19,100 ; odejmuje od niej 100
    cpi r19,100
    brlo dziesiatki ; jesli wynik < 0 to skacze
    inc r20 ; jesli nie , to licze dalej
    subi r19,100


    dziesiatki :
    subi r19,10
    brmi jednostki
    inc r21
    rjmp dziesiatki



    jednostki :
    ldi r18,10
    add r19,r18
    mov r22,r19

    dane w BCD przechowuje w r20-22.
    Jeszcze raz dzieki za wskazanie tropu. Pozdrawiam
REKLAMA