Mikrokontrolery 8 bit - wprowadzenie TECHNIKA MIKROPROCESOROWA 3EB KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL AKADEMIA GÓRNICZO-HUTNICZA WWW.AGH.EDU.PL Temat: 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. ZEGAR PAMIĘĆ ROM PAMIĘĆ RAM 8 bit CPU System przerwań Ukł. czasowolicznikowy we/wy szeregowe lub... 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
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
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
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
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
; ----- PROGRAM 001 ------------------------------------------------- ; TRYBY ADRESOWANIA I OBSLUGA PORTOW ADRESY1: MOV R0,#15 ;ADR NATYCHMIASTOWE REJESTROWE MOV R1,#15H MOV R2,#00010001B SETB RS0 ;WYBOR BANKU REJESTRÓW NR 01 (1) ADRESY2: MOV R0,00H ;ADR BEZPOSREDNIE REJESTROWE MOV 09H,02H ;ADR BEZPOSREDNIE MOV 30H,01H ADRESY3: MOV A,R1 ;ADR REJESTROWE MOV R2,A CLR RS0 ;ZMIANA BANKU REJ NA NR 00 (0) - POPRZEDNI, DEFAULT- OWY MOV R7,A ADRESY4: MOV R0,#50H MOV @R0,A ;ADR POSREDNIE ADRESY5: MOV 40H,#26 MOV 40H+2,#27 ;ADR INDEKSOWE MOV 40H+4,#28 ADRESY6: SETB 20H.0 ;ADR BITOWE (KOMORKI 20H DO 2FH) SETB 21H.1 PORT_OUT_IN: MOV P0,42H MOV P1,44H MOV 52H,P2 MOV 54H,P3 LJMP ADRESY1 ;SKOK DO PIERWSZEJ ETYKIETY - PETLA PROGRAMU!!! END ; -------------------------------------------------------------------------------- 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
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
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