1 Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C
2 Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego)Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy ta nazwa wiele wyjaśnia: mikrosterownik zawierea procesor (rdzeń) pamięć ROM, pamięć RAM i układy wejścia-wyjścia (porty, interfejsy szeregowe, układy czasowo-licznikowe i wiele innych).
3 Przykładowe zastosowania mikrosterownikówUrządzenia RTV i AGD, Urządzenia techniki komputerowej (klawiatura, drukarka, skaner, modem, ...) Zabawki, Urządzenia mobilne (komórki, tablety I...) Automaty (do kawy, ciasteczek, ...) Urządzenia sieciowe (rutery, przełączniki, ...) Sterownik dzwonka w naszej szkole.
4 Wybrane mikrosterownikiRodzina Producenci i przykładowe typy MCS-51 Intel 80C51, Atmel AT89C4051 AVR Atmel AT90S2313, Atmel ATMEGA 8 AMR NXP LPC1768
5 Założenia do kursu programowaniaUczestnik zna obsługę systemu operacyjnego Windows i(lub) Linux (korzystanie z systemowego edytora plików tekstowych i wiersza poleceń) Korzystamy wyłącznie z darmowego oprogramowania. Uczymy się na pięćdziesiątcejedynce, ale poznajemy zagadnienia wspólne dla wszystkich mikrosterowników.
6 Języki programowania
7 Język maszynowy Adresy słowa rozkazowe To język procesoraProgram składa się ze słów rozkazowych (liczb). Pisanie programów za pomocą liczb jest bardzo niewygodne Adresy słowa rozkazowe FB
8 Asembler Adresy słowa rozkazowe Etykiety rozkazy argumentyAdresy komórek pamięci zastąpione są etykietami. Słowa rozkazowe są przedstawione za pomocą mnemoników, np. jbc oraz argumentów rozkazów, np. RI,koniec Adresy słowa rozkazowe Etykiety rozkazy argumenty _rs232rcvbyte: jbc RI,koniec sjmp _rs232rcvbyte koniec: mov dpl,SBUF ret
9 Język C #include <8051.h> char rs232rcvbyte (void) {while (!RI); RI = 0; return SBUF; }
10 Fragment złożonego programuvoid WriteFrame_EMAC(unsigned short Data) { *tptr++ = Data; } void CopyToFrame_EMAC(void *Source, unsigned int Size) unsigned short * piSource; unsigned int idx; piSource = Source; Size = (Size + 1) & 0xFFFE; //round Size while (Size > 0) { WriteFrame_EMAC(*piSource++); Size -= 2; idx = LPC_EMAC->TxProduceIndex; if (++idx == NUM_TX_FRAG) idx = 0; LPC_EMAC->TxProduceIndex = idx;
11 Słowa kluczowe języka C (według norm ANSI C z roku 1989 oraz ISO C z roku 1990)auto Zmienne break Instrukcje sterujące case Instrukcje sterujące char Zmienne const Zmienne continue Instrukcje sterujące default Instrukcje sterujące do Instrukcje sterujące double Zmienne else Instrukcje sterujące enum Typy złożone extern Biblioteki float Zmienne for Instrukcje sterujące goto Instrukcje sterujące if Instrukcje sterujące
12 Słowa kluczowe języka C (według norm ANSI C z roku 1989 oraz ISO C z roku 1990)int Zmienne long Zmienne register Zmienne return Procedury i funkcje short Zmienne signed Zmienne sizeof Zmienne static Biblioteki, Zmienne struct Typy złożone switch Instrukcje sterujące typedef Typy złożone union Typy złożone unsigned Zmienne void Wskaźniki volatile Zmienne while Instrukcje sterujące
13 Jaki język jest najlepszy?Zależy do czego. Pisząc duży program można korzystać z kilku języków. Na zajęciach napiszemy programy w C i Asemblerze.
14 Program źródłowy W języku C (c) Program źródłowy w Asemblerze (a51) Moduł Relokowalny (rel) Moduł Relokowalny (rel) Program (ihx) DSM-51
15 Na poprzednim slajdzie pokazano proces tworzenia programu składającego się z dwóch modułów: jeden moduł napisany jest w języku Asemblera, drugi – w języku C (nazwy języków zaczynamy wielką literą). Program tłumaczący z Asemblera nazywamy asemblerem, a program tłumaczący z C – kompilatorem języka C. Program łączący poszczególne moduły to konsollidator (linker) Na następnym slajdzie pokazano plik konfiguracyjny dla programu make, który służy do przeprowadzenia procesu asemblacji, kompilacji i konsolidacji
16 Plik Makefile main.ihx: main.rel dsm.rel sdcc $^ main.rel: main.csdcc -c $< dsm.rel: dsm.a51 sdas8051 -l -o $< run: main.ihx dsm51run $<
17 Test Co to jest mikrosterownik?Wymień nazwy co najmniej sześciu języków programowania. Do czego służy kompilator? Do czego służy konsolidator? Co to jest asembler? Co to jest Asembler? Wymień 10 słów kluczowych języka C Wymień funkcje typowego programatora układów scalonych
18 Dziękuję za uwagę.