ATMega8 + C + zegar binarny

Witam

Robię sobie zegar binarny z termometrem, wyświetlam godzinę i temperaturę na matrycy 8 kolumn x 5 wierszy LED. Robię to na ATMedze8 z kwarcem 4MHz. Kompilator to gcc. Konstrukcja wymusza "przesuwanie" jedynki po kolumnach, a na wiersze konretnej kombinacji zapalonych lampek w jednym wierszu. Mam dwa pytania: Jak wywalać te 5 bitów (zmienna wyswietlacz) na port c, nie ruszając pozostałych? Na PORTC5 mam podpięty termometr przez 1-wire... Coś takiego?: PORTB = (PORTB & 0b11100000) | wyswietl; Czy może jest jakiś bardziej elegancki sposób?

Pytanie drugie: Jak najlepiej taktować te odświeżanie? W pętli głównej? Czy może zatrudnić do tego timer (jeden mam jeszcze wolny)? Wiem, że i tak i tak da się zrobić - ale chciałbym poznać opinie bardziej doświadczonych programistów :)

Reply to
scx
Loading thread data ...

Mnie tam zawsze uczuli że bardziej "elegancką" wersją jest używanie timera :P

Reply to
willy

scx napisał(a):

Sposób bardzo dobry i skuteczny.

Odświeżanie taktuj timerem, który będzie wywoływał przerwanie, a w nim dopiero będzie odbywało się wysyłanie kolejnych kolumn na port. Odświeżanie wyświetlacza będzie niejako "w tle" a w głównej pętli programu zajmiesz się bardziej przydatnymi zadaniami.

Reply to
Adam Dybkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.