Ćwiczenie s1 - Katedra Energoelektroniki i Automatyki Systemów
Transkrypt
Ćwiczenie s1 - Katedra Energoelektroniki i Automatyki Systemów
Mikrokontrolery 8 bit - wprowadzenie TECHNIKA MIKROPROCESOROWA – 3EB KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL Temat: AKADEMIA GÓRNICZO-HUTNICZA WWW.AGH.EDU.PL Mikrokontrolery 8 bitowe – wprowadzenie Cele ćwiczenia Zapoznanie z budową i podstawowymi elementami mikrokontrolerów Nabycie umiejętności tworzenia prostych aplikacji programowych dla mikrokontrolerów 8 bit w języku Assembler Wstęp Współcześnie dostępnych jest na rynku bardzo wiele rodzin i typów mikroprocesorów i mikrokontrolerów. Mikroprocesor - to układ elektroniczny wysokiej skali integracji, zwykle w jednolitej obudowie układu scalonego, umożliwiający prowadzenie operacji arytmetycznych i logicznych na danych cyfrowych o różnej długości słowa bitowego. Operacje mogą być prowadzone wielowątkowo, równocześnie. Efektem działania są wyniki – dane w postaci cyfrowej. Mikrokontroler - to układ elektroniczny wysokiej skali integracji, zwykle w jednolitej obudowie układu scalonego, który zawiera w sobie mikroprocesor oraz inne układy współpracujące z nim, umożliwiające wprowadzenie i wyprowadzenie danych w procesora dla innych układów zewnętrznych, zbieranie danych oraz zapis aplikacji tworzonej przez programistę dla całego mikrokontrolera. Najważniejsze trzy elementy mikrokontrolera to: Mikroprocesor – z jednostką arytmetyczno-logiczną ALU i rejestrami roboczymi, pamięć ROM (dla aplikacji) i RAM (dla danych) układ wej/wyj (I/O) – komunikacja z peryferiami zewnętrznymi. Schemat blokowy ogólnej architektury mikrokontrolerów pokazano na rysunku 1. PAMIĘĆ ROM PAMIĘĆ RAM Ukł. czasowolicznikowy we/wy szeregowe lub... ZEGAR 8 bit CPU System przerwań Blok we/wy 8 8 8 8 P3 P2 P1 P0 Rysunek 1 – Mikrokontroler 8 bit – schemat blokowy i najważniejsze elementy jego architektury W branży mikrokontrolerów wciąż podstawą organizacji ich architektury jest opracowana w latach 80-tych i 90-tych XX wieku rodzina mikrokontrolerów 8051. Najważniejsze i najpopularniejsze współcześnie rodziny mikrokontrolerów, bazujące historycznie na tej architekturze to: AVR, ARM … KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 1/8 Mikrokontrolery 8 bit – wprowadzenie Na rysunku 2 pokazano bardziej szczegółowo elementy mikrokontrolera, z umieszczonym pod spodem opisem. Rysunek 2 – Mikrokontroler 8 bit – szczegółowa budowa i architektura Najważniejsze elementy – rejestry, flagi, wskaźniki: ALU – jednostka arytmetyczno-logiczna – wynik działania z ALU zawsze do A, ACC A, ACC (B) – rejestr(y) akumulatora PSW – słowo stanu --- rejestr flag – m.in. C (CY), P. … SP – wskaźnik stosu PC – licznik rozkazów – 16 bit DPTR – rej adresowania zewnętrznego – 16 bit 4 porty we/wy – każdy port 8 bitowy (8 linii) – każda linia może być wej lub wyj. Każdy port ma przyporządkowany rejestr 8 bitowy w pamięci RAM mikrokontrolera WAŻNE! Więcej szczegółowych informacji można znaleźć w wybranych pozycjach literaturowych zebranych na stronie WWW oraz w serwisach internetowych poświęconych mikrokontrolerom 8 bitowym rodziny 8051 i AVR. Podstawa – rodzina mikrokontrolerów 8051 Przedstawiając mikrokontroler danej rodziny, wybiera się kilka najważniejszych elementów. Jednym z nich jest mapa pamięci RAM, z której może korzystać programista w celu umieszczania danych do działań oraz wyników działań realizowanych w ramach tworzonej przez niego aplikacji. W mapie pamięci RAM podane są adresy komórek pamięci (rejestrów) oraz zaznaczone obszary w których nadano rejestrom np. specjalne nazwy, komórki pamięci cechują się określonymi właściwościami lub są zarezerwowane do konkretnych celów. Na rysunku 3 pokazano mapę pamięci klasycznego mikrokontrolera rodziny 8051. KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 2/8 Mikrokontrolery 8 bit – wprowadzenie Rysunek 3 – Mapa pamięci RAM dla mikrokontrolerów rodziny 8051 Ważne informacje praktyczne: W mikrokontrolerach rodziny 8051 wszystkie operacje arytmetyczne i logiczne na danych są wykonywane w jednym rejestrze – akumulatorze A (ACC). Wynik operacji (np. dodawania, odejmowania itp.) pojawia się również w rejestrze A i dlatego, jeżeli jest on istotny i ma być zachowany, zawsze trzeba go natychmiast przesłać do jakiejś komórki pamięci RAM mikrokontrolera. W przeciwnym wypadku zostanie on „nadpisany” nowymi danymi wpisanymi do rejestru A i utracony. Tylko mnożenie i dzielenie są wykonywane na dwóch rejestrach: A – akumulator i B – akumulator pomocniczy. Mikrokontrolery mogą być programowane różnymi metodami i przy użyciu różnych języków programowania. Najpowszechniej stosowany obecnie jest język C i C++. Jednak podstawowym językiem jest tzw. Assembler. Jego rozkazy są bezpośrednio kompilowane na tzw. język maszynowy (zapisany za pomocą 0 i 1-ek, zrozumiały dla mikrokontrolera). Posługiwanie się Assemblerem wymaga od programisty większej wiedzy technicznej na temat budowy i funkcjonowania danego mikrokontrolera i zmusza go do znajomości jego budowy i architektury. Dlatego też zwykle pierwsze zapoznanie z programowaniem rozpoczyna się właśnie od tego języka. Pisząc bowiem programy w języku C korzysta się z bibliotek, gdzie zapisane są i przyporządkowane nazwy określonych rejestrów i ich lokalizacja w pamięci mikrokontrolera, a programista nie musi dokładniej wnikać w architekturę mikrokontrolera. W rzeczywistości jednak jest to złudne poczucie komfortu, bowiem jej znajomość pozwala na sprawniejsze uruchamianie aplikacji na rzeczywistych układach, gdzie ważne jest dodatkowo dobre skonfigurowanie np. sygnałów przerwań, określonych parametrów startowych itp. WAŻNE! Więcej szczegółowych informacji można znaleźć w wybranych pozycjach literaturowych zebranych na stronie WWW oraz w serwisach internetowych poświęconych mikrokontrolerom 8 bitowym rodziny 8051 i AVR. KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 3/8 Mikrokontrolery 8 bit – wprowadzenie Program ćwiczenia -----------------------------------------1) Zapoznanie z pakietem Pinnacle 52 – wersja tylko 32 bitowa!!! 2) Zapoznanie z ogólną strukturą programu w języku Assembler i zasadami programowania 3) Napisanie i uruchomienie prostego programu dla mikrokontrolera wprowadzającego do różnych trybów adresowania danych umieszczanych w pamięci RAM lub rejestrach roboczych np. A. Pakiet Pinnacle 52 – symulator mikrokontrolerów rodziny 8051 Pakiet dostępny tylko w wersji dla komputerów 32 bitowych!!! Można znaleźć w serwisach internetowych inne symulatory – jednak nie są one już tak przejrzyste graficznie, a zarazem zawierające najpotrzebniejsze informacje dla programisty. W pakiecie Pinnacle 52 możliwe jest pisanie programów, ich kompilacja i symulacja pracy na platformach architektury mikrokontrolerów rodziny 8051 i 8052. Wygląd okna głównego narzędzia pokazano na rysunku 4. Rysunek 4 – Okno pakietu Pinnacle 52 z oknami podglądu najważniejszych elementów architektury mikrokontrolerów W oknie tym uruchomione są już okna: nowego projektu, widoku rejestrów, widoku kodu programu, widoku pamięci wewnętrznej RAM oraz widoku portów. Wybrane okna podglądu można uruchomić z menu View – jak pokazano na rysunku 5. Na początku użytkowania pakietu należy wybrać te okna podglądu i rozmieścić je w oknie głównym, tak by były dobrze widoczne. KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 4/8 Mikrokontrolery 8 bit – wprowadzenie Rysunek 5 – Wybór okien do widoku w panelu głównym Program nr 001 – podstawowe tryby adresowania pamięci RAM Zapoznanie z działaniem pakietu symulacyjnego najlepiej zacząć już na pewnym prostym przykładzie. Dlatego w pliku nr 001 proponuje się poznanie zasad i podstawowych trybów adresowania pamięci RAM i rejestrów. Program zapisuje się w języku Assembler’a – aby poznać dokładniej architekturę wewnętrzną mikrokontrolera. Pisząc programy Assemblerowe włączamy CapsLock. UNIKAMY RÓWNIEŻ POLSKICH ZNAKÓW!!! Ogólna struktura programu w języku Assembler: (komendy, dyrektywy, warunki, ustawienia początkowe – może ich nie być) ETYKIETA1: ROZKAZY … ROZKAZY … ETYKIETA2: ROZKAZY … … SKOK DO ETYKIETY (np. 1) END W programie nr 001 pokazano wybrane tryby adresowania oraz pokazano prostą obsługę portów wej/wyj. Są to elementy niezbędne do sprawnego tworzenia nawet najprostszych aplikacji na mikrokontrolery rodziny 8051 i AVR. Poniżej zamieszczono zapis kodu programu nr 001. KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 5/8 Mikrokontrolery 8 bit – wprowadzenie ; ----- PROGRAM 001 ------------------------------------------------; TRYBY ADRESOWANIA I OBSLUGA PORTOW ADRESY1: MOV R0,#15 MOV R1,#15H MOV R2,#00010001B SETB RS0 ADRESY2: MOV R0,00H MOV 09H,02H MOV 30H,01H ADRESY3: MOV A,R1 MOV R2,A CLR RS0 OWY MOV R7,A ADRESY4: MOV R0,#50H MOV @R0,A ADRESY5: MOV 40H,#26 MOV 40H+2,#27 MOV 40H+4,#28 ADRESY6: SETB 20H.0 SETB 21H.1 PORT_OUT_IN: MOV P0,42H MOV P1,44H MOV 52H,P2 MOV 54H,P3 LJMP ADRESY1 END ;ADR NATYCHMIASTOWE REJESTROWE ;WYBOR BANKU REJESTRÓW NR 01 (1) ;ADR BEZPOSREDNIE REJESTROWE ;ADR BEZPOSREDNIE ;ADR REJESTROWE ;ZMIANA BANKU REJ NA NR 00 (0) - POPRZEDNI, DEFAULT- ;ADR POSREDNIE ;ADR INDEKSOWE ;ADR BITOWE (KOMORKI 20H DO 2FH) ;SKOK DO PIERWSZEJ ETYKIETY - PETLA PROGRAMU !!! ; -------------------------------------------------------------------------------- Ważne – obsługa pakietu symulacji na przykładzie pliku nr 001 Na przykładzie pliku prowadzący pokazuje i wyjaśnia postępowanie związane kompilacją programu, symulacją krokową i ciągłą, obserwacją działania programu itp. Najważniejsze elementy i narzędzia wykorzystywane w trakcie symulacji pokazano na rysunkach 6, 7 i 8. KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 6/8 Mikrokontrolery 8 bit – wprowadzenie Rysunek 6 – Najważniejsze elementy obsługi symulacji aplikacji mikrokontrolera Rysunek 7 – Narzędzie kompilacji i linkowania – generacja kodu maszynowego dla mikrokontrolera KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 7/8 Mikrokontrolery 8 bit – wprowadzenie Rysunek 8 – Skróty klawiszowe do obsługi symulacji – praca krokowa – klawisz funkcyjny F8 PODSUMOWANIE Po zajęciach Student powinien: znać budowę i zasadę działania prostego mikrokontrolera 8 bitowego rodziny 8051 umieć poprawnie napisać prosty program aplikacyjny dla mikrokontrolera w języku Assembler umieć skompilować plik programu i zasymulować jego pracę w środowisku Pinnacle 52, z umiejętnością wskazania rejestrów KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 8/8