Poznanie technik adresowania pamięci mikrokontrolera.
Transkrypt
Poznanie technik adresowania pamięci mikrokontrolera.
POLITECHNIKA WROCŁAWSKA INSTYTUT MASZYN I NAPĘDÓW ELEKTRYCZNYCH LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Opracowanie: mgr inż. Krzysztof P. Dyrcz mgr inż. Zdzisław Żarczyński LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM 1. OPIS MIKROKONTROLERA Mikrokontroler SAB 80C515/535 oparty jest o jednoukładowy 8-bitowy mikroprocesor, wzorowany na układzie 8051 firmy INTEL. Litera C w oznaczeniu wskazuje na wykonanie mikroprocesora w technologii ACMOS. Mikroprocesory wykonane w tej technologii różnią się nieznacznie od produkowanych w technologii MYMOS (zmiany dotyczą głównie zakresu pracy rezonatora kwarcowego i wprowadzeniu w technologii ACMOS portu P6). Podstawowe właściwości procesora to: ∗ 256 bajtów wewnętrznej pamięci danych, ∗ 128 bajtów rejestrów specjalnych SFR, ∗ możliwość adresowania 64 kB zewnętrznej pamięci programu, ∗ możliwość adresowania 64 kB zewnętrznej pamięci danych, ∗ sześć 8-bitowych portów we/wy ( P0..P5), ∗ 8-bitowy port wejściowy dla wejść cyfrowych i analogowych (P6), ∗ trzy 16-bitowe zegary-liczniki, ∗ 8-bitowy programowalny przetwornik a/c, ∗ 16-bitowy układ typu “watchdog”, ∗ system przerwań (12 źródeł - 7 zewnętrznych i 5 wewnętrznych), ∗ 256-bajtowy stos, ∗ port szeregowy umożliwiający dwustronną komunikację, 2. ORGANIZACJA PAMIĘCI ⇒ PAMIĘĆ PROGRAMU Mikroprocesor SAB80C535 nie jest wyposażony w wewnętrzną pamięć ROM. Zatem należy korzystać z zewnętrznej pamięci programu, przy czym należy uaktywnić obsługę zewnętrznej pamięci programu przez podanie na linię procesora EA# potencjału niskiego (logicznego 0). Pamięć programu może być zapisana jedynie gdy pokrywa się z obszarem pamięci danych XDATA, przy czym obszar 03H do 93H w pamięci programu jest używany dla programów w przerwaniach. ⇒ PAMIĘĆ EPROM Pamięć EPROM z programem MONITOR ulokowana jest w obszarze pamięci CODE, przy czym adres początkowy zależy od wybranej konfiguracji: ∗ od 0000H dla konfiguracji EP007, ∗ od 8000H dla konfiguracji EP 009. Mikrokontroler SAB80C515/535... Strona 2 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM ⇒ PAMIĘĆ DANYCH Pamięć danych obejmuje obszar pamięci wewnętrznej RAM i obszar pamięci zewnętrznej RAM. Pamięć danych może być adresowana w sposób pośredni i bezpośredni. Do adresowania pośredniego zewnętrznej pamięci danych służy instrukcja MOVX, wykorzystująca 8 bitowe rejestry robocze R0 i R1 lub 16 bitowy rejestr DPTR. Do adresowania pośredniego pamięci programu w RAM służy instrukcja MOVC, wykorzystująca rejestr DPTR lub PC. FF FF Wewnêtrzna górna pamiêæ RAM FFFF Rejestry Specjalne SFR 128 B 80 80 Zewnêtrzna pamiêæ danych 7F Wewnêtrzna dolna pamiêæ RAM 128 B 0000 00 Pamiêæ danych Adresowanie poœrednie Adresowanie bezpoœrednie Rys.2.1. Mapa pamięci danych i rejestrów specjalnych SFR. Mikrokontroler SAB80C515/535... Strona 3 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM 127 ~ ~ 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 7FH OBSZAR PAMIĘCI BEZPOŚREDNIO ADRESOWANEJ REJESTROWO 7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 OE 06 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05 7C 74 6C 64 5C 54 4C 44 3C 34 2C 24 1C 14 0C 04 7B 73 6B 63 5B 53 4B 43 3B 33 2B 23 1B 13 0B 03 7A 72 6A 62 5A 52 4A 42 3A 32 2A 22 1A 12 0A 02 79 71 69 61 59 51 49 41 39 31 29 21 19 11 09 01 ~ ~ 78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00 30H 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 27H 26H 25H 24H 23H 22H 21H 20H 1FH RB 3 18H 17H 24 23 RB 2 10H FH 16 11 RB 1 8 7 0 R7 R6 R5 R4 R3 R2 R1 R0 RB 0 8H 7H 6H 5H 4H 3H 2H 1H 0H Rys.2.2. Mapa dolnej partycji wewnętrznej pamięci danych. Mikrokontroler SAB80C515/535... Strona 4 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM ⇒ REJESTRY ROBOCZE Rejestry robocze zajmują przestrzeń adresową od 0 do 1FH w wewnętrznej pamięci RAM. Rejestry podzielone są na cztery banki (RB0..RB3) po 8 rejestrów od R0..R7, przy czym jednocześnie może być użyty tylko jeden bank rejestrów. Aktywny bank rejestrów wybierany jest w rejestrze PSW (bity PSW.3 i PSW.4). Rejestr PSW CY AC • • • • F0 RS1 RS0 OV adres 0D0H F1 P CY - Flaga przeniesienia, ustawiana lub zerowana sprzętowo, AC - Flaga przeniesienia pomocniczego, ustawiany lub zerowana sprzętowo, F0 - Flaga ogólnego przeznaczenia, zmieniana wyłącznie programowo, RS1, RS0 - Wybór aktywnego banku rejestrów: Tabela 1. Sterowanie bankiem rejestrów. RS1 0 0 1 1 RS0 0 1 0 1 Aktywny bank rejestrów Bank 0, obszar adresowy 00H-07H Bank 1, obszar adresowy 08H-0FH Bank 2, obszar adresowy 10H-17H Bank 3, obszar adresowy 18H-1FH • OV - Flaga przepełnienia, ustawiana lub zerowana sprzętowo, • F1 - Flaga ogólnego przeznaczenia, zmieniana wyłącznie programowo, • P - Flaga parzystości, ustawiana lub zerowana sprzętowo w każdym cyklu maszynowym. Wskazuje na liczbę jedynek w akumulatorze: P=0 - parzysta liczba jedynek, P=1 - nieparzysta liczba jedynek. ⇒ REJESTRY SPECJALNE SFR Rejestry specjalne SFR zajmują obszar pamięci w zakresie 80H..FFH w wewnętrznej pamięci RAM. Generalnie rejestry te adresowane są bajtowo i mają określone nazwy symboliczne i określone adresy, jednak niektóre bity rejestrów mogą być adresowane bitowo. Wyjątkiem od tej reguły jest rejestr akumulatora A (ACC), oraz bit (flaga) przeniesienia C (CY). Poniżej przedstawiono wykaz rejestrów specjalnych mikrokontrolera. Mikrokontroler SAB80C515/535... Strona 5 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Tabela 2. Wykaz rejestrów specjalnych SFR Rejestr Nazwa Adres Stan po RESET# P0 SP DPL DPH PCON TCON TMOD TL0 TL1 TH0 TH1 P1 SCON SBUF P2 IEN0 IP0 P3 IEN1 IP1 IRCON CCEN CCL1 CCH1 CCL2 CCH2 CCL3 CCH3 T2CON CRCL CRCH TL2 TH2 PSW ADCON ADDAT DAPR Port 0 Wskaźnik stosu Mniej znaczące bity wskaźnika danych Bardziej znaczące bity wskaźnika danych Rejestr kontroli mocy Rejestr sterujący timerem Rejestr wyboru trybu timera Mniej znaczące bity timera 0 Mniej znaczące bity timera 1 Bardziej znaczące bity timera 0 Bardziej znaczące bity timera 1 Port 1 Rejestr sterujący pracą łącza szeregowego Rejestr bufora łącza szeregowego Port 2 Rejestr 0 odblokowania przerwań Rejestr 0 priorytetu przerwań Port 3 Rejestr 1 odblokowania przerwań Rejestr 0 priorytetu przerwań Rejestr kontroli przerwań Rejestr sterujący komparatorami Mniej znaczące bity komparatora 1 Bardziej znaczące bity komparatora 1 Mniej znaczące bity komparatora 2 Bardziej znaczące bity komparatora 2 Mniej znaczące bity komparatora 3 Bardziej znaczące bity komparatora 3 Rejestr sterujący pracą licznika T2 Mniej znaczące bity rejestru CRC Bardziej znaczące bity rejestru CRC Mniej znaczące bity licznika T2 Bardziej znaczące bity licznika T2 Słowo statusu Rejestr sterowania przetwornikiem a/c Rejestr wyniku pomiaru przetwornika a/c Rejestr wyboru podzakresów pomiarowych przetwornika a/c Port 6 Akumulator Port 4 Rejestr B Port 5 80H 81H 82H 83H 87H 88H 89H 8AH 8BH 8CH 8DH 90H 98H 99H 0A0H 0A8H 0A9H 0B0H 0B8H 0B9H 0C0H 0C1H 0C2H 0C3H 0C4H 0C5H 0C6H 0C7H 0C8H 0CAH 0CBH 0CCH 0CDH 0D0H 0D8H 0D9H 0DAH 0FFH 07H 00H 00H 0XXX XXXXB 00H 00H 00H 00H 00H 00H 0FFH 00H niezdefiniowany 0FFH 00H 00H 0FFH 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 0DBH 0E0H 0E8H 0F0H 0F8H niezdefiniowany 00H 0FFH 00H 0FFH P6 ACC P4 B P5 - rejestry adresowane bajtowo i bitowo Mikrokontroler SAB80C515/535... Strona 6 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM 3. OPIS PORTÓW WE/WY Mikroprocesor SAB 80C515/535 wyposażony jest w sześć 8 bitowych portów we/wy (P0..P5), 8 bitowy port wejść cyfrowych i analogowych P6, oraz port szeregowy do dwustronnej komunikacji. ∗ Porty P0..P5 są portami we/wy ogólnego przeznaczenia, umożliwiającymi wykorzystanie 48 linii we/wy, przy czym porty P0, P1, P2 i P3 realizują też pewne funkcje alternatywne w zależności od konfiguracji pracy mikroprocesora. Wykaz funkcji zamieszczono w tabeli 3. ∗ Port P6 Linie portu służą jako wejścia cyfrowe, a w przypadku pomiaru przetwornikiem a/c wejścia te są równoważne kanałom analogowym AN0..AN7. Tabela 3. Wykaz funkcji alternatywnych portów we/wy. Port P1.0 Symbol INT3#/CC0 P1.1 INT4/CC1 P1.2 INT5/CC2 P1.3 INT6/CC3 P1.4 P1.5 P1.6 P1.7 P3.0 INT2# T2EX CLKOUT T2 RXD P3.1 TXD P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P0 INT0# INT1# T0 T1 WR# RD# P2 ∗ Funkcja wejście 3 zewnętrznego przerwania, wyjście porównania 0, wejście zapamiętania 0 wejście 4 zewnętrznego przerwania, wyjście porównania 1, wejście zapamiętania 1 wejście 5 zewnętrznego przerwania, wyjście porównania 2, wejście zapamiętania 2 wejście 6 zewnętrznego przerwania, wyjście porównania 3, wejście zapamiętania 3 wejście 2 zewnętrznego przerwania wejście zewnętrznego wyzwolenia dla autoładowania licznika T2 wyjście zegara systemowego wejście zewnętrznego wyzwolenia dla autoładowania licznika T2 sterowanie wejściem odbiornika portu szeregowego ( praca synchroniczna), lub wejściem/wyjściem (praca asynchroniczna) sterowanie przekaźnikiem portu szeregowego: wyjście danych (asynchroniczne) lub wyjście zegara (synchroniczne) wejście 0 zewnętrznego przerwania, bramka kontrolna zegara 0 wejście 1 zewnętrznego przerwania, bramka kontrolna zegara 1 wejście zewn. licznika zegara 0 wejście zewn. licznika zegara 1 zapis danych pamięci zewnętrznej odczyt danych pamięci zewnętrznej w przypadku współpracy z zewnętrzną pamięcią programu i danych 8 mniej znaczących bitów adresu i danych w przypadku współpracy z zewnętrzną pamięcią programu i danych 8 bardziej znaczących bitów adresu i danych Port szeregowy Mikrokontroler SAB 80C515/535 wyposażony jest w port szeregowy, umożliwiający przesyłanie przez linie portu P3. Zamiana postaci danych z równoległej na szeregową i odwrotnie, oraz sterowanie wysyłaniem słowa odbywa się automatycznie. Dane wysyłane przez port odbierane są z rejestru Mikrokontroler SAB80C515/535... Strona 7 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM wyjściowego transmisji szeregowej, natomiast dane odbierane przez port zapisywane są do rejestru wejściowego. Oba te rejestry umieszczone są w przestrzeni adresowej wewnętrznej pamięci danych pod adresem 99H jako rejestr specjalny SBUF. Zapisanie danych do SBUF powoduje wpisanie ich do rejestru wyjściowego, natomiast odczytanie tego rejestru powoduje odczytanie zawartości rejestru wejściowego. Port szeregowy może pracować w jednym z czterech trybów pracy. Sterowanie portem szeregowym odbywa się za pomocą adresowanego bitowo rejestru SCON. Rejestr SCON SM0 SM1 SM2 REN TB8 RB8 adres 98H TI RI Znaczenia poszczególnych bitów są następujące: • RI - znacznik odebrania znaku i zgłoszenie przerwania, • TI - znacznik wysłania znaku i zgłoszenie przerwania, • RB8 - dziewiąty bit odebranego znaku, • TB8 - dziewiąty bit znaku wysyłanego w trybie 2 i 3, • REN - uaktywnienie odbiornika transmisji szeregowej, • SM2 - znacznik maskowania odbioru transmisji, • SM1, SM0 - ustawienie trybu pracy: Tabela 3. Tryby pracy portu szeregowego. Tryb SM0 SM1 Opis trybu 0 0 0 transmisja szeregowa synchroniczna znaków 8-bitowych taktowanych sygnałem zegarowym 1 0 1 transmisja szeregowa asynchroniczna znaków 8bitowych, przy czym szybkość ustalana programowo 2 1 0 transmisja szeregowa asynchroniczna znaków 9-bitowych o szybkości 1/32 lub 1/64 częstotliwości zegara, 3 1 1 transmisja szeregowa asynchroniczna znaków 9bitowych, szybkość określana programowo. 4. PROGRAMOWANIE ⇒ WSTĘP Programem działającym poprawnie nazywamy program napisany w jednym z języków programowania, sprawdzony programami symulacyjnymi, następnie uruchomiony przy pomocy debuggerów płytkowych, poprawiony i uruchomiony w urządzeniu docelowym. Należy zatem wykonać szereg działań, które można zrealizować wg opisanego niżej algorytmu: ∗ przygotowanie algorytmu działania procesora, ∗ napisanie programu działającego wg założonego algorytmu, Mikrokontroler SAB80C515/535... Strona 8 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM ∗ sprawdzenie działania programu przy pomocy symulatorów (softwarowych lub hardwarowych), ∗ uruchomienie programu w modułach debuggerowych z wykorzystaniem programów uruchomieniowych, ∗ uruchomienie programu w urządzeniu docelowym. Algorytmem nazywamy zbiór operacji realizowanych w odpowiedniej kolejności w celu rozwiązania określonego zadania. Podstawowymi elementami algorytmu są: ∗ sekwencja operacji, ∗ przełącznik - jest to element algorytmu zawierający jedną z dwóch alternatywnych sekwencji w zależności czy postawiony warunek jest spełniony, czy nie, ∗ warunek - jest to element algorytmu zawierający określone parametry, które muszą być spełnione dla poprawnego wykonania dalszej części algorytmu, ∗ pętla - jest to możliwość wielokrotnego powtórzenia określonych sekwencji operacji. Programowanie mikroprocesorów odbywa się zazwyczaj przy pomocy języków programowania tzw. niskiego poziomu. Jednym z języków symbolicznych niskiego poziomu jest asembler. Charakteryzuje się tym, że jednemu rozkazowi języka maszynowego odpowiada jeden rozkaz symboliczny mający postać skrótu mnemotechnicznego używanego do określenia rozkazów z listy rozkazów danego procesora. Aby program napisany w asemblerze “zrozumiany” był przez mikroprocesor, musi zostać “przetłumaczony” na język wewnętrzny mikroprocesora, czyli na język maszynowy. Najczęstszym formatem języka maszynowego jest Intel-Standard-Hex, w którym poszczególne rozkazy mikroprocesora przedstawione są w kodzie heksadecymalnym. Programy “tłumaczące” nazywane są kompilatorami. W laboratorium stosowane jest środowisko programowe asemblera asm535 firmy KEIL wraz z modułem dydaktycznym firmy MICROMAX. ⇒ OPIS JĘZYKA PROGRAMOWANIA Środowisko programowe asm535 nie różni się istotnie od innych, umożliwiających zaprogramowanie mikrokontrolera, należy jednak przy pisaniu programu źródłowego przestrzegać kilku podanych niżej zasad: 1. Linia programu źródłowego ma postać: Nazwa etykiety: mnemonik rozkazu operand,operand ; komentarz np.: PETLA: DJNZ R0,PETLA ; opóźnienie wykonania programu Mikrokontroler SAB80C515/535... Strona 9 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM 2. Można korzystać z trzech formatów przedstawiania liczb, przy czym liczby w formacie szesnastkowym i binarnym muszą być poprzedzone identyfikatorem: $ - liczba w szesnastkowa (heksadecymalna), np. $0D3F % - liczba binarna, np. %00001111 - liczby dziesiętne bez znaku poprzedzającego, np. 50. 3. Liczby muszą zaczynać się od cyfry. Dlatego liczby w kodzie szesnastkowym zaczynające się od litery muszą być poprzedzone cyfrą 0, np. 0F3. 4. Jeżeli w rozkazie wpisywana jest wartość liczbowa, to musi być poprzedzona znakiem #. W przeciwnym razie kompilator potraktuje tą wartość jako adres komórki pamięci wewnętrznej RAM lub SFR, np. MOV A,$32 - wpisanie do A zawartości komórki pamięci wewnętrznej RAM o adresie 32H MOV A,#$32 - wpisanie do A liczby 32H 5. Symbole predefiniowane, którymi są nazwy rejestrów, słowa kluczowe rozkazów itp. są słowami zastrzeżonymi i nie mogą być użyte jako nazwa etykiety. 6. Pozostałe symbole (nazwy określające adresy lub wartości liczbowe) nie mogą mieć więcej niż 31 znaków, przy czym pierwszym znakiem musi być litera, np. C_DA BYTE ($20) ; przypisanie symbolowi C_DA adresu 20H w pamięci RAM CONV_E_100 EQU $100 ; przypisanie symbolowi CONV_E_100 wartości 100H 7. Etykiety muszą zaczynać się od lewego marginesu i muszą być zakończone dwukropkiem. 8. Komentarze muszą być poprzedzone średnikiem. Podczas kompilacji programu są ignorowane, widoczne są jedynie w zbiorze zawierającym listing programu, np. ; to jest komentarz 9. Program źródłowy powinien posiadać rozszerzenie .asm. Po napisaniu programu w języku asemblera, należy skompilować go wykorzystując kompilator asm535. Wywołanie kompilacji ma postać: ASM535 nazwa_programu_źródłowego.asm/H/L/S przy czym parametry H, L, S nie muszą występować łącznie i oznaczają: H - tworzenie programu w kodzie maszynowym .HEX, L - tworzenie listingu programu, tzn. zbioru z rzeczywistymi adresami skompilowanego programu źródłowego, S - tworzenie zbioru z tablicami symboli używanych w programie źródłowym .asm. ⇒ PODSTAWOWE KOMENDY ASEMBLERA ORG Mikrokontroler SAB80C515/535... Strona 10 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM ORG adres_początku_segmentu Dyrektywa powoduje ustalenie adresu początkowego segmentu absolutnego pamięci, od którego będzie zaczynał się program, przy czym poniżej adresu początkowego nie można umieszczać modułów relokowalnych. Przykład: ORG $100 ; adres początku segmentu 100H, w obszarze ; 0..100H nie można umieszczać ; modułów relokowalnych. EQU symbol EQU wyrażenie Dyrektywa powoduje przypisanie nazwie “symbol” wartości “wyrażenie”, przy czym nie wolno w danym module drugi raz nadawać nowej wartości nazwie “symbol”. Przykład: WSP EQU $100 ; nazwie WSP została nadana wartość ; 100H SET symbol SET wyrażenie Dyrektywa powoduje przypisanie nazwie “symbol” wartości “wyrażenie”, przy czym w danym module można drugi raz nadawać nową wartość nazwie “symbol”. Przykład: WSP1 SET $100 ; nazwie WSP1 została nadana wartość ; 100H BIT symbol BIT wyrażenie Dyrektywa powoduje przypisanie nazwie “symbol” wartości “wyrażenie”, którą jest adres bitu w obszarze pamięci wewnętrznej RAM lub rejestrów SFR, przy czym nie wolno w danym module drugi raz nadawać nowej wartości nazwie “symbol”. Wartość “wyrażenie” musi być z przedziału (0..255) Przykład: DIODA BIT P1.5 ; nazwie DIODA został przypisany bit P1.5 ; (6 bit portu P1). BYTE symbol BYTE wyrażenie Mikrokontroler SAB80C515/535... Strona 11 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Dyrektywa powoduje przypisanie nazwie “symbol” wartości “wyrażenie”, którą jest adres bajtu w obszarze pamięci wewnętrznej RAM, przy czym nie wolno w danym module drugi raz nadawać nowej wartości nazwie “symbol”. Wartość “wyrażenie” musi być z przedziału (0..255). Przykład: PORT BYTE ($90) ; symbolowi PORT został przypisany ; adres 90H DB etykieta: DB wyrażenie,wyrażenie,... Dyrektywa powoduje umieszczenie w kolejnych bajtach pamięci programu kolejnych wartości wskazanych przez “wyrażenie”, przy czym wartość “wyrażenie musi być z przedziału (0..255). Zamiast wyrażenia numerycznego można umieścić łańcuch znaków dowolnej długości. Łańcuch znaków musi być umieszczony w apostrofach. Przykład: TABLICA: DB $25,$43,$55 TEKST: ‘Mikroprocesor’ DBW etykieta: DBW wyrażenie,wyrażenie,... Dyrektywa powoduje umieszczenie w kolejnych bajtach pamięci programu kolejnych 16-bitowych wartości wskazanych przez “wyrażenie”, przy czym wartość “wyrażenie musi być z przedziału (0..65535). Zamiast wyrażenia numerycznego można umieścić łańcuch znaków dowolnej długości. Łańcuch znaków musi być umieszczony w apostrofach. Przykład: TABLICA: DBW $254C,$1024 TEKST: ‘Mikroprocesor’ Mikrokontroler SAB80C515/535... Strona 12 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM ⇒ LISTA ROZKAZÓW MIKROKONTROLERA Lista rozkazów mikrokontrolera SAB 80C515/535 zawiera 111 rozkazów: 49 jednobajtowych, 45 dwubajtowych i 17 trzybajtowych, wykonywanych w ciągu jednego lub dwóch cykli maszynowych. Wyjątkiem są rozkazy mnożenia i dzielenia, które wykonywane są w ciągu czterech cykli maszynowych. Poniżej zamieszczono listę wszystkich rozkazów w alfabetycznej kolejności mnemoników. W opisie rozkazów przyjęto następujące oznaczenia: A B Rr Ri DPTR PC SP C (CY) AC OV ad n nn bit adr11 adr16 d @ # X (X) <r> <s> <br> <dp> - akumulator, - rejestr B, - rejestr roboczy, - rejestr roboczy - wskaźnik danych,i=0,1. (dla R0 i R1), - wskaźnik danych, - licznik rozkazów, - wskaźnik stosu, - wskaźnik przeniesienia, - znacznik (flaga) przeniesienia pomocniczego, - znacznik (flaga) przepełnienia, - 8-bitowy adres bezpośredni, - 8-bitowy argument bezpośredni, - 16-bitowy argument bezpośredni, - 8-bitowy adres bitu w pamięci RAM lub SFR, - adres 11 bitowy, - adres 16 bitowy, - 8-bitowe przesunięcie o wartości z przedziału <-128, 127>, - w mnemoniku rozkazu poprzedza adres pośredni, - w mnemoniku rozkazu poprzedza argument bezpośredni, - w zapisie operacji oznacza zawartość rejestru X, - w zapisie operacji oznacza zawartość pamięci o adresie X, - miejsce pobrania argumentu i zapisania wyniku operacji, - miejsce pobrania drugiego argumentu operacji, - rejestr bazowy, - wskaźnik danych, Mikrokontroler SAB80C515/535... Strona 13 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Zawartość licznika rozkazów PC zwiększana jest o 2, a następnie odkładana na stos. Wskaźnik stosu jest zwiększany o 2, do bitów 0-10 licznika rozkazów jest wpisywany 11-bitowy adres bezpośredni, przy czym pięć bardziej znaczących bitów licznika rozkazów nie liczba cykli:2 zmienia się. Skok do podprogramu wykonuje się na tej stronie, na której jest umieszczony pierwszy bajt rozkazu następnego po ACALL. PC ← PC + 2 SP ← SP + 1 (SP) ← PC7..0 SP ← SP + 1 (SP) ← PC15..8 PC10..0 ← adr11 Wskazany argument dodawany jest do akumulatora, ADD A,<s> przy czym wynik jest wpisywany do akumulatora. dodaj do akumulatora Znaczniki CY, AC i OV ustawiane są zgodnie z wynikiem operacji. Możliwe są cztery tryby liczba cykli: 1 adresowania argumentu <s>: ADD A,Rr A ← A + Rr ADD A,@Ri A ← A + (Ri) ADD A,ad A ← A + (ad) ADD A,#n A←A+n Do akumulatora dodawany jest wskazany argument ADDC A,<s> dodaj do akumulatora z i zawartość wskaźnika przeniesienia, przy czym wynik wpisywany jest do akumulatora. Znaczniki przeniesieniem CY, AC i OV ustawiane są zgodnie z wynikiem operacji. Możliwe są cztery tryby adresowania liczba cykli: 1 argumentu <s>: ADDC A,Rr A ← A + Rr + CY ADDC A,@Ri A ← A + (Ri) + CY ADDC A,ad A ← A + (ad) + CY ADDC A,#n A ← A + n + CY Zawartość licznika rozkazów zwiększa się o 2. Do AJMP adr11 bitów 0-10 licznika rozkazów jest wpisywany 11skocz bezwarunkowo bitowy adres bezpośredni, przy czym pięć bardziej na stronę znaczących bitów licznika rozkazów nie zmienia się. Skok wykonywany jest pod adres na stronie, na której liczba cykli: 2 jest umieszczony pierwszy bajt rozkazu następnego po AJMP. ACALL adr11 skocz do podprogramu na stronie PC10..0 ← adr11 Mikrokontroler SAB80C515/535... Strona 14 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM ANL <r>,<s> mnożenie logiczne liczba cykli: 1 ANL C,bit mnożenie logiczne przez bit liczba cykli: 2 ANL C,/bit mnożenie logiczne przez negację zawartości bitu Wykonywane jest mnożenie logiczne wskazanych argumentów, przy czym wynik operacji wpisywany jest do miejsca, z którego został pobrany argument <r>. Należy pamiętać, że jeżeli rozkaz jest użyty do zmiany stanu wyjścia, to jest odczytywana i zapisywana zawartość rejestru wyjściowego portu, a nie stan logiczny z końcówek układu. Możliwych jest sześć różnych trybów adresowania argumentów: ANL A,Rr A ← A ∧ Rr ANL A,@Ri A ← A ∧ (Ri) ANL A,ad A ← A ∧ (ad) ANL A,#n A←A∧n ANL ad,A ad ← (ad) ∧ A ANL ad,#n ad ← (ad) ∧ n (liczba cykli: 2) Znacznik przeniesienia C jest zerowany, jeżeli wartość logiczna bitu o podanym adresie jest równa 0, w przeciwnym wypadku nie zmienia się. CY ← CY ∧ (bit) Znacznik przeniesienia C jest zerowany, jeżeli wartość logiczna bitu o podanym adresie jest równa 1, w przeciwnym wypadku nie zmienia się. CY ← CY∧ ( bit ) liczba cykli: 2 Wskazane argumenty <r> i <s> są porównywane. CJNE <r>,<s>,d Jeśli nie są równe, to następuje skok względem adresu porównaj argumenty i skocz, jeśli nie są równe pierwszego bajtu rozkazu następnego po CJNE. Jeżeli wartość <r> jest mniejsza niż <s>, to znacznik C przyjmuje wartość 1, w przeciwnym razie C jest liczba cykli: 2 zerowany. Możliwe są cztery tryby adresowania argumentów: CJNE A,ad,d PC ← PC + 3 jeśli A = (ad) PC ← PC + d jeśli A ≠ (ad) CJNE A,#n,d PC ← PC + 3 jeśli A = n PC ← PC + d jeśli A ≠ n CJNE Rr,#n,d PC ← PC + 3 jeśli Rr = n PC ← PC + d jeśli Rr ≠ n CJNE @Ri,#n,d PC ← PC + 3 jeśli (Ri) = n PC ← PC + d jeśli (Ri) ≠ n Mikrokontroler SAB80C515/535... Strona 15 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM CLR A wyzeruj akumulator liczba cykli: 1 CLR bit wyzeruj bit liczba cykli: 1 CLR C wyzeruj znacznik (flagę) przeniesienia liczba cykli: 1 CPL A negacja akumulatora liczba cykli: 1 CPL bit negacja bitu liczba cykli: 1 CPL C negacja znacznika przeniesienia liczba cykli: 1 DA A korekcja dziesiętna (nie jest wykonywana korekcja wyniku odejmowania!) liczba cykli: 1 DEC <r> zmniejsz o 1 liczba cykli: 1 Zawartość akumulatora zostaje wyzerowana. A←0 Zerowany jest bit o podanym adresie bezpośrednim. (bit) ← 0 Zerowany jest znacznik (flaga) przeniesienia. C←0 Zawartość akumulatora jest negowana bit po bicie. A← A Negowany jest bit o podanym adresie bezpośrednim. (bit) ← ( bit ) Negowany jest znacznik (flaga) przeniesienia. CY ← CY Wykonywana jest korekcja dziesiętna wyniku dodawania. Jeżeli argumenty podane są w formacie BCD, wówczas wynik przedstawiany jest w postaci dwóch cyfr dziesiętnych w kodzie BCD. Znacznik przeniesienia CY jest ustawiany zgodnie z wynikiem dodawania (jeśli liczba dziesiętna jest większa od 99), nie zmienia się stan znaczników AC i OV. Od wskazanego argumentu odejmowana jest jedynka, przy czym stan znaczników nie ulega zmianie. Jeżeli rozkaz użyty jest do zmiany stanu wyjścia, to jest odczytywana i modyfikowana zawartość rejestru wyjściowego portu a nie stan logiczny końcówek układu. Możliwe są cztery tryby adresowania: DEC A A←A-1 DEC Rr Rr ← Rr - 1 DEC @Ri (Ri) ← (Ri) - 1 DEC ad (ad) ← (ad) - 1 Mikrokontroler SAB80C515/535... Strona 16 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM DIV AB dzielenie liczba cykli: 4 DJNZ <r>,d zmniejsz o1 i skocz, jeśli nie zero liczba cykli: 2 INC <r> zwiększ o 1 liczba cykli: 1 INC DPTR zwiększ o 1 wskaźnik danych Operacja dokonuje dzielenia ośmiobitowej liczby bez znaku zawartej w akumulatorze przez ośmiobitową liczbę bez znaku zawartą w rejestrze B. Część całkowita wyniku dzielenia wpisywana jest do akumulatora, zaś reszta do rejestru B. Znaczniki CY i OV są zerowane. Jeśli w rejestrze B jest 0, to po wykonaniu rozkazu zawartość akumulatora i rejestru B jest nieokreślona, a znacznik OV = 1. A ← [A/B] B ← reszta (A/B) Od wskazanego argumentu odejmowana jest jedynka. Jeśli po tej operacji argument nie jest równy zero, to wykonywany jest skok względem adresu pierwszego bajtu rozkazu następnego po DJNZ, przy czym stan znaczników nie ulega zmianie. Możliwe są dwa rodzaje trybów adresowania: DJNZ Rr,d Rr ← Rr - 1, Jeśli Rr ≠ 0 to PC ← PC + d Jeśli Rr = 0 to PC ← PC + 2 DJNZ ad,d (ad) ← (ad) - 1, Jeśli (ad) ≠ 0 to PC ← PC + d Jeśli (ad) = 0 to PC ← PC + 2 Do wskazanego argumentu dodawana jest jedynka, przy czym stan znaczników nie ulega zmianie. Jeżeli rozkaz użyty jest do zmiany stanu wyjścia, to jest odczytywana i modyfikowana zawartość rejestru wyjściowego portu a nie stan logiczny końcówek układu. Możliwe są cztery tryby adresowania argumentu: INC A A←A+1 INC Rr Rr ← Rr + 1 INC @Ri (Ri) ← (Ri) + 1 INC ad (ad) ← (ad) + 1 Do 16-bitowego rejestru DPTR dodawana jest 1, przy czym stan znaczników nie ulega zmianie. DPTR ← DPTR + 1 liczba cykli: 1 Mikrokontroler SAB80C515/535... Strona 17 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Jeżeli wartość bitu o podanym adresie wynosi 1, wówczas następuje skok względem adresu pierwszego bajtu rozkazu następnego po JB (do wskaźnika licznika rozkazów dodaje się przesunięcie d). Testowany bit nie ulega zmianie. liczba cykli: 2 jeśli (bit) = 1 PC ← PC + d jeśli (bit) = 0 PC ← PC + 3 Jeśli wartość bitu o wskazanym adresie bezpośrednim JBC bit,d wynosi 1 to jest on zerowany i wykonywany jest skok zeruj bit jeśli jest względem pierwszego bajtu rozkazu następnego po ustawiony i skocz JBC (do zawartości licznika rozkazów dodawane jest przesunięcie d). liczba cykli: 2 jeśli (bit) = 0 PC ← PC + 3 PC ← PC + d i (bit) = 0 jeśli (bit) = 1 Jeżeli wartość flagi przeniesienia CY wynosi 1, JC d wówczas wykonywany jest skok względem skocz, jeśli wystąpiło pierwszego bajtu rozkazu następnego po JC, czyli do przeniesienie licznika rozkazów dodawane jest przesunięcie d. liczba cykli: 2 jeśli CY = 0 PC ← PC + 2 jeśli CY = 1 PC ← PC + d Wykonywany jest skok pod adres będący sumą JMP @A + DPTR wartości DPTR i wartości akumulatora, przy czym skocz pośrednio zawartość akumulatora traktowana jest jako liczba dwójkowa bez znaku (z zakresu 0..255). Do licznika liczba cykli: 2 rozkazów wpisywana jest suma zawartoąci rejestru DPTR i akumulatora. PC ← A + DPTR Jeżeli wartość bitu o podanym adresie bezpośrednim JNB bit,d jest zerowa, wówczas wykonywany jest skok skocz, jeśli bit jest względem adresu pierwszego bajtu rozkazu zerowy następnego po JNB (do zawartości licznika rozkazów dodawane jest przesunięcie d), przy czym wartość liczba cykli: 2 testowanego bitu nie ulega zmianie. jeśli (bit) = 1 PC ← PC +3 jeśli (bit) = 0 PC ← PC + d Jeżeli wartość flagi przeniesienia CY wynosi 0, JNC d wówczas wykonywany jest skok względem adresu skocz, jeśli nie wystąpiło przeniesienie pierwszego bajtu rozkazu następnego po JNC, czyli do zawartości licznika rozkazów dodawane jest przesunięcie d. liczba cykli: 2 jeśli CY = 1 PC ← PC + 2 jeśli CY = 0 PC ← PC + d JB bit,d skocz, jeśli ustawiony jest bit Mikrokontroler SAB80C515/535... Strona 18 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM JNZ d skocz, jeśli akumulator nie jest zerowy liczba cykli: 2 JZ d skocz, jeśli akumulator jest zerowy liczba cykli: 2 LCALL adr16 wywołaj podprogram liczba cykli: 2 LJMP adr16 skocz bezwarunkowo liczba cykli: 2 MOV bit,C prześlij flagę CY do bitu Jeżeli zawartość akumulatora nie jest równa zero, wówczas następuje skok względem adresu pierwszego bajtu rozkazu następnego po JNZ, czyli do licznika rozkazów dodawane jest przesunięcie d. jeśli A = 0 PC ← PC + 2 jeśli A ≠ 0 PC ← PC + d Jeżeli zawartość akumulatora jest równa zero, wówczas następuje skok względem adresu pierwszego bajtu rozkazu następnego po JZ, czyli do licznika rozkazów dodawane jest przesunięcie d. jeśli A ≠ 0 PC ← PC + 2 jeśli A = 0 PC ← PC + d Podczas pobrania rozkazu zawartość licznika rozkazów jest powiększana o 3 i ładowana na stos. Zawartość wskaźnika stosu jest zwiększana o 2, a do licznika rozkazów jest wpisywany 16-bitowy adres bezpośredni, pozwalając na skok do podprogramu pod dowolny adres w pamięci programu. PC ← PC + 3 SP ← SP + 1 (SP) ← PC7..10 SP ← SP + 1 (SP) ← PC15..8 PC ← adr16 Do licznika rozkazów wpisywany jest 16-bitowy adres bezpośredni, pozwalając na skok pod dowolny adres w całej przestrzeni pamięci programu PC ← adr16 Zawartość flagi przeniesienia przesyłana jest do bitu o podanym adresie bezpośrednim. (bit) ← CY liczba cykli: 2 Zawartość bitu o podanym adresie bezposrednim MOV C,bit prześlij wartość bitu do przesyłana jest do flagi przeniesienia. flagi przeniesienia Cy ← (bit) liczba cykli: 1 MOV DPTR,#nn wpisz 16-bitową wartość do wskaźnika danych liczba cykli: 2 Do 16-bitowego rejestru DPTR wpisywany jest argument bezpośredni, podany jako drugi i trzeci bajt rozkazu, przy czym pierwszy bajt argumentu wpisywany jest do rejestru DPH (bardziej znaczący) a drugi do rejestru DPL (mniej znaczący). DPTR ← nn Mikrokontroler SAB80C515/535... Strona 19 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Ośmiobitowy argument <s> jest przesyłany do miejsca wskazanego przez argument <r>. Możliwe jest piętnaście kombinacji adresowania argumentów: liczba cykli: 1 MOV A,Rr A ← Rr MOV A,@Ri A ← (Ri) MOV A,ad A ← (ad) MOV A,#n A←n MOV Rr,A Rr ← A MOV Rr,ad Rr ← (ad) MOV Rr,#n Rr ← n MOV @Ri,A (Ri) ← A (liczba cykli: 2) MOV @Ri,ad (Ri) ← (ad) MOV @Ri,#n (Ri) ← n MOV ad,A (ad) ← A (liczba cykli: 2) MOV ad,Rr (ad) ← Rr (liczba cykli: 2) MOV ad,@Ri (ad) ← (Ri) MOV ad1,ad2 (ad1) ← (ad2) (liczba cykli: 2) (liczba cykli: 2) MOV ad,#n (ad) ← n MOVC A, @A + <br> Do akumulatora przesyłana jest zawartość komórki pamięci programu o adresie będącym sumą prześlij bajt z pamięci zawartości akumulatora i zawartości 16-bitowego programu do rejestru bazowego <br>., przy czym jako rejestry akumulatora bazowe mogą być użyte wskaźnik danych DPTR i licznik rozkazów PC. Jeżeli rejestrem bazowym jest liczba cykli: 2 PC, to adresem bazowym jest adres pierwszego bajtu rozkazu następnego po MOVC. MOVC A,@A + DPTR A ← (A + DPTR) MOVC A,@A + PC A ← (A + PC) Do akumulatora wpisywane są dane z komórki MOVX A,@<dp> zewnętrznej pamięci danych o adresie pośrednim prześlij bajt z zawartym we wskaźniku danych <dp>, przy czym zewnętrznej pamięci danych do akumulatora wskaźnikiem danych może być rejestr roboczy R0 lu R1 albo rejestr DPTR. Jeżeli wskaźnikiem danych jest rejestr R0 lub R1, to adres 8-bitowy może być liczba cykli: 2 wysłany tylko przez port P0, natomiast jeżeli wskaźnikiem danych jest DPTR, to 16-bitowy adres wysyłany jest przez porty P0 (z DPL) i P2 (z DPH). MOVX A,@DPTR A ← (DPTR) MOVX A,@Ri A ← (Ri) MOV <r>,<s> prześlij dane Mikrokontroler SAB80C515/535... Strona 20 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM MOVX @<dp>,A prześlij bajt z akumulatora do zewnętrznej pamięci danych liczba cykli: 2 MUL AB pomnóż liczba cykli: 4 NOP rozkaz pusty (nie rób nic) liczba cykli: 1 ORL <r>,<s> sumuj logicznie liczba cykli: 1 ORL CY,bit sumuj logicznie CY z bitem liczba cykli: 2 Do komórki zewnętrznej pamięci danych o adresie pośrednim zawartym we wskaźniku danych <dp> wpisywane są dane z akumulatora, przy czym wskaźnikiem danych może być rejestr roboczy R0 lu R1 albo rejestr DPTR. Jeżeli wskaźnikiem danych jest rejestr R0 lub R1, to adres 8-bitowy może być wysłany tylko przez port P0, natomiast jeżeli wskaźnikiem danych jest DPTR, to 16-bitowy adres wysyłany jest przez porty P0 (z DPL) i P2 (z DPH). MOVX @DPTR,A (DPTR) ← A MOVX @Ri,A (Ri) ← A Ośmiobitowa liczba dwójkowa bez znaku z akumulatora mnożona jest przez 8-bitową liczbę bez znaku z rejestru B. Osiem bardziej znaczących bitów 16-bitowego wyniku wpisywanych jest do rejestru B, natomiast 8 mniej znaczących do akumulatora. Jeśli wynik mnożenia jest większy od 255, to jest ustawiana flaga OV, w przeciwnym razie flaga ta jest zerowana. Flaga CY jest zerowana. B.A ← [A x B] Żadna operacja nie jest wykonywana. Wykonywana jest suma logiczna wskazanych argumentów, przy czym wynik wpisywany jest do miejsca, z którego pobrany został argument <r>. Jeżeli operacja została użyta do zmiany stanu wyjścia, to zmianie ulega zawartość rejestru wyjściowego portu a nie stan logiczny końcówek układu. Możliwych jest sześć kombinacji adresowania argumentów: ORL A,Rr A ← A ∨ Rr ORL A,@Ri A ← A ∨ Ri ORL A,ad A ← A ∨ (ad) ORL A,#n A←A∨n ORL ad,A (ad) ← (ad) ∨ A (liczba cykli: 2) ORL ad,#n (ad) ← (ad) ∨ n Wykonana zostaje operacja sumowania logicznego flagi przeniesienia CY z zawartością bitu o podanym adresie bezpośrednim: jeśli wartość logiczna bitu równa jest 1, to flaga CY przyjmuje wartość 1. W przeciwnym razie zawartość CY nie zmienia się. CY ← CY ∨ (bit) Mikrokontroler SAB80C515/535... Strona 21 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM ORL C,/bit sumuj logicznie CY z negacją bitu liczba cykli: 2 POP ad zdejmij ze stosu liczba cykli: 2 PUSH ad ładuj na stos liczba cykli: 2 RET wróć z podprogramu liczba cykli: 2 RETI wróć z przerwania liczba cykli: 2 Wykonana zostaje operacja sumowania logicznego flagi przeniesienia CY z negacją zawartości bitu o podanym adresie bezpośrednim: jeśli wartość logiczna bitu równa jest 0, to flaga CY przyjmuje wartość 1. W przeciwnym razie zawartość CY nie zmienia się. CY ← CY ∨ ( bit ) Do komórki wewnętrznej pamięci danych o podanym adresie bezpośrednim wpisywane są dane z wierzchołka stosu, tzn komórki wewnętrznej pamięci danych o adresie zawartym we wskaźniku stosu SP. Wartość SP zmniejszana jest o 1. (ad) ← SP SP ← SP - 1 Zawartość wskaźnika stosu zwiększana jest o 1, a następnie na wierzchołek stosu jest wpisywana zawartość komórki wewnętrznej pamięci danych lub rejestru specjalnego SFR o podanym adresie bezpośrednim. SP ← SP + 1 (SP) ← (ad) Rozkaz powrotu z podprogramu. Adres powrotu jest wpisywany ze stosu do licznika rozkazów, po czym zawartość wskaźnika stosu zmniejszana jest o dwa. PC15..8 ← (SP) SP ← SP - 1 PC7..0 ← (SP) SP ← SP - 1 Rozkaz powrotu z podprogramu obsługi przerwania. Adres powrotu jest wpisywany ze stosu do licznika rozkazów, po czym zawartość wskaźnika stosu zmniejszana jest o dwa. Wykonanie tego rozkazu jest dla systemu przerwań sygnałem zakończenia obsługi przerwania, czyli żadne zgłoszenie przerwania o takim samym lub niższym priorytecie nie będzie wcześniej przyjęte. PC15..8 ← (SP) SP ← SP - 1 PC7..0 ← (SP) SP ← SP - 1 Mikrokontroler SAB80C515/535... Strona 22 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM RL A przesuń akumulator cyklicznie w lewo Zawartość akumulatora przesuwana jest cyklicznie w lewo. A 7 6 5 4 3 2 1 0 liczba cykli: 1 Zawartość akumulatora przesuwana jest cyklicznie RLC A w lewo z uwzględnieniem flagi CY. Wykonanie tego przesuń akumulator cyklicznie w lewo z CY rozkazu przy zerowej wartości flagi CY odpowiada pomnożeniu przez 2 liczby zawartej w akumulatorze. liczba cykli: 1 A CY RR A przesuń akumulator cyklicznie w prawo liczba cykli: 1 RRC A przesuń akumulator cyklicznie w prawo z CY 7 6 5 4 3 2 1 0 Zawartość akumulatora przesuwana jest cyklicznie w prawo. A 7 6 5 4 3 2 1 0 Zawartość akumulatora przesuwana jest cyklicznie w prawo z uwzględnieniem flagi CY. Wykonanie tego rozkazu przy zerowej wartości flagi CY odpowiada podzieleniu przez 2 liczby zawartej w akumulatorze. liczba cykli: 1 A CY SETB bit ustaw bit liczba cykli: 1 SETB C ustaw flagę przeniesienia liczba cykli: 1 SJMP d skocz bezwarunkowo liczba cykli: 2 7 6 5 4 3 2 1 0 Do bitu o podanym adresie bezpośrednim wpisywana jest 1. (bit) ← 1 Do flagi przeniesienia wpisywana jest 1. CY ← 1 Do zawartości licznika rozkazów dodawane jest przesunięcie d. Skok jest wykonywany względem adresu pierwszego bajtu następnego rozkazu. PC ← PC + 2 PC ← PC + d Mikrokontroler SAB80C515/535... Strona 23 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Zawartość wskazanego argumentu oraz zawartość SUBB A,<s> odejmij od akumulatora flagi przeniesienia CY odejmowana jest od akumulatora, przy czym wynik operacji wpisywany z pożyczką jest do akumulatora i ustawiane są znaczniki CY, AC i OV. Możliwe są cztery tryby adresowania liczba cykli: 1 argumentu: SUBB A,Rr A ← A - Rr - CY SUBB A,@Ri A ← A - (Ri) - CY SUBB A,ad A ← A - (ad) - CY SUBB A,#n A ← A - n - CY Zawartość bardziej znaczących bajtów (MSB) SWAP A wymieniona zostaje z zawartością mniej znaczących wymień półbajty w bajtów, co jest równoważne z czterokrotnym akumulatorze cyklicznym przesunięciem akumulatora. liczba cykli: 1 A7..4 ↔ A3..0 Zawartość akumulatora wymieniana jest z XCH A,<s> zawartością wskazanego argumentu. Możliwe są trzy wymień akumulator z tryby adresowania argumentu: zawartością komórki pamięci XCH A,Rr A ↔ Rr XCH A,@Ri A ↔ (Ri) liczba cykli: 1 XCH A,ad A ↔ (ad) Zawartość mniej znaczących bitów akumulatora (bity XCHD A,@Ri 3..0) zostaje wymieniona z zawartością mniej wymień półbajty z akumulatora i pamięci znaczących bitów komórki wewnętrznej pamięci danych o adresie zawartym w rejestrze Ri (R1 lub R0). Bardziej znaczące bity akumulatora bity (7..4) i liczba cykli: 1 komórki pamięci pozostają bez zmian. A3..0 ↔ (Ri)3..0 Wykonywana jest suma mod 2 wskazanych XRL <r>,<s> argumentów, przy czym wynik wpisywany jest do sumuj mod 2 miejsca, z którego pobrany został argument <r>. Możliwych jest sześć kombinacji trybów adresowania liczba cykli: 1 argumentów: XRL A,Rr A ← A ⊕ Rr XRL A,@Ri A ← A ⊕ (Ri) XRL A,ad A ← A ⊕ (ad) XRL A,#n A←A⊕n XRL ad,A (ad) ← (ad) ⊕ A XRL ad,#n (ad) ← (ad) ⊕ n Mikrokontroler SAB80C515/535... Strona 24 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM 5. LITERATURA 1. SIEMENS, “Microcomputer Components. SAB 80515 / SAB 80C515 8 bit single chip Microcontroller Family”. Users Manual. 2. Krzysztof P. Dyrcz, Czesław T. Kowalski, Zdzisław Żarczyński, „Podstawy techniki mikroprocesorowej”, skrypt PWr., Wrocław 1999 3. A. Rydzewski, “Mikrokontrolery jednoukładowe rodziny MCS-51”. Mikrokontroler SAB80C515/535... Strona 25