Listing 57— wykorzystanie funkcji printf
int main(void) l
■int a - |
1234; |
int b = |
0xff; |
C...) | |
fdevopen |
(rs_put, rs_get, Oj; |
printf( |
„aC%%d)=%d\r\n" |
„aC»0=%x\r\n"
„aC%%X)=«x\r\n" ,,bC%«x)=%#x\r\n' ,,bC%%oJ=%o\r\n'’, a, a, a. b, bj;
}
Listing 58- wykorzystanie pamięci programu
dla łańcucha formatowania
printf_p(PSTR(„a(%%d)=%d\r\n"
„a(%%x)=*x\r\n”
„a(%%X)=%X\r\n"
„b=%#x\r\h" „b(%%o)=%o\r\n”J, a, a , a, b, b);
sobie — w pamięci programu... Bardzo się z tego pytania cieszę. Jeśli jeszcze tego nie zrobiłeś - popatrz na wynik symulacji. Łańcuch zajmuje cenną pamięć RAM, jednocześnie do jej inicjacji konieczna jest kopia danych w pamięci ROM.
Omawiane funkcje, tak jak większość z występujących w AVR-GCC, posiadają specjalne wersje z przyrostkiem _P. Zmodyfikuj poprzedni program zgodnie z listingiem 58. Konieczne będzie dodanie do programu nagłówka <avr\pgmspace.h>. Efekt zmiany można zaobserwować w symulacji na rysunku 42. Od strony funkcjonalnej nie powinny pojawić się widoczne zmiany.
Na identycznej zasadzie możesz zmodyfikować pierwszy z programów.
Podsumowanie
Dziś poznaliśmy bardzo ważną funkcję z biblioteki standardowej C. Wykorzystaliśmy ją w jeden z najprostszych sposobów. Praktyka jest jednak taka, że w AVR-GCC, standardowe funkcje węjścia/wyjścia, działające na domyślnych strumieniach nie zostały dobrze zoptymalizowane. Musimy liczyć się z tym, że jest to jednak narzędzie darmowe i czasami daje to odczuć. Jest j ednak szansa na poprawę - miałem okazję testować najnowsze biblioteki i ich działanie rzeczywiście zostało poprawione. Jednak dopóki nie powstanie nowa wersja całego pakietu, zmiana bibliotek wymaga ręcznych modyfikacji. W najbliższym odcinku będziemy pracować na strumieniach innych niż domyślne - okazuje się, że funkcje te są lepiej optymalizowane, jeśli chodzi o rozmiar kodu. Dodatkowo daje to możliwość wykorzystania tych samych podprogramów do wysyłania danych przez RS232 czy na LCD, co sprawia, że poznawana biblioteka staje się coraz ciekawsza.
Radosław Koppcl
radoslaw. koppel@elportal.pl
Środek penetrujący i smarujący, przenikający rdzę, wypierający wodę, myjący z brudu i kurzu
Opis: CRC 5-56 - wielofunkcyjny preparat dla potrzeb serwisowych. Środek penetrujący i smarujący, przenikający rdzę, wypierający wodę, myjący z brudu i kurzu. Składa się z oleju parafinowego, organicznych inhibitorów korozji co pozwala na utworzenie bariery chroniącej przed dostępem wodyti tlenu.
■ szybko penetruje, wnikając w najmniejsze pory, szczeliny w rozwiniętej powierzchni dobre własności smarne, wypiera wilgoć z układów elektrycznych
i zapłonowych
■ luzuje zardzewiałe połączenia
■ tworzy cienką warstwę ochronną, przeciwdziałająca korozji wywołanej wpływami atmosferycznymi
■ nie oddziałuje z metalami i ich stopami
■ nie oddziałuje 2 większością plastików, gum, powierzchni
lakierowanych
(w razie wątpliwości
- Zalecany test technologiczny)
■ opakowania aerozolowe wyposażone są w zawór 360° działania oraz cienką rurkę aplikacyjną.
■ Gaz pędny - niepalny C02
- co skutkuje 97% wykorzystaniem aktywnego preparatu
kod handlowy: KON36 cena: 10 zł
*y AVT, 01-939 Warszawa, ul. Burleska 9, tel. (221568 99 50, fax (22) 568 99 55, e-mail: handlowygavt.pl
46 Luty 2006 Elektronika dla Wszystkich