Image244

Image244



Programowanie


sobie - w pamięci programu... Bardzo się 2 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.


fUŁJUUUUfeC 9TUEUU7F CALI UkUUUUL

---- c Ngcc-src^kurs\_do_c27\2\m«in

w r30:    printf(

=C>fQD00006E:    92FF

Ho Source


+UJUUUU6F , +03000070 ‘<■03000071 >03000072 7 ->03000071 +03000074 >03000075 £ +03000076 ’f03000077 % +03000078 ■ »03 + 03 ..

.    +0300

+0300007C


9 2 Et 92FF 92EF 931F 930F 93LF 930F 931F 930F E080


&ołarj»podp

00007B 93Jffi 00007C 9WETO0E


FUSH PUSH FUSH PUSH PUSH PUSH PUSH PUSH PUSH LDI LDI

program u

PUSH


"a(/ś2d) "5Jd\r' PUSH


Rys. 41 - przesyłanie argumentów do funkcji printf

Rys. 42 Efekt umieszczenia łańcucha formatowania w pamięci programu


Listing 57- wykorzystanie funkcji printf

int main(VOld)

{

int a - 1234; int b = 0xff;

(...)

fdevopen(rs_put, rs_get, 0);

printf( „a(*>ftd)=%d\r\n” ..a(%&0=%x\r\n” „AOf»x)e*x\r\n" „b(X*#x)«*#x\r\n" „b(%&o)-%o\r\n"»

a , a | a , b, b) \

}


36    printl_P(?ST!5( Na(X/idi "Jid^rsn"

+0000038B 92FF    PUSH R15

—— Nu Suuice


92EF

92FF

92EF

S31F

S30F

933F

930F

931F

930F


PUSH

PUSH

PUSH

PUSH

PUSH


(00000382 +00000380 +0000038E +0000038F +00000390 +U0UUUJ91 +00000392 - +00000393 - <00000394

8400000D96 Adres bajtu ::^Słox7di^2=ox

>UUUUUJ$9 540E0OFB

----c: Ngcx:-srcNkurs\_do_::z7^'iiiain . c

42    >


Listing 58 - wykorzystanie pamięci programu

dla łańcucha formatowania

printf J>(pstr(„ a 0&d>?śd\r\n" ,a(9t&x)=9&x\r\n" .,aO0£O«ftx\r\n" .,bOft#x)«K#x\r\n” .,b(%Xo)«%o\r\n").

df d| d| b| b)i


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 wejś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 jednak szansa na poprawę - miałem okazję testować najnowsze biblioteki i ich działanie rzeczywiście zostało popra


wione. 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, ze poznawana biblioteka staje się coraz ciekawsza.

Radosław Koppel

radosla u*, koppel@elponal.pl


CRC 5-56 • wielofunkcyjny preparat dla potrzeb serwisowych


200 ml


Zastosowanie:

Ś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 seksowych, ś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 wody i tlenu


Własności:

■    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 z 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 CC2

-    co skutkuje 97% wykorzystaniem aktywnego preparatu

kod handlowy: KON36 cena: 10 zł


Zamówienia przyjmuje Dział Handlowy AVT, 01-939 Warszawa, ul. Burleska 9, tel. (22) 568 99 50, fax (22) 568 99 55


antłlcwv<?avt pl


www.sklep.avt.pl


46 Luty 2006 Elektronika dla Wszystkich


Wyszukiwarka

Podobne podstrony:
CCF20140103033 Koleżanka opowiedziała mi, że jest DDA, jest w terapii, bardzo się z tego cieszy, wi
Slajd8 (109) Program umieszcza się w pamięci wczytując go. z odpowiednich nośników (np.. HD), za pom
15722 Image221 (3) Programowanie Zauważ, że pojawiają się tutaj dwa nowe napisy IDSjCnt oraz IDS Hul
uzdrowienie1 lam w sobie ten ból i poczucie winy. Tak bardzo obawiałan się tego, co mogłoby przenik
44303 Slajd33 (110) Istnieje kilka odmian pamięci ROM, różniących się sposobem programowania. a) &nb
programowania, pojawiają się także służące do tego narzędzia. Niniejszy skrypt omawia wiele takich
Image223 (4) ■ ProgramowaniePodmenu oraz wywoływanie funkcjiNasze menu aktualnie się wyświetla, ale
Image222 (3) Programowanie ■ indeksu. Normalnie funkcje te powinny zwracać wartość 0. Jeśli jednak z
85683 Slajd22 (116) ). Bitową Istnieje kilka odmian pamięci ROM. różniących się sposobem programowan
Pozycyjny system dwójkowy. Do programowania używa się systemu dwójkowego. Podstawą tego systemu

więcej podobnych podstron