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