Witam,
Ech... a
mokrowski podarował Ci taki fajny kawałek kodu... No, ale rozumiem, chcesz sam - ja też jestem uparty. Z tego, co zrozumiałem, to ma działać tak, że w przerwaniu ma się inkrementować licznik, który wyświetlasz w pętli głównej, w której jest samo multipleksowanie. Trochę
to bez sensu, no ale jeśli chcesz koniecznie, to w sumie też można, nikt przecież nie zabroni. Spróbuj uruchomić swój program fragmentami. Zrób może tak:
1. Wyłącz w diabły przerwania.
2. Do zmiennych cyfra1... cyfra4 podstaw stałe. Ja dałem po kolei 1...4. Jeśli ten fragment zacznie działać, umożliwi Ci to zidentyfikowanie, który wyświetlacz jest który. A... i jeszcze wyłącz to co w linii 35 na listingu poniżej - uruchamiasz wszystkie wyświetlacze na raz, nie wiem po co. Oto moja propozycja:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
I teraz, jeśli wszystko zrobisz poprawnie, na wyświetlaczu powinieneś zobaczyć "bełkot". Wracamy do eksperymentów. Teraz zrób tak:
3. Pomiędzy funkcje scr.... wstaw delay'e - tak gdzieś około 1-do 3 milisekund. Poniżej fragment kodu po modyfikacji:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Teraz powinieneś zobaczyć na wyświetlaczu "1234", czy w jakiej tam masz kolejności te wyświetlacze. Pytanie: dlaczego teraz jest ok???? Podpowiedź:
nie chodzi tu o żadne czasy przełączania tranzystorów, wyświetlaczy itp.To tyle na razie ode mnie. Jeśli dalej chcesz drążyć temat, jutro możemy wrócić do przerwania i tego licznika w przerwaniu.
Pozdrawiam serdecznie, QuadMan.