Witam.
Połączyłem sobie dwa rejestry 74HC595 w kaskadzie i uzyskałem rejestr 16 bitowy.
Chciałbym uzyskać na tym rejestrze efekt operatora |= tzn. ustawiać każdy pin z osobna bez zmieniania wartości logicznej pozostałych pinów. Napisałem funkcję aktywujPIN(PINx) gdzie argumentem jest wartość decymalna odpowiadająca za zapalenie kolejno każdej diody w rejestrze tak jak poniżej:
Taka konstrukcja niestety wymusza stan wysoki na konkretny pinie a pozostałe zeruje. Mogę oczywiście wpisywać pośrednie wartości decymalne tak jak żeby np. paiły się 2 diody naraz np. 3 co daje mi zapalenie bitu zerowego i pierwszego ale nie o to chodzi... Ktoś na tym forum podsunął mi już pomysł że można to zrealizować za pomocą struktury z polem bitowym lub tablicy i stworzenie czegoś w rodzaju wirtualnego rejestru dzięki czemu do rejestru będzie przesyłana cała tablica a ja bedę mógł stosować operację sumy bitowej. Niestety do końca nie wiem jak to zrobić...
To nie działa, nie ważne jaki rejestr1.bit wpiszę do funkcji aktywujPIN() zawsze zapala się dioda odpowiadająca z binarną 1,bo tez nic dziwnego bo podaje do funkcji wartosć 1... Nie wiem jak to zrobić żeby np. stosować przesunięcia bitowe na tablicy i zapalać różne diody niezależnie. Ktoś pomoże?
Funkcja aktywujPIN()
Połączyłem sobie dwa rejestry 74HC595 w kaskadzie i uzyskałem rejestr 16 bitowy.
Chciałbym uzyskać na tym rejestrze efekt operatora |= tzn. ustawiać każdy pin z osobna bez zmieniania wartości logicznej pozostałych pinów. Napisałem funkcję aktywujPIN(PINx) gdzie argumentem jest wartość decymalna odpowiadająca za zapalenie kolejno każdej diody w rejestrze tak jak poniżej:
Kod: text
Taka konstrukcja niestety wymusza stan wysoki na konkretny pinie a pozostałe zeruje. Mogę oczywiście wpisywać pośrednie wartości decymalne tak jak żeby np. paiły się 2 diody naraz np. 3 co daje mi zapalenie bitu zerowego i pierwszego ale nie o to chodzi... Ktoś na tym forum podsunął mi już pomysł że można to zrealizować za pomocą struktury z polem bitowym lub tablicy i stworzenie czegoś w rodzaju wirtualnego rejestru dzięki czemu do rejestru będzie przesyłana cała tablica a ja bedę mógł stosować operację sumy bitowej. Niestety do końca nie wiem jak to zrobić...
Kod: text
To nie działa, nie ważne jaki rejestr1.bit wpiszę do funkcji aktywujPIN() zawsze zapala się dioda odpowiadająca z binarną 1,bo tez nic dziwnego bo podaje do funkcji wartosć 1... Nie wiem jak to zrobić żeby np. stosować przesunięcia bitowe na tablicy i zapalać różne diody niezależnie. Ktoś pomoże?
Funkcja aktywujPIN()
Kod: text
