|
|
mikrokontrolery.net |
|||||||||||||||||||
|
Przykład 5 - wyświetlacz 7-segmentowy
Nowością w tym programie jest TABLICA. Jest to zbiór kolejno
ułożonych w pamięci danych, do którego odwołujemy się za pomocą
IDENTYFIKATORA TABLICY lub WSKAŹNIKA DO TABLICY(wskaźnik jest zmienna
przechowującą adres innej zmiennej). W rzeczywistości identyfikator
tablicy jest wskaźnikiem do jej pierwszego elementu. Ponieważ utworzenie
tablicy w pamięci programu, a raczej odwoływanie się do niej jest w gcc
troszkę "pokręcone" (i jak zwykle w róznych wersjach gcc robi się to
inaczej), zdecydowałem się na zastosowanie
"zwykłej" tablicy w pamięci RAM. W rzeczywistości tablica jest
umieszczona w pamięci programu i na pocztku działania programu jej
zawartość jest kopiowana do pamieci RAM. Powoduje to niepotrzebne
zajęcie kilkunastu komórek pamięci RAM, ale jest to rozwiązanie
najbardziej "przenośne" i zbliżone do standartu. W tablicy są zapisane
kody cyfr, które mają być wyświetlone na wyświetlaczu. Aby "wydostać"
odpowiednią pozycję z tablicy należy użyć operatora wyłuskania
*wskaźnik. Jest to zastosowane w wierszu
PORTB = *(znaki + i). Naszym wska·nikiem jest identyfikator
tablicy znaki. Ponieważ na wskaźnikach
można wykonywać większość typowych operacji arytmetycznych, do naszego
wskaźnika dodajemy wartość zmiennej licznikowej i
w celu uzyskania w pętli for(i = 0 ; i < 16; ++i)
dostępu dokolejnych pozycji tablicy (w każdym kolejnym przebiegu pętli
zmienna i jest większa o 1 od wartości w
przebiegu poprzednim). Efektem działanietego programu będzie wiec
wyświetlenie na wyświetlaczu kolejnych cyrf systemu szesnastkowego. |
|||||||||||||||||||
|
|
||||||||||||||||||||
|
|
||||||||||||||||||||
|
|
||||||||||||||||||||
|
(c) 2004-2008 Radosław Kwiecień |