Start Publikacje Skrypt do zajęć z programowania mikrokontrolerów AVR w językuC - CZĘŚĆ III

Skrypt do zajęć z programowania mikrokontrolerów AVR w językuC - CZĘŚĆ III

Drukuj Email
Wpisany przez inż. Arkadiusz Krysiak   


OPA

 

1.10. Stałe

Deklaracje stałych tworzą etykiety, które są w programie zastępowane przypisaną wartością umieszczoną w pamięci kontrolera. Równocześnie wartości przypisanej do etykiety nie można zmienić. Przykładami takich stałych mogą być liczby pi czy liczba eurela.
Deklaracje stałych:
Hexadecymalne:
0x hexadecymalne cyfry...
0...9 oraz A..F lub a..f
Dziesiętne:
dowolne cyfry ale pierwsza cyfra nie może być równa 0.
Ósemkowe:
Dowolne cyfry od 0 do 7 ale pierwsza cyfra musi być równa 0.
Zmiennoprzecinkowe:
tradycyjny zapis z przecinkiem lub w postaci części znaczącej z następującym po e lub E eksponentem
liczba może posiadać suffix przez u lub U:
w takim przypadku zapis liczby zostaje zadeklarowana jako unsigned long int.

Dla suffixu L or l:
Określenie liczby jako typ long double
Dla suffixu F or f:
Zapis liczby znaczącej w postaci zmiennoprzecinkowej.
Przykład

const float PI=3.1415;

stałą PI utworzono z wartością 3.1415. Zmiana tej wartości w programie jest niemożliwa.

const int joe=0xFFFF;

stała joe została utworzona z wartością dziesiętną równą 65535.

const float penny=7.4e5;

Stała penny została utworzona z wartością 740000.000000.
Stałych używamy dokładnie w ten sam sposób jak wartości bezpośredniej, gdyż takową ona stanowi.

1.11. Łańcuchy (Strings)

łańcuch jest przykładem prostej jednowymiarowej tablicy o typie składowym char. Warunkiem zaznaczenia końca łańcucha jest umieszczenie tzw. Znaku końca łańcucha – null. Jest to wartość “\0”.

Przykład:

"\x65", "A"

stanowią ten sam jednoznakowy łańcuch.

Wartość fred[16] jest cudzysłowem. Wartość fred[26] to znak null. Obsługa łańcucha niczym sięnie różni od obsługi jednowymiarowej tablicy. Tworzenie łańcuchów w pamięci programu. Wersja 1: Tworzenie łańcucha znakowego:

char fred[30]="On Powiedział, \"Naprzód!\"";

Wartość fred[16] jest cudzysłowem. Wartość fred[26] to znak null.
Obsługa łańcucha niczym sięnie różni od obsługi jednowymiarowej tablicy.

 

Tworzenie łańcuchów w pamięci programu.

Wersja 1:
Tworzenie łańcucha znakowego:

char *LINE1 = PSTR (“to jest łańcuch w pamięci programu”);

Wraz z utworzeniem etykiety LINE1 jest umieszczany tekst w pamięci programu
Odczyt tak utworzonego łańcucha:

char ostatni_znak = pgm_read_byte ( &LINE1+23);

Zmienna w RAM pobiera 24 znak z łańcucha LINE1.
Wersja 2:
Tworzenie łańcucha znakowego:

char LINE2[] __attribute__ ((progmem)) = “to jest łańcuch w pamięci programu”;

Wraz z utworzeniem etykiety LINE2 jest umieszczany tekst w pamięci programu
Odczyt tak utworzonego łańcucha:

char pierwszy_znak = pgm_read_byte (&LINE2[0]);