cz1

cz1



Programowanie

Programowanie

Rys. 13 Wybór pliku do symulacji


z rysunkiem 10, zajrzyj do ramki mówiącej o formatach liczb.

C zwarty jest przez niektórych asemblerem wysokiego poziomu. Jest w tym stwierdzeniu sporo racji. Zauważ, że brak tutaj funkcji znanych z BASCOM-a automatycznie ustawiających część sprzętową. Tutaj musisz wiedzieć co nieco O procesorze, którego używasz, a wszelką konfigurację będziesz musiał przeprowadzić niejako ręcznie.

Pętlę typu for powinieneś już znać choćby z BASCOM-a. W C pętla taka.bez podania jakichkolwiek warunków (w nawiasie) jest przeznaczona specjalnie do tworzenia pętli nieskończonych. Nawiasy klamrowe pod instrukcją for wyznaczają ciało pętli (patrz też ramka o instrukcjach złożonych). W pętli zapisujemy kolejno do portu wyjściowego jedynki i zero. Między tymi instrukcjami odczekujcmy pewien czas.

Funkcja _delay_loop_2 nie jest standardową instrukcją C. Jest to dodatkowa funkcja zewnętrzna, z której możemy' skorzystać dzięki dołączeniu nagłówka <avfolelay.h>. Zauważ tutaj, że parametr wywoływanej funkcji podany jest w zapisie szesnastkowym. Dzięki temu łatwo można określić maksymalną, możliwą do uzyskania wartość opóźnienia. Jest to chyba bardziej intuicyjne niż zapis dziesiętny: 65535.

Program kończy się instrukcją return 0. Instrukcja ta powoduje opuszczenie funkcji i zwrócenie przez nią podanej wartości. Zauważ, że nie ma sensu kończenie funkcji main. Zapis taki jest w' naszym przypadku w zasadzie tylko formalnością. Standard tego wymaga. Kompilator doskonale zdaje sobie sprawę, że nie ma dokąd wracać. Instrukcja return spowoduje więc utworzenie tak zwanej martwej pętli i program się zatrzyma. Jeśli jednak jest to zbędne, to instrukcja ta nie zmarnuje cennych zasobów. Wyjaśnienie znajdziesz w ramce .Jak len GCC to robi”.

Jak ten GCC to robi

GCC stara się oszczędzać pamięć procesora jak to tylko możliwe. Mimo tego, że w przykładowym programie instrukcja return istnieje, nie zostanie ona uwzględniona w kodzie wynikowym. Kompilator po prostu „zauważył”, że wyżej znajduje się pętla nieskończona i program nigdy nie wydostanie się poza nią.

Symulacja programu

Odłóżmy na chwalę C jako taki i powróćmy do naszych narzędzi. Często możliwość przeprowadzenia symulacji działania programu okazuje się niezbędna do jego uruchomienia. Do lego celu przyda się wygenerowany plik hello.elf.

Uruchom teraz AVRStudio. Jeśli nic nie zmieniałeś w jego ustawieniach, pojawi się okienko pozwalające Ci na utworzenie nowego projektu lub też wybranie jakiegoś wcześniej otw-artego. Znajdziesz przycisk Open. Kliknij go. Jeśli jednak wspomniane okienko nie jest dostępne, nie przejmuj się. Otw'orzyć wybrany plik możesz także nieśmiertelną sekwencją File->Open File... W każdym przypadku pojawi się okienko wyboru pliku. Wybierz plik hello.elf.

Uważaj! Jeśli otwierasz plik za pomocą menu, okienko wyboru pliku będzie troszkę bardziej skomplikowane. Zalecane wienia możesz zobaczyć na rysunku 13. Po otwarciu wybranego pliku program automatycznie rozpozna, że zawiera on dane dla symulatora. Powinno pojawić się okienko takie jak na rysunku 14.

Rysunek ten pokazuje też ustawienia, jakie powinieneś wprowadzić dla naszego kodu. Chwilę po wybraniu przycisku Finish symulator zostanie zainicjowany.

Powinno zostać otwarte okno z podglądem głównego pliku kodu źródłowego. Zauważ teraz, że z lewej strony znajduje się żółta strzałka. Zapewne pamiętasz podobną strzałkę z emulatora BASCOM-a. Wskazuje ona punkt programu, w którym aktualnie znajduje się nasz wirtualny procesor. Symulator już nadaje się do pracy. Pozostaje jeszcze mała formalność którą dobrze jest wypełnić. Wybierz z menu Debug->AVR Simulator Options lub leż szybciej: skorzystaj ze skrótu klawiaturowego ALT+O. Okienka, które się pojawi, nie prezentuję. W tej chwili zawiera ono tylko dwie opcje. Ustaw częstotliwość pracy układu na 4MHz. Dzięki temu czas symulacji wyliczany przez AVRStudio będzie prawidłowy.

Zanim zajmiemy się symulowanym wykonywaniem naszego programu, przyjrzyj się zakładce po lewej stronie. Nosi ona nazwę „Workspace”. Jeśli nic posiadasz takiego okienka - spróbuj je uruchomić, włączając opcję View->Worlcspace. Na rysunku 15 przedstawiłem Ci najbardziej interesujące nas informacje dostępne z poziomu wspomnianego panelu. Pod zakładką Project znajdziesz wszystkie pliki naszego programu, do jakich symulatorowi udało się dotrzeć. Dwukrotne kliknięcie na którymś z nich powoduje jego otwarcie. Z punktu widzenia symulacji dużo ciekawsza jest zakładka l/O. Umożliwia ona podgląd oraz wpływ na stan wszystkich rejestrów

Rys. 14 Wybór symulatora programowego


ABC... C

instrukcje proste, instrukcje złożone

O instrukcji prostej już pisałem. Każda taka instrukcja kończy się znakiem średnika i wyznacza pewną elementarną czynność, jaką możesz wykonać. Czasami jednak zdarza się, że w miejscu, gdzie formalnie można umieścić jedną instrukcję, my chcielibyśmy umieścić ich więcej. Między innymi do takiego celu zostały stworzone instrukcje złożone. Instrukcję taką tworzy się, biorąc w klamerki {} ciąg instrukcji prostych. Przykład widzisz w naszym programie. Dla pętli nieskończonej instrukcja for ma składnię: for (;;) instrukcja Jak widzisz, w przykładowym programie zamiast instrukcji pojedynczej skorzystaliśmy z instrukcji /.łożonej.

Elektronika dla Wszystkich Maj 2005 47


Wyszukiwarka

Podobne podstrony:
cz1 Programowanie Rys. 5 Programmers Notepad konfigurację narzędzi zawierającego pliki naszego prog
cz1 Programowanie Rys. 15 Panel „Workspace" H Coordinator Error loading object File. AVR Simul
IMG181 181 Rys. 1^.13. Schemat ębwodu do zadania 1^.6.9
rys 2 13 Wybór jednego 16 rejestrów 6-bitowychPamięć wideo Rejestry palety kolorów (EGA) Rejestr
M Feld TBM597 597 13.6. Ramowe procesy technologiczne części klasy koto zębate walcowe RYS. 13.25. U
M Feld TBM621 621 13.7. Kształtowanie zębów kół zębatych walcowych RYS. 13.65. Przyrząd do walcowani
0000042 (6) 84    ĆWICZENIA RÓWNOWAŻNE Rys .13 a pozycja wyjściowa do przetaczania ko
Rys. 13. Giętarko-sklejarka do rakiet tenisowych, produkcji krajowej [1 s. 270]: 1) płyta, 2) śruba
fiesta5 Zmiany konstrukcyjne od modeli 1998 do modeli 2000 Rys. 13.7. Zakładanie przyrządu do zdejm
060 bmp 1 Rys. 7.13. Schemat połączeń do wyznaczania napiąć indukowanych w uzwojeniach selsyna Wynik
1 Rys. 7.13. Schemat połączeń do wyznaczania napięć indukowanych w uzwojeniach selsyna Wyniki pomiar
34130 płytka3 Rys. 13: Płytka wzmacniacza mocy 4573-734-10-1 (laminat 2217-753-1-1) Płytka przełączn
48349 strona (6) Rys. 13: Płytka wzmacniacza mocy 4573-734-10-1 (laminat 2217-753-1-1) Płytka przeł
strona (6) Rys. 13: Płytka wzmacniacza mocy 4573-734-10-1 (laminat 2217-753-1-1) Płytka przełącznik
34130 płytka3 Rys. 13: Płytka wzmacniacza mocy 4573-734-10-1 (laminat 2217-753-1-1) Płytka przełączn

więcej podobnych podstron