Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1 PODSTAWY TECHNIKI CYFROWEJ I MIKROPROCESOROWEJ EIP KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL AKADEMIA GÓRNICZO-HUTNICZA WWW.AGH.EDU.PL Temat: Narzędzia: Mikrokontrolery rodzina 8051 cz. 1 Programowanie obsługa danych Pakiet MCU 8051 IDE Cele ćwiczenia Poznanie zasad organizacji programów w języku Assembler Zdobycie umiejętności programowania mikrokontrolerów 8-bitowych proste aplikacje obsługi danych i operacji arytmetycznych Symulacja działania aplikacji mikrokontrolerów 8-bitowych Poznanie najważniejszych rozkazów i dyrektyw języka Assembler Aplikacja 002 W pakiecie MCU 8051 IDE utworzyć nowy plik i zapisać go w katalogu EiP (w katalogu Student). Do pliku skopiować i odpowiednio uporządkować zapis kodu programu 002. Prog002 prosty program dodawanie dwóch liczb: START: END MOV A,#10 ; pierwsza dana liczba do akumulatora MOV 10H,#02H ; druga dana liczba do komórki 10H MOV R0, #30H ; zadanie parametru początkowego adresu wyników ADD A,10H ; dodawanie dana 1 i dana2 MOV @R0,A ; zapamiętanie wyniku LJMP START Wykonać kompilację pliku i uruchomić pracę krokową, analizując SAMODZIELNIE w grupie zajęciowej działanie poszczególnych komend i całego algorytmu. Po analizie i obserwacji działania programu aplikacji 002, w kodzie programu dokonać kolejno modyfikacji według zapisanych dalej wskazówek: - modyfikacja 1 po zakończeniu pierwszego dodawania i umieszczeniu wyniku w komórce wskazanej przez rejestr R0, wstawić nową etykietę DODAJ2: w ramach tej etykiety, zwiększyć liczby dodawane (dane z początku) o 1 zastosować rozkaz INC w odniesieniu do komórek pamięci (rejestrów) w których są dane. --- >>> Zobaczyć znaczenie i sposób użycia rozkazu INC w pliku ze skróconym opisem komend - rozkazy_ksero.pdf dostępnym na stronie WWW prowadzącego. Dodać te liczby i wynik umieść tam gdzie pokazuje zwiększona o 1 zawartość rejestru R0 na końcu umieścić rozkaz skoku do etykiety START: plik zapisać pod osobną nazwą np.-002-1 KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 1/5
F. Logiczne Dzielenie Mnożenie Dodawanie Wyświetl dane Podstawy Techniki Cyfrowej i Mikroprocesorowej - modyfikacja 2 wprowadzić rozwiązanie, aby algorytm powtarzał dodawanie zwiększonych o 1 liczb w nieskończoność (LJMP do dodatkowej etykiety np. REPLAY gdzieś pośrodku kodu zastanowić się w którym miejscu). Zmian tych dokonać w utworzonym poprzednio pliku 002-1. - modyfikacja 3 w pliku poprzednim wprowadzić pod koniec programu komendę DJNZ (przed LJMP) tak, aby program powtarzał dodawanie z inkrementacją określoną liczbę razy. Zastanowić się nad zasadą użycia komendy DJNZ w programie. Podanie parametru liczby powtórzeń w jednym z rejestrów Rr (zobaczyć zasadę użycia komendy DJNZ i rejestrów Rr w pliku ze skróconym opisem komend - rozkazy_ksero.pdf). Skorzystać z wyjaśnień prowadzącego. Aplikacja 003 W pakiecie MCU 8051 IDE utworzyć nowy plik i zapisać go w katalogu EiP (w katalogu Student). Do pliku skopiować i odpowiednio uporządkować zapis kodu programu 003. Aplikacja dla Prog 003 ma realizować następujące funkcje i działania (wcześniej odpowiednie wyjaśnienia prowadzącego): wpisanie dwóch danych 4 bitowych (młodsza i starsza połowa bajtu zadanego na porcie) z portu P0 do pamięci RAM port P3 (ostatni) jest portem sterująco-monitorującym programu zależnie od bitów Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 zależnie od wyboru bitu w P3 aplikacja wykona działanie: o wyświetlenie dwóch liczb danych na porcie P1 o dodawanie dwóch liczb 4 bitowych o mnożenie dwóch liczb 4 bitowych o dzielenie dwóch liczb 4 bitowych o operację AND i OR na dwóch liczbach 4 bitowych zależnie od wybranego działania, wynik pokaże się na portach P1 i P2 zawsze na koniec program powraca do początku, czekając na wpisanie danych na porcie P0 >>> WAŻNE INFORMACJE DODATKOWE >>> W programie wykorzystać kilka nowych rozkazów, dyrektyw i procedur programowych. Dyrektywy: EQU trwałe przypisanie wartości/wyrażenia symbolowi. Pozwala na przykład zastąpić adres komórki pamięci lub danego rejestru nazwą-symbolem, na potrzeby danego programu i potem KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 2/5
w programie używa się już tej nazwy zamiast adresu. Umożliwia też zastąpienie dowolnego wyrażenia, symbolem/nazwą, przyjazną dla programisty. Przykłady: Rozkazy: ANL funkcja AND na słowach 8-bitowych często wykorzystywana jako tzw. filtr bitowy SWAP zamiana miejscami połówek bajtu w rejestrze 8 bitowym JZ skok warunkowy, jeżeli akumulator A =0 (ACC-druga nazwa akumulatora), to skok do etykiety, jeżeli nie wykonuje kolejny rozkaz JB skok warunkowy od bitu gdy dany byt ustawiony na 1 skok do etykiety, jeżeli nie wykonuje kolejny rozkaz MUL AB, DIV AB mnożenie i dzielenie liczb zawsze na rejestrach A (akumulator) i B (akumulator pomocniczy) --- UWAGA: W mnożeniu wynik zawsze dwubajtowy młodszy baj wyniku w A, starszy w B (informacje odnośnie działania wszystkich tych rozkazów patrz również: info w pliku ze skróconym opisem komend - rozkazy_ksero.pdf dostępny na str. WWW prowadzącego) UWAGA: Do obsługi portów P0 (zadającego dane 4 bitowe) oraz P3 (sterującego), wykorzystać narzędzie portów wirtualnych, dostępne w symulatorze w opcji: Virtual HV/Simple Keypad. Można takich klawiatur otworzyć kilka. W okienku klawiatury wybrać opcję Windows always on top oraz odznaczyć opcję Radio Buttons. Patrz rysunek 1: Rysunek 1 Porty wirtualne w pakiecie MCU 8051 IDE. Zwrócić uwagę, że przy uruchomieniu programu w symulatorze, aby na porcie były same zera, należy zewrzeć wszystkie. Rozwarcie przycisku będzie wystawiać jedynkę na danym bicie. W oknie w ustawieniach bitów wybrać odpowiednie numery portów (0 i 3) oraz kolejne bity od prawej strony najmłodsze i potem ku coraz starszym. KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 3/5
Aby klawiatury były uwzględniane przez symulator po uruchomieniu programu, przycisnąć przycisk OFF zmieni się na ON. --- PROSZĘ SAMODZIELNIE OPANOWAĆ OBSŁUGĘ PORTÓW I KLAWIATUR SIMPLE. --- NAJLEPIEJ TESTUJĄC POSZCZEGÓLNE USTAWIENIA I OBSERWUJĄC REAKCJĘ UKŁADU--- Proponowana ogólna struktura programu: (wyjaśnienia prowadzącego) ;deklaracje dyrektyw i warunków początkowych jeżeli są DANA1 EQU 31H ;zdefiniowanie komorek na dane wejsciowe DANA2 EQU 32H GORA EQU 11110000B DOL EQU 00001111B DANE: MOV 30H,P0 MOV A,30H ANL A,#GORA ;MASKOWANIE AND logiczny SWAP A ;zamiana połówek bajtu w rejestrze między sobą MOV DANA1,A ;dana 4 bitowa ma być w młodszej połówce bajtu MOV A,30H ANL A,#DOL MOV DANA2,A START: MOV A,P3 ;sprawdzenie protu P3 sterującego jakie działanie na danych JZ DANE ; jeżeli nie ma działania pętla do DANE wpis danych DATA_DISP: JB ACC.1, DODAJ ; spr. Bitu 1 w akumulatorze z portu P3 sterującego JB ACC.2, MUL ; spr. Bitu 2 w akumulatorze z portu P3 sterującego MOV P1,DANA1 MOV P2,DANA2 DODAJ: JB ACC.0, DATA_DISP JB ACC.2, MUL MOV A,DANA1 ADD A,DANA2 MOV P1,A ;wyświetlenie wyniku na porcie P1 MUL: JB ACC.0, DATA_DISP JB ACC.1, DODAJ MOV A,DANA1 MOV B,DANA2 ; wykorzystanie akumulatora pomocniczego B MUL AB ; WAZNE nie ma przecinka miedzy A i B!!! XCH A,B MOV P1,A ; młodszy bajt wyniku na port P1 MOV P2,B ; starszy bajt wyniku na port P2 END - Modyfikacja 1 --- Po mnożeniu dodać etykietę DZIEL: i bazując na konstrukcji algorytmu mnożenia, zapisać algorytm dzielenia rozkaz DIV AB --- (UWAGA: po operacji dzielenia w akumulatorze A jest wynik dzielenia, zaś w akumulatorze pomocniczym B reszta z dzielenia!!!) KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 4/5
- Modyfikacja 2 --- według poznanego kanonu i wzoru realizacji różnych działań na danych w programie, dopisać procedurę przeprowadzenia operacji logicznych AND i OR na dwóch danych 4 bitowych. Wynik operacji AND pokazać na porcie P1, wynik operacji OR na porcie P2. PODSUMOWANIE Po zajęciach Student powinien: znać podstawowe rozkazy i dyrektywy jeżyka Assembler mikrokontrolerów 8-birtowych umieć zbudować strukturę aplikacji dla mikrokontrolera w języku Assembler etykiety, skoki wykorzystywać rozkazy skoków warunkowych i obsługiwać porty wejścia/wyjścia danych bajtowych w mikrokontrolerach 8-bitowych posługiwać się podstawowymi trybami adresowania pamięci danych w Assemberze mikrokontrolerów rodziny 8051 KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII 5/5