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

[AT89C2051] [AT89C2051][C] Konwersja TL0 i TH0 na unsigned int dla zliczania impulsów T0

Bruum 06 Cze 2009 22:29 1998 3
REKLAMA
  • #1 6624859
    Bruum
    Poziom 23  
    Posty: 818
    Pomógł: 29
    Ocena: 53
    Witam! Na początek sorry za banalne może pytanie, ale no właśnie. Jak przekształcić zawartość dwóch bajtów na unsigned int do dalszej "obróbki" w programie w C? Chodzi o zliczanie impulsów przez T0 a bajty to TL0 i TH0.
  • REKLAMA
  • REKLAMA
  • #3 6625436
    Bruum
    Poziom 23  
    Posty: 818
    Pomógł: 29
    Ocena: 53
    Witam i dzięki wielkie! Sprawdzę jak układ będzie kompletny. Przesunięcie w lewo TH0 o 8 miejsc i złożenie z TL0-tak tłumaczę sobie ten zapis. Ale może parę słów czy prawdziwie i dlaczego tak?
  • Pomocny post
    #4 6625487
    HIOB
    Poziom 17  
    Posty: 222
    Pomógł: 23
    Ocena: 1
    TH0 i TL0 to rejestry 8-bitowe - przy czym TH0 to starszy, a TL0 młodszy bajt licznika T0... zatem, aby prawidłowo wpisać je do zmiennej typu unsigned int, należy najpierw TH0 przesunąć o 8 bitów w lewo, a następnie operacją bitową (OR) dodać młodszą część licznika.

    Załóżmy, że:
    (odstępy zrobiłem dla lepszej czytelności)
    TH0 = 0b 1000 1000
    TL0 = 0b 0001 0001

    Krok 1:
    unsigned int zmienna = TH0 << 8;
    ... w "zmiennej" będzie: 0b 1000 1000 0000 0000

    Krok 2:
    zmienna = zmienna | TL0;
    lub skrótowo: zmienna |= TL0;
    ... w "zmiennej" będzie: 0b 1000 1000 0001 0001

    Oto cała filozofia :)

    Polecam Ci zapoznać się z opisem wszystkich operatorów przedstawionych w linku powyżej.

    Pozdrawiam.
REKLAMA