Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wyswietlacz LED i 8 bitowy port, multiplex

T-play 17 Cze 2012 18:24 1179 3
  • #1 17 Cze 2012 18:24
    T-play
    Poziom 14  

    Witam,

    Zaprogramowałem ATmege16 i tak wyszło, że potrzebuje jeszcze jednego bitu wyjściowego na własny użytek, mam takowy wolny ale jest on na porcie do multipleksowania, przez co gdy zmienię stan to kolejne odświeżenie wyświetlacza znowu go zmieni.

    Weźmy taki oto bajt &B01111110, używam tylko pierwszych 7 bitów a ostatni zostaje bezużyteczny, i tu mam pytanie, jak to zapisać aby nie zmieniać stanu ostatniego bitu?

    Nie chce mi się pisać dla wszystkich bitów
    jedynka:
    set portb.0
    itd...
    return

    Proszę o pomoc i z góry dziękuję.

    0 3
  • Pomocny post
    #3 17 Cze 2012 20:18
    tmf
    Moderator Mikrokontrolery Projektowanie

    T-play napisał:
    Witam,

    Zaprogramowałem ATmege16 i tak wyszło, że potrzebuje jeszcze jednego bitu wyjściowego na własny użytek, mam takowy wolny ale jest on na porcie do multipleksowania, przez co gdy zmienię stan to kolejne odświeżenie wyświetlacza znowu go zmieni.

    Weźmy taki oto bajt &B01111110, używam tylko pierwszych 7 bitów a ostatni zostaje bezużyteczny, i tu mam pytanie, jak to zapisać aby nie zmieniać stanu ostatniego bitu?

    Nie chce mi się pisać dla wszystkich bitów
    jedynka:
    set portb.0
    itd...
    return

    Proszę o pomoc i z góry dziękuję.


    Użyć maskowania, np. tak (powiedzmy w pseudokodzie):
    x=portb;
    x = x & 0b10000000;
    y=(wartość z multipleksera) & 0b01111111;
    x= x | y;
    portb=x;
    W efekcie wartość najstarszego bitu portu b się nie zmienia.

    0
  • #4 17 Cze 2012 20:26
    T-play
    Poziom 14  

    Zdążyłem już zastosować metodę @bobeer, ale chyba zmienię na tę od @tmf, nie będzie niepotrzebnie obciążać procka, dziękuje za szybką odpowiedz.

    0