19_07.pdf

(379 KB) Pobierz
152728890 UNPDF
Też to potrafisz
Kontynuujemy opis układów we−
wnętrznych mikrokontrolera 8051.
Wtym odcinku wyjaśnimy pojęcie
iznaczenie „stosu” ijednostki aryt−
metyczno−logicznej
Przy okazji wszystkim „niecierpli−
wym” lub „wątpiącym” wswoje
możliwości dotyczące programowa−
nia 8051 jeszcze raz przypominam,
że wtej części cyklu nie opisujemy
szczegółowo wszystkich komponen−
tów procesora, jedynie wsposób
przystępny staramy się wspólnie
zrozumieć fakt istnienia tych ele−
mentów oraz ich znaczenie dla całe−
go procesora. Autor robi to celowo,
tak abyś mógł drogi Czytelniku
„oswoić się” znaszym bohaterem.
Wszystkie omówione elementy ar−
chitektury 8051 będziemy sukce−
sywnie „przywoływać” z pamięci
isprawdzać ich działanie wpraktyce
podczas „nauki programowania
8051”. Wtedy to zdobyta i„oswo−
jona” wiedza okaże się kluczem do
sukcesu którym będzie zpewnością
pierwszy napisany przez Ciebie pro−
gram na 8051.
Mikrokontrolery?
To takie proste...
Część 3
Mikrokontroler 8051 – opis układu
Na początek krótkie przypomnienie:
w poprzednim odcinku zajmowaliśmy się
wewnętrzną pamięcią programu mikro−
procesora oraz wewnętrzną pamięcią da−
nych. W jej obrębie pobieżnie omówiliś−
my istnienie „rejestrów specjalnych”
– SFR oraz poznaliśmy funkcję licznika
rozkazów PC. Szczegółowy opis SFR oraz
„sprzętowe” działanie licznika rozkazów
opiszemy przy okazji omawiania cyklu
rozkazowego procesora oraz wstępu do
asemblera. Na tym etapie jednak naszym
celem będzie poznanie pozostałych blo−
ków funkcjonalnych 8051−ki.
try wskaźnikowe R0 i R1) lub bezpośred−
ni odwołując się niejako „wprost” do da−
nej komórki pamięci. Pozostałe 128 baj−
tów pamięci o adresach 80h...FFh to ob−
szar omawianych w skrócie „rejestrów
specjalnych – SFR”.
Obok na rysunku 1b pokazałem struk−
turę wewnętrznej pamięci danych w mik−
rokontrolerze 8052. Jak widać w prze−
strzeni tej istnieje dodatkowa, niejako
zdublowana pamięć danych o adresach
80h...FFh. Przeznaczenie jej jest takie jak
pamięci użytkownika o adresach
00h...7Fh, czyli w całości (128 bajtów)
można ja wykorzystać do swoich potrzeb
umieszczając w niej te wyniki obliczeń
oraz pozostałe zmienne programowe,
które po prostu „nie mieszczą” się w ob−
rębie pamięci danych użytkownika o ad−
resach 00h...7Fh. Ze względu jednak że
ta dodatkowa, nazywana często „nakład−
kową”, pamięć danych pokrywa się adre−
sowo (adresy 80h...FFh) z obszarem re−
jestrów specjalnych SFR, należało ją w ja−
kiś sposób rozróżnić, tak aby np. podczas
odczytu lub zapisu którejś z komórek tej
pamięci nie zmodyfikować przypadkiem
któregoś z rejestrów specjalnych SFR.
Otóż konstruktorzy kontrolera 8052 roz−
wiązali ten problem w prosty sposób
umożliwiając dostęp do tej dodatkowej
„nakładkowej” części pamięci , jedynie za
pośrednictwem adresowania pośrednie−
go. Toteż jeżeli np. w przyszłości, drogi
Wewnętrzna pamięć
danych w 8052
Wbrew pozorom tytuł tego akapitu nie
wykracza poza ramy naszego minikursu
na temat 8051. Jak już wiesz (z części I)
mikrokontroler 8052 to rozszerzona wer−
sja ‘51–ki, posiadająca:
– dodatkowy 16–bitowy uniwersalny
układ licznikowy
– dodatkowe 128 bajtów wewnętrznej
pamięci danych RAM.
I właśnie tym drugim elementem za−
jmiemy się teraz. Na rysunku 1a przed−
stawiłem znaną Ci już strukturę wewnęt−
rznej pamięci danych w 8051. Jak mówi−
liśmy poprzednio obszar o adresach:
00h...7Fh (128 bajtów) zajmuje pamięć
danych użytkownika, którą można adre−
sować w sposób pośredni (poprzez rejes−
E LEKTRONIKA DLA WSZYSTKICH 7/97
43
152728890.022.png
Też to potrafisz
Rys. 1. Pamięć w procesorach 8051 oraz 8052
W przypadku
korzystania ze sto−
su adresowanie
jest niekonieczne.
Przy takim sposo−
bie obsługi ko−
nieczne jest jednak
zachowanie odpo−
wiedniej kolejności
w zapisie i odczy−
cie tak aby nasze
cenne dane nie
„pomieszały się”.
Otóż taki upo−
rządkowany spo−
sób przechowywa−
nia danych charakteryzuje właśnie stos.
Rysunek 2 wyjaśnia fizyczną budowę sto−
su. Jak widać wszystkie dane (bajty) przy
zapisie odkładane są „na stos” jedna na
drugą. Na wierzchołku stosu znajduje się
zawsze ostatnio odłożona dana (w naszym
przykładzie oznaczona jako X), toteż aby
„dobrać się” do danej leżącej pod nią (Y)
należy najpierw „zdjąć” ze stosu daną X,
a potem dopiero odczytać Y. Można to
porównać do stosu talerzy ustawionych
jeden nad drugim. Odkładamy talerze na
stos i zdejmujemy ze stosu. Nie możemy
wyjąć talerza „z głębi stosu” – dostajemy
się do niego dopiero po zdjęciu wszystkich
stojących na nim.
„Po co jednak jest ten „stos”, czy nie
jest to tylko niepotrzebna komplikacja
.....”, z pewnością wielu z Was w tej
chwili zadaje sobie to pytanie. Otóż jak
się okaże później a szczególnie podczas
nauki programowania, struktura ta speł−
nia niezmiernie ważna rolę podczas wy−
konywania programu przez mikroproce−
sor. Na tym etapie powinieneś wiedzieć
tylko dwie podstawowe rzeczy: stos słu−
ży do przechowywania zmiennych lub re−
jestrów SFR i druga sprawa: dostęp do
nich odbywa się w sposób uporządkowa−
ny – w odpowiedniej kolejności, jak opi−
sałem wcześniej.
„No tak ale gdzie jest ten stos ?....”, już
odpowiadam. W przypadku procesorów
rodziny MCS–51 stos umieszczony jest...
uwaga !, w wewnętrznej pamięci danych
użytkownika, czyli w obszarze o adresach
00h...7Fh.
Jak wynika z ry−
sunku 2 ilość tej pa−
mięci zajętej przez
stos będzie się zmie−
niać i zależeć od te−
go ile bajtów odłoży−
liśmy na ten stos.
Aby ściśle okre−
ślić miejsce położe−
nia stosu, w archi−
tekturze ‘51–ki zna−
jduje się tzw. licznik
stosu a fachowo
mówiąc „wskaźnik stosu”. Fizycznie jest
on po prostu 8–bitowym rejestrem w ob−
szarze SFR, położonym pod adresem 81h
(patrz tabela 1 w poprzedniej części).
W mnemonice (nazewnictwie) proceso−
rów MCS–51 posiada on symbol SP z an−
gielskiego „stack pointer” – wskaźnik
stosu.
Jego zadaniem jest automatyczne
wskazywanie miejsca aktualnego wierz−
chołka stosu. Tak więc w przypadku odło−
żenia bajtu na stos, wskaźnik SP jest au−
tomatycznie (bez ingerencji programisty)
zwiększany o 1, w przypadku zdjęcia da−
nej ze stosu jest on zmniejszany. Sytua−
cję te wyjaśnia rysunek 3.
Podsumujmy więc: stos jest hierar−
chiczną strukturą do przechowywania da−
nych (bajtów) z obszaru wewnętrznej pa−
mięci RAM procesora (włączając SFR)
a położenie jego wierzchołka jednoznacz−
nie określa jego wskaźnik – SP. Przy ko−
rzystaniu ze stosu obowiązuje zasada,
„ile bajtów odłożyłeś na stos, tyle potem
musisz zdjąć”, tak aby struktura stosu nie
została zakłócona. W praktyce ma to
szczególne znaczenie, bowiem stos wy−
korzystywany jest nie tylko poprzez świa−
dome działanie użytkownika lecz także
przechowywane są na nim ważne dla
działania całego mikrokontrolera adresy
powrotów z podprocedur oraz procedur
obsługi przerwań, czyli innymi słowy mó−
wiąc, aktualne zawartości 16–bitowego
licznika rozkazów PC.
No tak ale przecież stos składa się
z 8–bitowych komórek pamięci, a licznik
rozkazów (programu PC) jest 16–bitowy.
W takim przypadku procesor na stos od−
kłada najpierw młodszy bajt rejestru PC,
a następnie starszy bajt, wskaźnik stosu
SP zostaje wiec zwiększony automatycz−
nie o 2. Tak więc w prosty sposób można
przechowywać inne rejestry podwójne
np. wskaźnik adresu zewnętrznej pamię−
ci – DPTR (tabela.1), składający się
z dwóch 8–bitowych rejestrów DPH (ad−
res 83h) oraz DPL (adres 82h).
W przypadku rejestru DPTR jak i innych
SFR przechowywanie na stosie odbywa
się „na żądanie” użytkownika – w potrze−
bnym dla niego momencie. O tym jak
Czytelniku, odwołasz się (zaadresujesz) do
dowolnej komórki wewnętrznej pamięci
danych w sposób bezpośredni a wskazy−
wanym przez Ciebie adresem komórki bę−
dzie np. F0h (240 dziesiętnie) to z pewnoś−
cią „dobierzesz” się do .... rejestru spe−
cjalnego o symbolu B (patrz tabela 1 w po−
przednim odcinku), natomiast jeżeli wyko−
nasz to samo tym razem jednak adresując
komórkę w sposób pośredni poprzez re−
jestry wskaźnikowe R0 lub R1, to doko−
nasz zapisu (lub odczytu) komórki położo−
nej w obszarze nakładkowym – czyli częś−
ci dodatkowej pamięci danych.
Oczywiście jeżeli wykonasz tą ostat−
nią operację programując kostkę 8051, to
w efekcie zaadresowania pośredniego
komórki o adresie z zakresu 80h...FFh
trafisz przysłowiową „kulą w płot”, czyli
nie uzyskasz oczekiwanego efektu , bo
po prostu w tym obszarze 8051 adreso−
wanym pośrednio po prostu nie ma nic.
Warto o tym pamiętać, bowiem zgodnie
z zasadą kompatybilności w dół, program
napisany na procesor o mniejszych moż−
liwościach (np. 8051) z pewnością będzie
pracował poprawnie na 8052, ale nie od−
wrotnie. To samo dotyczy każdego człon−
ka rodziny MCS–51.
Stos i wskaźnik stosu
Z pojęciem „stosu” miałeś okaz−
ję, drogi Czytelniku, spotkać się w artyku−
le omawiającym ogólne założenia doty−
czące mikroprocesorów, pisaliśmy o tym
w EdW. Jeżeli nie do końca rozumiesz is−
totę stosu postaram się Ci ją jeszcze raz
przedstawić. Otóż najprościej można
stos określić jako bardzo prostą w działa−
niu strukturę przechowującą bajty. Pod
pojęciem „przechowania” rozumiemy
oczywiście operacje zapisu z następnie
odczytu dowolnej zmiennej lub rejestru
SFR.
Wiesz już że w przypadku takich ope−
racji tylko z udziałem np. wewnętrznej
pamięci danych użytkownika, aby doko−
nać zapisu (odczytu) musisz daną komór−
kę pamięci najpierw zaadresować – czyli
po prostu podąć jej fizyczny adres.
Rys. 2. Zasada działania stosu
44
E LEKTRONIKA DLA WSZYSTKICH 7/97
152728890.023.png 152728890.024.png 152728890.025.png 152728890.001.png 152728890.002.png
Też to potrafisz
Rys. 3. Stos a wskaźnik stosu
f) po odłożeniu na stos licznika PC (2 baj−
ty), procesor wykonuje procedurę ob−
sługi przerwania
g) w tej procedurze użytkownik świado−
mie używa stosu do przechowywania
tymczasowo pewnych wartości, zapi−
sując na stos np. 3 bajty (te 3 bajty zna−
jdą się w sąsiedztwie bezpośrednio
„nad” bajtami z licznika rozkazów PC)
h) z powodu błędu w programie – popeł−
nionego przez użytkownika – pod ko−
niec procedury zostają zdjęte ze stosu
dwa (a nie trzy) bajty, które przechowy−
wały dane użytkownika
i) następuje zakończenie procedury ob−
sługi przerwania, procesor zdejmuje ze
wierzchołka stosu adres powrotu do
pętli głównej programu (2 bajty, które
wpisuje do licznika rozkazów PC) i tu
następuje ...... „kompletny klops”
– program prawdopodobnie „zawiesi
się” lub po prostu „zwariuje”.
Powód tego jest oczywisty, do liczni−
ka rozkazów PC nie zostały wpisane
wcześniej przechowane 2 bajty będące
pierwotną zawartością PC, a za to wpisa−
ny zostaje bajt pozostawiony przez użyt−
kownika (zawierający najpewniej inną
wartość liczbową) w procedurze obsługi
przerwania, oraz starszy bajt licznika roz−
kazów PC.
W tej sytuacji procesor powróci w zu−
pełnie inne miejsce programu, niż w te
w którym się znajdował w momencie na−
dejścia przerwania, czego skutki dla działa−
nia procesora okazać się mogą opłakane.
Pamiętajmy zatem o stosie jako
o ważnej strukturze w architekturze
8051, oraz o tym że tylko umiejętne
iświadome, oczywiście, z niego korzysta−
w praktyce i dlaczego przechowuje się re−
jestry na stosie dowiesz się drogi Czytelni−
ku przy okazji nauki programowania 8051.
Na rysunku 4 przedstawiono dwie sy−
tuacje w których używany jest stos. Pier−
wsza dotyczy przechowania rejestru licz−
nika rozkazów (programu) podczas obsłu−
gi procedury po nadejściu przerwania,
druga obrazuje jak świadomie można wy−
korzystać stos do przekazywania danych
pomiędzy rejestrami. W praktyce ten
ostatni przypadek jest niezmiernie rzadko
wykorzystywany, lecz w tym przykładzie
chodzi nam o zrozumienie samego spo−
sobu działania struktury stosu.
Na koniec dwie pozostałe ważne infor−
macje dotyczące stosu. Otóż po włącze−
niu zasilania procesora (lub jego resecie
oczywiście) wskaźnik stosu SP przyjmuje
domyślnie wartość 07h – czyli po prostu
7, wskazując tym samym że wierzchołek
stosu – adres umieszczenia następnej da−
nej – po odłożeniu jej na stos położony
będzie w wewnętrznej pamięci danych
pod adresem 08h (07h +1 zgodnie z opi−
saną wcześniej zasadą).
Jeżeli więc odłożymy jakiś bajt na
stos, najpierw licznik SP zostanie auto−
matycznie zwiększony o 1 (wskazując te−
raz 08h) , a następnie do komórki pamię−
ci o tym adresie 08h, zostanie wpisany
ten bajt. Przy zdjęciu ze stosu kolejność
będzie odwrotna, najpierw zdjęty zosta−
nie nasz bajt, a następnie zmniejszony
zostanie wskaźnik SP o 1.
Wskaźnik stosu SP tak jak każdy rejestr
SFR może być dowolnie modyfikowany
przez programistę poprzez zapisanie w nim
dowolnej 8–bitowej wartości (0...255)
W praktyce jednak sytuacja taka wy−
stępuje tylko wtedy, jeżeli chcemy zmie−
nić położenie stosu (czyli go przesunąć)
na początku wykonywania programu.
Operacja ta z oczywistych względów ma
sens jeżeli stos w danej chwili jest
„pusty” , w przeciwnym razie przy lekko−
myślnej modyfikacji wskaźnika SP wszys−
tkie dane odłożone wcześniej na stos sta−
ną się niedostępne (przynajmniej z punktu
widzenia działania samego stosu).
I tak jeżeli np. zechcesz drogi Czytelni−
ku wykorzystywać wewnętrzną pamięć
danych o adresach 08h...20h dla swoich
potrzeb (a nie na stos) , musisz na począt−
ku swego programu zmodyfikować
wskaźnik SP wpisując do niego wartość
np. 20h, co jest jednoznaczne z powie−
dzeniem mikroprocesorowi: „... uważaj
mikroprocesorze, twój stos będzie rozpo−
czynał się od adresu 21h, (a nie od 08h),
adresy 08h...20h są przeznaczone dla
moich potrzeb... .”
Na koniec jeszcze jedna istotna uwa−
ga. Otóż jak widać ze sposobu działania
stosu, poprzez nieumiejętne korzystanie
z niego bardzo łatwo jest go „zamazać”
lub mówiąc inaczej zniszczyć. Przykła−
dem niech będzie sytuacja w której:
a) mikroprocesor wykonuje swój rutyno−
wy program
b) nagle nadchodzi przerwanie z wejścia INT0
c) procesor przerywa działanie pętli głów−
nej programu
d) następuje skok do wykonania procedu−
ry obsługi przerwania
e) zanim jednak to nastąpi procesor auto−
matycznie zapisuje na stos aktualną za−
wartość licznika rozkazów PC (tak aby
potem wiedzieć gdzie ma wrócić do
pętli głównej programu)
a))
b))
Rys. 4. Przykłady wykorzystania stosu
E LEKTRONIKA DLA WSZYSTKICH 7/97
45
152728890.003.png 152728890.004.png 152728890.005.png 152728890.006.png 152728890.007.png 152728890.008.png 152728890.009.png 152728890.010.png 152728890.011.png 152728890.012.png 152728890.013.png 152728890.014.png 152728890.015.png 152728890.016.png 152728890.017.png 152728890.018.png
Też to potrafisz
nie przynosi często efekty w postaci
znacznego przyśpieszenia działania pro−
gramu oraz zmniejszenia jego rozmiarów.
O tym jak w praktyce korzystać z dobro−
dziejstw stosu powiemy dowiemy się
podczas nauki programowania.
– w przypadku dzielenia: reszta z dziele−
nia dwóch liczb 8–bitowych.
Oczywiście zarówno rejestr B jak
i akumulator A mogą być wykorzystywa−
ne dowolnie jako rejestry uniwersalne.
Trzecim ważnym rejestrem związa−
nym z ALU jest „słowo stanu programu”
nazywane w skrócie jako PSW (od ang.
„program status word”) – patrz rysu−
nek 5. Z tabeli 1 możemy odczytać że re−
jestr ten wchodzi w skład SFR a jego ad−
res to D0h (208 dziesiętnie). W skład te−
go rejestru wchodzi 8 bitów nazywanych
znacznikami z których cztery informują
o przebiegu wykonania operacji arytme−
tyczno – logicznych. I tak:
Znając pobieżnie główne 3 rejestry
związane z ALU zapoznajmy się wstępnie
z operacjami jakie można wykonywać przy
jej pomocy na liczbach 8–bitowych, są to
a)) operacjje arytmetyczne
– dodawanie argumentów
– dodawanie z przeniesieniem
– odejmowanie z pożyczką
W tych trzech przypadkach pierwszy
z argumentów operacji (składnik lub od−
jemna) umieszczana jest w akumulato−
rze, drugi składnik lub odjemnik umiesz−
czony jest w wewnętrznej pamięci da−
nych, lub jest argumentem bezpośred−
nim rozkazu. Wynik działania umieszcza−
ny jest w akumulatorze. Dodatkowo
w słowie PSW ustawiane są odpowied−
nio znaczniki: przeniesienia C i nadmiaru
OV, co jest sygnałem przekroczenia za−
kresu liczb 8–bitowych odpowiednio bez
lub ze znakiem.
Pozostałe operacje arytmetyczne to:
– mnożenie dwóch 8–bitowych liczb bez
znaku, gdzie jeden składnik wpisywa−
ny jest do akumulatora drugi do rejest−
ru B, 16–bitowy wynik umieszczany
jest w rejestrach B.A odpowiednio
starszy bajt w B , młodszy w A;
– dzielenie dwóch liczb 8–bitowych,
gdzie dzielna umieszczana jest w aku−
mulatorze A, a dzielnik w B, 8–bitowy
wynik dzielenia znajduje się po tej ope−
racji w A, natomiast B przechowuje
resztę z dzielenia.
– inkrementacja (zwiększanie o 1) lub
dekrementacja (zmniejszenie o 1) aku−
mulatora lub dowolnej komórki w we−
wnętrznej pamięci danych
– korekcja dziesiętna wyniku zapisanego
w akumulatorze
b)) operacjje llogiiczne
– logiczna suma (OR)
– iloczyn logiczny (AND)
– różnica symetryczna (EXOR)
– negacja (NOT) zawartości akumulatora A
– przesuwanie cykliczne akumulatora
w lewo lub prawo, z lub bez przenie−
sienia (znacznika C –> PSW.7).
Ze wszystkimi operacjami tak logicz−
nymi jak i arytmetycznymi zapoznasz się
drogi Czytelniku podczas omawiania po−
szczególnych instrukcji, na razie ważne
jest abyś zapamiętał omówione tu pod−
stawowe zagadnienia związane z ALU
procesora 8051 i pochodnych.
Nie załamuj się, jeśli coś nie jest dla
Ciebie do końca jasne. Spróbuj rozjaśnić
obraz materiałem z poprzednich odcin−
ków. Jeśli to nie pomoże, zrozumiesz te
szczególy przy omawianiu praktycznych
przykładów.
Jednostka arytmetyczno−
−logiczna
Pod tym pojęciem kryje się jeden
z elementów architektury 8051 odpowie−
dzialny za wykonywanie operacji arytme−
tyczno – logicznych. Blok ten nazywany
w skrócie jako ALU, potrafi wykonywać
operacje na liczbach (składnikach) 8–bito−
wych. Z matematyki wiemy że do wyko−
nania najprostszego działania dwuskład−
nikowego potrzebne są: po pierwsze
składniki, po drugie w wyniku działania
powstaje wynik, który też należy gdzieś
przechować (umieścić).
Do wprowadzenia (np. przez progra−
mistę) składników działania służą zaró−
wno niektóre rejestry specjalne z grupy
SFR jak i dowolna komórka wewnętrznej
pamięci danych. Dla różnych działań wy−
stępują jednak pewne ograniczenia
w swobodzie umiejscawiania składni−
ków, lecz to temat na oddzielny artykuł.
Jednym z najważniejszych rejestrów
z grupy SFR jest akumulator oznaczany
dużą literą A (ang. „accumulator”).
W tabeli 1 z poprzedniej części widać
że akumulator umieszczony jest pod adre−
sem E0h (224 dziesiętnie). Rejestr ten słu−
ży jednostce ALU za miejsce pobrania ar−
gumentu oraz umieszczenia wyniku więk−
szości operacji arytmetyczno logicznych.
Rejestr ten może być adresowany bito−
wo (podobnie jak bajty spod adresów
20h...2Fh – patrz poprzedni odcinek), dzię−
ki czemu możliwe jest testowanie dowol−
nych jego bitów bez potrzeby wykonywa−
nia dodatkowych operacji logicznych. Mu−
szę w tym miejscu zasygnalizować że do−
datkowo rejestr A poza funkcjami związa−
nymi z jednostką ALU służy do pobierania
i umieszczania bajtów w zewnętrznej pa−
mięci danych, dokładnie o tym powiemy
w kolejnych odcinkach kursu.
Przy przesyłaniu tego rejestru na stos
(umieszczenie lub pobranie ze stosu) wyko−
rzystuje się adresowanie bezpośrednie tego
rejestru. Wtedy opisujemy go symbolem
ACC (lub Acc). Dokładnie takie przypadki
poznasz przy okazji programowania 8051.
Drugim po akumulatorze ważnym re−
jestrem współpracującym z ALU jest, tak−
że 8–bitowy, rejestr B. Służy on do
umieszczenia jednego ze składników
mnożenia lub dzielenia, a po wykonaniu
jednej z tych operacji w rejestrze tym
umieszczany jest
– w przypadku mnożenia starszy bajt 16−
–bitowego wyniku mnożenia dwóch
liczb 8–bitowych
Rys. 5. Zawartość rejestru stanu
PSW..0 (bit 0) – oznaczany jako P, to
znacznik parzystości, ustawiany automa−
tycznie w każdym cyklu maszynowym
wskazuje na to czy liczba jedynek (na po−
szczególnych) pozycjach bitowych w aku−
mulatorze A jest parzysta (P=1) lczy nie−
parzysta (P=0).
PSW..2 (bit2) – oznaczany jako OV, to
znacznik przepełnienia (nadmiaru), usta−
wiany w wyniku wykonania dodawania
lub odejmowania, a przy operacji dziele−
nia ustawienie go wskazuje na dzielenie
przez zero.
PSW..6 (bit 6) – oznaczany jako AC, to
znacznik przeniesienia pomocniczego, do
którego wpisywane jest przeniesienie lub
pożyczka z bitu 3, wykorzystywany jest
przy korekcji dziesiętnej liczb.
PSW..7 (bit 7) – znacznik przeniesienia
oznaczany jako C, do którego następuje
przeniesienie z najbardziej znaczącego bi−
tu w wyniku wykonania operacji logicz−
nych przesunięć liczb 8–bitowych lub
w wypadku przekroczenia wyniku poza
zakres liczb zapisanych w naturalnym ko−
dzie dwójkowym (>255).
Pozostałe znaczniki nie mają związku
z ALU, toteż ich omówieniem zajmiemy
się przy innej okazji.
W praktyce najczęściej nie jest koniecz−
ne pamiętanie o wszystkich wymienio−
nych znacznikach, no może poza znaczni−
kiem C (PSW.7). Jak się okaże podczas na−
uki programowania, znaczniki te działają
jak gdyby automatycznie, to znaczy istnie−
ją instrukcje programowania 8051, które
uwzględniają wspomniane znaczniki, toteż
nie jest koniecznym badanie samego bitu
słowa PSW, a jedynie wykonanie odpo−
wiedniej instrukcji która uwzględni odpo−
wiedni stan danego znacznika.
Słławomiir Surowiińskii
c.d. w EdW 8/97
Uwaga! W części 2 (EdW 6/97, s. 41) zamiast:
„Pamięć mikroprocesowa” powinno być „Pamięć
mikroprocesora”.
46
E LEKTRONIKA DLA WSZYSTKICH 7/97
152728890.019.png 152728890.020.png 152728890.021.png
Zgłoś jeśli naruszono regulamin