Systemy mikroprocesorowe
1
1.Opis ogólny ćwiczeń w laboratorium mikroprocesorowym.
1.1. Przygotowanie do ćwiczeń w laboratorium mikroprocesorowym.
Na początku semestru grupa studentów odrabiająca laboratorium w jednym terminie zostaje podzielona na 12 grup
ćwiczebnych składających się z jednej lub dwóch osób.
Każda grupa ćwiczebna powinna się zaopatrzyć w jedną dyskietkę 1.44 Mb na programy źródłowe.
Dyskietka nie powinna być podzielona na podkatalogi.
Przedmiotem ćwiczeń będą na ogół programy współpracujące ze sprzętem na stanowisku roboczym napisane w języku
asembler.
Stanowiska robocze wyposażone są w procesory 8080 i 8086 firmy INTEL oraz w mikrokontrolery AVR firmy ATMEL.
Ilość i kolejność wykonywanych ćwiczeń będą wynikały z przyjętego harmonogramu.
Tematy ćwiczeń będą przydzielane z tygodniowym wyprzedzeniem na osobnych karteczkach dla każdej grupy
ćwiczebnej. Karteczkę z tematem należy mieć przy sobie podczas zaliczania ćwiczenia. Potem można ją wyrzucić.
Ćwiczenia powinny być zaliczane w terminie zgodnie z harmonogramem. Zaliczenie w terminie późniejszym jest
możliwe, ale ocena będzie obniżona o jeden.
Program powinien być przygotowany przed ćwiczeniami i przyniesiony na dyskietce.
Nazwa programu powinna się składać z 1-8 znaków i mieć rozszerzenie ASM.
Każdy program powinien mieć możliwość przerwania jego działania i powrotu do poziomu debuggera.
Oprócz źródła programu należy przynieść wydrukowany na papierze listing programu.
Listing ten jest przydatny do uruchamiania programu, stanowi platformę do dyskusji podczas zaliczania, na koniec jest
traktowany jako sprawozdanie z ćwiczenia i powinien być oddany prowadzącemu.
Niektóre tematy ćwiczeń nie przewidują konieczności pisania programu, tylko wymagają obsługi urządzenia przy pomocy
instrukcji wejścia – wyjścia debuggera. Przygotowanie do ćwiczenia polega wtedy na wypisaniu ciągu instrukcji
potrzebnych do zaprogramowania urządzenia.
Ocena za ćwiczenie zależy od:
• przygotowania do ćwiczenia (posiadanie dyskietki z programem, listingu i tematu ćwiczenia),
• działania programu zgodnego z otrzymanym tematem, możliwości powrotu z programu do debuggera,
• odpowiedzi na pytania prowadzącego na temat zaliczanego ćwiczenia,
• terminowego zaliczenia ćwiczenia.
Warunki zaliczenia przedmiotu będą podane przez prowadzącego na zajęciach wprowadzających.
1.1.1. Postać źródłowa programów dla procesora 8086.
Programy źródłowe dla procesorów 8086 powinny być pisane zgodnie z wymaganiami kompilatora MASM.
Dodatkowe wymagania wynikające ze specyfiki środowiska układu laboratoryjnego to:
• Program powinien składać się tylko z jednego segmentu. Segment ten powinien zawierać jednocześnie kod
programu i deklaracje zmiennych.
• Nie należy deklarować segmentu stosu. Możliwe są odwołania do stosu typu CALL RET PUSH POP. Należy
ignorować ostrzeżenia programu linkującego o braku segmentu stosu.
• Nie wolno odwoływać się do adresów segmentów – nie używać dyrektywy SEG.
• Program powinien się zaczynać od deklaracji
ORG
0
Użycie innego adresu początkowego wydłuża czas ładowania programu do stanowiska roboczego.
Program powinien być tak ułożony, żeby jego start był przewidziany od początku segmentu. NIE WOLNO podawać w
dyrektywie END etykiety startowej.
Deklaracje zmiennych powinny być umieszczane w segmencie wcześniej, niż odwołania do nich. Praktycznie
jako pierwszą instrukcję należy umieścić skok do etykiety startowej, a następnie deklaracje zmiennych. Potem mogą być
w dowolnej kolejności definicje procedur i główna część programu.
W programie można używać przerwań BIOSu. Nie są dostępne przerwania sytemu DOS ( INT 21H).
Do zakończenia programu i powrotu do debuggera należy używać przerwania INT3.
Systemy mikroprocesorowe
2
1.1.2. Przykład źródła programu dla procesora 8086
;
Nazwiska i imiona autorów programu
;
Tytuł programu
;
;
PORTA
EQU
164H
;Definicje
stałych w programie
PORTB
EQU
165H
;
PROGR
SEGMENT
;Początek definicji segmentu programu
ASSUME CS: PROGR, DS: PROGR
;Wskazanie dla kompilatora, na jakie segmenty
; wskazują rejestry segmentowe CS. i DS
ORG
0 ;
Program
należy lokować od początku segmentu
JMP
POCZATEK
;Skok
do
miejsca
startu
programu
LICZNIK1
DW
0 ;Definicje
zmiennych
w
programie
ZMIENNA1 DB 0
TEKST1
DB
‘ABCDEFGH’
POCZATEK:
PUSH
CS
;W
ten
sposób
można wpisać do rejestru DS
POP
DS
;adres
segmentowy
programu
CALL INIT
;Wywołanie procedury
PTL00:
...
;Dowolna
treść programu
...
CALL
CZYWYJ ;Sprawdzenie
warunku
wyjścia z programu
JZ
KONIEC
JMP
PTL00
;Kontynuowanie
wykonania
programu
KONIEC: CALL
ZAKON
;Procedura
przygotowująca zakończenie programu
INT 3
;Wyjście z programu do debuggera
INIT
PROC
;Definicja
procedury
...
;Treść procedury
...
...
RET
;Powrót
z
procedury
INIT
ENDP
;Zakończenie definicji procedury
CZYWYJ
PROC
;Definicja
procedury
...
;Treść procedury
...
...
RET
;Powrót
z
procedury
CZYWYJ
ENDP
;Zakończenie definicji procedury
ZAKON
PROC
;Definicja
procedury
...
;Treść procedury
...
...
RET
;Powrót
z
procedury
ZAKON
ENDP
;Zakończenie definicji procedury
PROGR
ENDS
;Koniec
definicji
segmentu
programu
END
;Koniec źródła programu
Systemy mikroprocesorowe
3
1.1.3. Czynności podczas kompilacji, przesłania i uruchamiania programu.
Stanowiska do ćwiczeń bazujących na procesorze 8086 (ćw. 3 4 7 8 9/14 11 12) składają się z dwóch komputerów.
Pierwszy z nich to komputer narzędziowy, na którym piszemy, poprawiamy i kompilujemy swoje programy. Komputer ten
pracuje pod systemem operacyjnym DOS. Zainstalowane są na nim programy narzędziowe. Drugi komputer jest
komputerem roboczym bez systemu operacyjnego i stacji dysków.
Do komputera roboczego dołączone są układy zewnętrzne, będące przedmiotem ćwiczeń. Stałe oprogramowanie
komputera roboczego znajduje się w pamięci EEPROM i składa się z Debuggera i procedur BIOSu.
Komputery połączone są kablem do transmisji szeregowej.
Rozpoczynając pracę należy włączyć oba komputery.
UWAGA: Niektóre komputery robocze nie chcą się włączyć gdy są połączone kablem z komputerem narzędziowym.
Należy je rozłączyć, włączyć ponownie komputer roboczy i potem dopiero połączyć je kablem.
Dyskietkę z programem wkładamy do napędu. Można skopiować swój program do katalogu C:\ROBOCZY w celu
przyspieszenia operacji z tekstem źródłowym (kompilacja, edycja).
NIE WOLNO kopiować swoich programów do innych katalogów na twardym dysku.
Kompilację programu wywołujemy przez wskazanie kursorem nazwy pliku źródłowego i naciśnięcie klawisza ENTER.
Należy sprawdzić czy kompilator nie wykazuje błędów. Jeżeli program kompiluje się bezbłędnie może być przesłany do
komputera roboczego. Należy w tym celu wywołać w komputerze roboczym polecenie ładowania programu – L 0
<ENTER> i ponownie wywołać kompilację w komputerze narzędziowym.
Należy zwrócić uwagę na komunikat o poprawności transmisji na ekranie komputera roboczego.
Po poprawnej transmisji kodu programu możemy przystąpić do jego uruchamiania.
Możliwe są dwa tryby uruchomienia swojego programu:
-
Pełny – przez użycie polecenia G 0 <ENTER>. Program zacznie się wykonywać z pełną szybkością od wskazanego
adresu. Można obserwować efekty jego działania. Zakończenie działania programu i powrót do debuggera zależy od
tego, jak zostało zaprogramowane. Awaryjnie można restartować komputer przez naciśnięcie na klawiaturze CTRL
ALT DEL. Podczas takiego restartu nie jest kasowana pamięć komputera roboczego. W poleceniu G można podać
opcjonalnie po przecinku adres zatrzymania programu.
-
Krokowy – przez użycie polecenia T 0 <ENTER>. Na ekranie zostanie wyświetlona mnemonika rozkazu
umieszczonego pod wskazanym adresem (0). Każde następne naciśnięcie klawisza <ENTER> spowoduje wykonanie
wyświetlonego rozkazu i wyświetlenie kolejnego. Jeżeli ma być wykonany rozkaz CALL, to naciskając klawisz <F>
spowodujemy wykonanie całej procedury. Podobnie stojąc na rozkazie skoku do pętli możemy wykonać szybko
wszystkie pętle i zatrzymać się na rozkazie za pętlą. Używając polecenia <F> na rozkazie skoku należy się liczyć z
tym, że program może nigdy nie dojść do rozkazu następnego za skokiem i wtedy nigdy się nie zatrzyma. Pracę
krokową możemy przerwać naciskając klawisz <KROPKA>. Dostępne będą wtedy polecenia debuggera. Można
wtedy przeglądać pamięć, załadować nową wersję programu, albo uruchomić dalej program w trybie krokowym lub
pełnym podając za poleceniem T lub G adres rozkazu od którego wznawiamy wykonywanie się programu.
Wszystkie polecenia debuggera dla komputerów roboczych 8086 zostały opisane w osobnym rozdziale.
1.1.4. Postać źródłowa programów dla procesora 8080.
Programy powinny być pisane przy użyciu edytora bazującego na czystym kodzie ASCII. Nie nadaje się do tego edytor
typu WORD wstawiający różne znaki formatujące będące źródłem błędów wykrywanych przez kompilator. Plik źródłowy
składa się z linii, z których każda może być jednego z typów:
- Linia komentarza - zaczynająca się znakiem średnika.
- Dyrektywa dla kompilatora z etykietą.
- Dyrektywa dla kompilatora bez etykiety.
- Mnemonika rozkazu mikroprocesora 8080 z etykietą.
- Mnemonika rozkazu mikroprocesora 8080 bez etykiety
- Sama etykieta.
Każda z linii może kończyć się komentarzem. Etykieta oznaczająca linię musi być napisana od początku linii i zaczynać
się od litery lub od znaku podkreślenia (kod 5F). Etykiety zaczynające się od dwóch znaków podkreślenia traktowane są
przez kompilator jako lokalne. Oznaczanie procedur dyrektywami PROC ENDP pozwala na używanie wewnątrz nich
etykiet lokalnych. Nazwy etykiet lokalnych mogą się powtarzać w różnych procedurach.
Nazwa etykiety może składać się z liter, cyfr i znaków podkreślenia __. Nazwa może mieć długość 1 do 7 znaków.
Ogranicznikiem jest znak : lub spacja. Nazwa nie może być zgodna z mnemoniką rozkazu, nazwą rejestru ani z nazwą
dyrektywy. Linie bez etykiety muszą się zaczynać przynajmniej jedną spacją. Najlepiej zamiast spacji używać znaku
tabulacji. Kompilator nie odróżnia dużych i małych liter.
1.1.5. Przykład programu dla procesora 8080.
Systemy mikroprocesorowe
4
;
Nazwiska i imiona autorów programu
;
Tytuł programu
;
;
PORTA
EQU
64H
;Definicje stałych w programie
PORTB
EQU
65H
;
ORG
8000H
;Program
należy lokować od początku pam. RAM
;Pamięć RAM w komputerach roboczych jest
;zainstalowana
od
adresu
8000H.
;Pamięć RAM ma pojemność 8 kb (8000H-9FFFH)
;W ćwiczeniu 1 pojemność 1 kb (8000H-83FFH)
POCZATEK: NOP
;;;;;
lxi
sp,
;NIE inicjujemy wskaźnika stosu, bo już jest
;zainicjowany
przez
debugger
CALL INIT
;Wywołanie procedury
PTL00:
...
;Dowolna
treść programu
...
CALL
CZYWYJ ;Sprawdzenie
warunku
wyjścia z programu
JZ
KONIEC
JMP
PTL00
;Kontynuowanie
wykonania
programu
KONIEC: CALL
ZAKON
;Procedura
przygotowująca zakończenie programu
RST 6
;Wyjście z programu do debuggera
INIT
PROC
;Definicja
procedury
...
;Treść procedury
...
...
RET
;Powrót
z
procedury
ENDP
;Zakończenie definicji procedury
CZYWYJ
PROC
;Definicja
procedury
...
;Treść procedury
__ETK00: ...
;Etykieta
lokalna
w
procedurze
...
RET
;Powrót
z
procedury
ENDP
;Zakończenie definicji procedury
ZAKON
PROC
;Definicja
procedury
...
;Treść procedury
__ETK00: ...
;Etykieta
lokalna
w
procedurze
...
...
RET
;Powrót
z
procedury
ENDP
;Zakończenie definicji procedury
LICZNIK1
DW
0 ;Definicje zmiennych w programie
ZMIENNA1 DB 0
TEKST1
DB
‘ABCDEFGH’
END
;Koniec źródła programu
1.1.6. Dyrektywy rozpoznawane przez kompilator
ORG
wyrażenie -
Określa adres umieszczania kodów następnych rozkazów
INCLUDE
nazwa.asm
- Linia z tą dyrektywą zastąpiona będzie treścią pliku o podanej nazwie.
Nz EQU wyrażenie
- Przypisuje etykiecie występującej przed dyrektywą wartość wyrażenia
występującego za dyrektywą. Tak ustalona wartość etykiety nie może zostać
zmieniona.
Nz SET wyrażenie -
Działa podobnie jak EQU, ale wartość etykiety można zmieniać w programie
dowolną ilość razy.
Systemy mikroprocesorowe
5
END
wyrażenie
- Dyrektywa ta powoduje zakończenie kompilacji bieżącego pliku. W pliku
głównym kończy kompilację, a wartość wyrażenia określa adres startu programu.
Dyrektywa ta nie jest wymagana, ale ostatnia linia musi być zakończona znakiem
CR LF.
LOCAL lub PROC
- Dyrektywa zaznacza początek obszaru działania etykiet lokalnych.
ENDLOCAL lub ENDP
- Dyrektywa zaznacza koniec obszaru działania etykiet oktalnych. Nazwy etykiet
lokalnych mogą się powtarzać w różnych obszarach. Postać PROC i ENDP może
oznaczać początek i koniec procedury, w której etykiety zaczynające się od
dwóch znaków podkreślenia są lokalne i mogą się powtarzać w różnych
procedurach.
IF wyrażenie
- Dyrektywa rozpoczyna obszar kompilacji warunkowej. Następne linie są
kompilowane jeżeli wartość wyrażenia jest większa od zera.
ELSE
- Dyrektywa zmienia obszar kompilacji warunkowej. Następne linie są
kompilowane jeżeli wartość wyrażenia w dyrektywie IF była równa zeru.
ENDIF
- Dyrektywa kończy obszar kompilacji warunkowej.
DB
bajt
- Rezerwuje i definiuje obszar danych bajtowych
DB
'tekst'
- lub tekstowych
DW
słowo
- Rezerwuje i definiuje obszar danych słowowych
DS wyrażenie
- Rezerwuje obszar danych o długości równej wartości wyrażenia.
1.1.7. Błędy sygnalizowane przez kompilator
Kompilator sygnalizuje obecność ewentualnych błędów formalnych podając ich liczbę w głównym oknie programu. Typ
błędu i miejsce jego wystąpienia sygnalizowane są literą na pierwszej pozycji w liniach pliku .LST. Linie bezbłędne mają
spację jako pierwszy znak. Kompilator sygnalizuje następujące typy błędów:
U - odwołanie do etykiety dla której brak definicji.
M - wielokrotna definicja tej samej nazwy z wyjątkiem dyrektywy SET.
Q - błąd składni
R - niewłaściwy rejestr użyty w rozkazie
I - nielegalny znak w linii
V - błąd wartości argumentu
S - przekroczony poziom zagłębień IF .LOCAL
N - błąd kolejności dyrektyw typu IF .LOCAL ENDIF
P - błąd fazy - niezgodność wartości etykiety w pierwszym i drugim przebiegu.
1.1.8. Czynności prowadzące do uruchomienia programu przygotowanego na
dyskietce
Stanowiska do ćwiczeń 1, 2, 5 i 13 składają się z komputerów narzędziowych, do których zostały wmontowane komputery
robocze oparte o mikroprocesory 8080. Komputery robocze są trwale związane z komputerem narzędziowym i
komunikują się z nim poprzez porty.
Dodatkowo w ćwiczeniu 1 komputer roboczy połączony jest z analizatorem stanów współpracującym z drugim
komputerem narzędziowym.
Po włączeniu komputera roboczego zostaje automatycznie (AUTOEXEC.BAT) wywołany program KOMPLET.EXE
(edytor). Program ten pozwala wybrać plik do edycji i edytować go. Może też zawołać inny program – SM_8080.EXE,
który pełni funkcję kompilatora i debuggera. Podczas wykonywania ćwiczeń nie jest przewidziane korzystanie z innych
zasobów i programów komputera narzędziowego. Program SM_8080.EXE komunikuje się z komputerem roboczym
współpracując z mikrosystemem umieszczonym w jego pamięci EEPROM. Podczas kompilacji kody wynikowe programu
są umieszczane bezpośrednio w pamięci RAM komputera roboczego. Podczas uruchamiania programu połączenie
debuggera z mikrosystemem pozwala na kontrolowane wykonywanie programu w komputerze roboczym. Należy zwrócić
uwagę na to, że program wykonywany w komputerze roboczym nie ma możliwości pobrania znaku z klawiatury
komputera narzędziowego, ani nie może nic napisać na jego ekranie.
Systemy mikroprocesorowe
6
Poniżej przedstawione są czynności prowadzące do uruchomienia programu dla procesora 8080:
1. Napisać plik źródłowy programu przy pomocy edytora i umieścić go na dyskietce w głównym katalogu.
2. Włożyć dyskietkę do napędu w komputerze narzędziowym ćwiczenia 1, 2, 5 i 13. Dyskietka nie może być
zabezpieczona przed zapisem.
3. Włączyć komputer narzędziowy. Po załadowaniu się systemu na ekranie wyświetli się katalog dyskietki (tylko pliki
*.ASM i tylko w głównym katalogu dyskietki).
4. Wskazać kursorem wybrany plik i nacisnąć <ENTER>. Można też napisać nową nazwę składającą się z 1 do 8
znaków. Nie podajemy rozszerzenia. Wybrany plik pojawi się na ekranie edytora.
5. Można przeglądać i edytować wybrany plik.
6. Nacisnąć <ESC>. Wybrać polecenie SYMULATOR. W tym momencie dokonane zmiany zostaną zapamiętane na
dyskietce. Zamiast edytora uruchomiony zostaje program SM_8080.EXE.
7. Wywołać polecenie Kompilacja. Zwrócić uwagę czy nie było błędów. Jeżeli były, to przejść do punktu 9.
8. Jeżeli nie było błędów kompilacji, to wywołać polecenie Uruchom. Pojawi się ekran debuggera i można wykonywać
jego polecenia sprawdzając poprawność działania programu. Jeżeli program nie działa poprawnie, to naciskamy
klawisz <ESC> i wracamy do poleceń symulatora..
9. Wybieramy polecenie Wyjście i wracamy do Edytora. Po wykonanej kompilacji na dyskietce znajduje się plik z
rozszerzeniem .LST zawierający listing programu wraz ze wskazaniem na błędy wykryte podczas kompilacji.
10. Można nacisnąć <ESC> i wybrać polecenie LST. Można teraz przeglądać plik z listingiem i zobaczyć jakie błędy
zawiera plik źródłowy. Plik z listingiem jest tylko do odczytu. Nie ma sensu go poprawiać.
11. Należy nacisnąć <ESC> i wybrać polecenie ASM. Wrócimy do edycji pliku źródłowego i po poprawieniu błędów
ponownie wykonujemy czynności od punktu 6.
1.1.9. Czynności prowadzące do pracy z debuggerem bez pliku źródłowego.
1. Włożyć dyskietkę do napędu w komputerze narzędziowym ćwiczenia 1, 2, 5 i 13. Dyskietka nie może być
zabezpieczona przed zapisem. Dyskietka może być pusta.
2. Włączyć komputer narzędziowy. Po załadowaniu się systemu na ekranie wyświetli się katalog dyskietki (tylko pliki
*.ASM i tylko w głównym katalogu dyskietki). Katalog może być pusty
3. Napisać nową nazwę składającą się z 1 do 8 znaków. Nie podajemy rozszerzenia. Zgłosi się edytor. Nie piszemy nic
pod edytorem.
4. Nacisnąć <ESC>. Wybrać polecenie SYMULATOR. Zamiast edytora uruchomiony zostaje program SM_8080.EXE.
5. Wywołać polecenie Uruchom. Pojawi się ekran debuggera i można wykonywać jego polecenia. Istnieje możliwość
wykonywania dowolnych rozkazów mikroprocesora, a w szczególności rozkazów IN oraz OUT. Naciskamy spację,
a następnie piszemy mnemonikę rozkazu i po spacji jego argumenty. Po naciśnięciu klawisza <ENTER> rozkaz
zostaje wykonany, a jego efekt widać na ekranie (zmienione rejestry lub pamięć), lub na zewnątrz (np. zapalone
diody na płycie czołowej komputera roboczego).
1.1.10 Czynności prowadzące do zarejestrowania przebiegów rozkazów przy
pomocy analizatora stanów.
1. Ułożyć zadane rozkazy w prosty program napisany źródłowo przy pomocy edytora. Przed pierwszym rozkazem
do rejestracji umieścić rozkaz OUT 20H. Sekwencję rejestrowanych rozkazów zakończyć rozkazem RST 6.
2. Wykonać kompilację programu. Sprawdzić czy nie ma błędów kompilacji.
3. Uruchomić program analizatora stanów na drugim komputerze. Sprawdzić czy jest załadowany plik konfiguracyjny
YEL2.
4. Przełączniki na płytce procesora 8080 powinny być ustawione tak, aby diody sygnalizujące ich położenie były
zgaszone.
5. Program analizatora powinien być w stanie oczekiwania na rejestrację (napis NOT TRIGGERED). Jeżeli nie jest,
to nacisnąć literę G.
6. Wywołać opcję URUCHOM debuggera i wykonać skompilowany program naciskając klawisz F9. Na ekranie
analizatora stanów powinny pojawić się przebiegi zarejestrowanych rozkazów z wykonanego programu. Kursor
niebieski pokazuje końcówkę rozkazu OUT 20H, który wywołał rejestrację. Najbliższy impuls STSTB wskazuje
na status pierwszego cyklu maszynowego następnego rozkazu.
Systemy mikroprocesorowe
7
2. Opis programowalnych układów scalonych.
2.1. Układ 8250 – UART do transmisji szeregowej asynchronicznej
Układ 8250 jest sterownikiem transmisji szeregowej typu UART tzn., że może realizować
transmisję szeregową tylko w trybie asynchronicznym.
Bufor szyny
danych
D7..D0
Blok sterowa-
nia zapisem i
odczytem
oraz dekoder
adresów
MR
XTAL1, XTAL2
A0, A1, A2
DOSTR, DOSTR
DISTR, DISTR
CS0, CS1, CS2, ADS
Układ
przerwań
Blok
nadajnika
R S
Układ
sterujący
nadajnikiem
Blok
odbiornika
R S
Blok
sterowania
modemem
INTRPT
SOUT
Baudout
RCLK
SIN
RTS, DTR
OUT1, OUT2
CTS, DSR
RLSD, RI
Rysunek 9-B Schemat blokowy sterownika 8250
2.1.1. Opis sygnałów sterownika
Sygnały współpracy z CPU
D7-D0
- linie szyny danych (trójstanowe)
MR
- wejście sygnału zerowania sprzętowego
RCLK
- wejście sygnału zegara dla części odbiorczej układu
BAUDOUT
- wyjście sygnału zegara dla części nadawczej układu
A0, A1, A2
- wejście sygnału wyboru rejestrów
ADS
- wejście sygnału strobu adresów
DISTR (DISTR) -
wejście sygnału strobu czytania
DOSTR (DOSTR) - wejście sygnału strobu pisania
CS0, CS1, CS2
- wejście sygnałów selekcji układu
CSOUT -
wyjście sygnału potwierdzenia wyboru układu
DDIS -
wyjście sygnału informującego o odczycie danych z układu
XTAL1, XTAL2
- wejście / wyjście rezonatora kwarcowego
OUT1, OUT2
- wyjścia definiowane przez użytkownika
Sygnały modemowe
DTR
- sygnał wyjściowy (sterowany bitem DTR w słowie sterowania modemem),
DSR
-
sygnał wejściowy (do odczytu w słowie stanu modemu),
RTS
-
sygnał wyjściowy (sterowany bitem RTS w słowie sterowania modemem),
CTS
-
sygnał wejściowy (do odczytu w słowie stanu modemu).
Systemy mikroprocesorowe
8
Sygnały transmisyjne
SOUT
- sygnał wyjściowy linii nadajnika
SIN
- sygnał wejściowy linii odbiornika
Inne sygnały sterujące
INTRPT
- wyjście sygnału przerwania
RI - wejście sygnału dzwonienia z modemu
RLSD
- wejście sygnału wykrycia nośnej
2.1.2. Rejestry wewnętrzne układu 8250
Adres DLAB
Rejestr
BAZOWY+0
0
Zapis bufora nadajnika, odczyt bufora odbiornika
BAZOWY+0 1
Mniej
znaczący bajt dzielnika
BAZOWY+1
0
Rejestr aktywacji przerwań
BAZOWY+1 1
Bardziej
znaczący bajt dzielnika
BAZOWY+2 X
Rejestr
identyfikacji przerwań (tylko odczyt)
BAZOWY+3
X
Rejestr parametrów transmisji
BAZOWY+4
X
Rejestr sterowania modemu
BAZOWY+5
X
Rejestr stanu transmisji
BAZOWY+6
X
Rejestr stanu modemu
BAZOWY+7
X
Adres nie wykorzystywany
2.1.3. Formaty słów rejestrów
2.1.3.1. Format słowa rejestru parametrów transmisji
DLAB
D7
SB
D6
SP
D5
EPS
D4
PEN
D3
STB
D2
WLS1
D1
WLS0
D0
BAZOWY+3
ADRES
X
DLAB
0
0
0
1
1
0
1
1
- 5 bitów danych
- 6 bitów danych
- 7 bitów danych
- 8 bitów danych
0
- 1 bit stopu
1
- 1.5 bitu stopu dla słowa 5-bitowego
1
- 2 bit stopu dla słowa dłuższego
0
- bez bitu kontroli
1
- z bitem kontroli
0
- gdy PEN=1, nadajnik i odbiornik interpretują bit
parzystości identycznie zgodnie z EPS
1
- gdy PEN=1, nadajnik określa parzystość zgodnie
ze stanem EPS, zaś odbiornik przeciwnie
0
- sprawdzanie nieparzystości gdy PEN =1
1
- sprawdzanie parzystości gdy PEN=1
1
- nadajnik wysyła sygnał przerwania transmisji
1
- wybór rejestrów dzielnika częstotliwości
Systemy mikroprocesorowe
9
2.1.3.2. Format słowa rejestru sterowania modemu
0
D7
0
D6
0
D5
LOOP
D4
OUT2
D3
OUT1
D2
RTS
D1
DTR
D0
BAZOWY+4
ADRES
X
DLAB
Poszczególne bity określają stan zewnętrznych sygnałów OUT2, OUT1, RTS, DTR. Zapis stanu "1" do rejestru
ustawia wyjście układu w stan "0". Sygnały te przeznaczone są do współpracy z modemem. Sygnał LOOP
przeznaczony jest do testowania układu 8250
("0" - normalna praca, "1" - autotest).
2.1.3.3. Format słowa rejestru aktywacji przerwań
0
D7
0
D6
0
D5
0
D4
EMI
D3
EEI
D2
ETI
D1
ERI
D0
BAZOWY+1
ADRES
0
DLAB
ERI - zezwolenie przerwania gotowości znaku w odbiorniku (dana skompletowana w buforze odbiornika)
ETI - zezwolenie przerwania gotowości nadajnika (bufor nadajnika pusty)
EI
- zezwolenie zgłoszenia przerwań przez błędy wykryte w odbiorniku (błędy transmisji)
EMI - zezwolenie zgłoszenia przerwań zmiany sygnałów podawanych z modemu
Uwaga: wpisanie "0" blokuje związane z nim przerwanie.
2.1.3.4. Format słowa stanu transmisji
0
D7
TSRE
D6
THRE
D5
BI
D4
FE
D3
PE
D2
OR
D1
DR
D0
BAZOWY+5
ADRES
X
DLAB
znaczenia bitów podane są dla "1":
DR
- bufor odbiornika zawiera daną do odczytu
OR
- utrata nie odczytanego znaku z buforu odbiornika
PE -
błąd parzystości
FE -
błąd ramki (niski poziom na linii SDI w czasie spodziewanych bitów stopu)
BI
- odbiór znaku przerwania transmisji
THRE
- nadajnik gotowy do zapisu kolejnego znaku (pusty bufor nadajnika)
TSRE
- nadajnik (rejestr szeregowy) jest pusty (skończył wysyłać ostatni znak)
2.1.3.5. Format słowa rejestru stanu modemu
RLSD
D7
RI
D6
DSR
D5
CTS
D4
DSLSD
D3
TERI
D2
DDSR
D1
DCTS
D0
BAZOWY+6
ADRES
X
DLAB
Rejestr stanu modemu związany jest z czterema wyjściami układu 8250: RLSD, RI, DSR i CTS. Sygnały
podawane na te wejścia analizowane są wyłącznie przez oprogramowanie i nie mają bezpośredniego wpływu
na pracę odbiornika i nadajnika. W związku z tym rzeczywiste wykorzystanie tych wejść może być różne
w różnych zastosowaniach.
Systemy mikroprocesorowe
10
Bity DSLSD, TERI, DDSR i DCTS
uzyskają stan "1" wtedy, gdy nastąpiła zmiana poziomu logicznego
na odpowiednim wejściu, od czasu ostatniego odczytu rejestru stanu modemu. Bity RLSD, RI, DSR i CTS
przyjmują stan "1", gdy na odpowiednim wejściu jest poziom "0".
2.1.3.6. Format słowa rejestru identyfikacji przerwań
0
D7
0
D6
0
D5
0
D4
0
D3
ID1
D2
ID0
D1
IP
D0
BAZOWY+2
ADRES
X
DLAB
0
- aktywne przerwanie istnieje
1
- nie ma przerwania do obsługi
0
0
- przerwanie z linii kontrolnych modemu
0
1
- pusty bufor nadajnika
1
0
- blok odbiornika (odebrano daną )
1
1
- blok odbiornika (błąd odczytu lub znak
przerwania transmisji )
Jeżeli program obsługi układu 8250 korzysta z przerwań, to po odebraniu przerwania z tego układu należy
odczytać zawartość rejestru identyfikacji przerwań, w celu rozpoznania źródła przerwania.
Uwaga:
1. Sterownik UART 8250 znajduje się na karcie Multi I/O, włożonej w slot płyty IBM XT/AT. Adres
bazowy 2F8H.
2. Częstotliwość sygnału zegarowego układu 8250 wynosi F = 1.8432 [MHz]. Układ 8250 dodatkowo
dzieli częstotliwość zegara przez 16.
3. W ćwiczeniu wykorzystuje się sterownik kanału transmisji szeregowej oznaczony jako COM 2.
Systemy mikroprocesorowe
11
2.2. Układ 8251 - USART do transmisji szeregowej synchronicznej
i asynchronicznej
Układ 8251A jest sterownikiem transmisji szeregowej typu USART tzn., że może realizować transmisję szeregową
w trybie synchronicznym lub asynchronicznym.
2.2.1. Schemat blokowy i opis sygnałów sterownika
Bufor szyny
danych
D7..D0
Blok sterowa-
nia zapisem i
odczytem
RESET
CLK
RD
WR
CD
CS
Blok
sterowania
modemem
Rejestr
buforowy
nadajnika
R S
Układ
sterujący
nadajnikiem
Rejestr
buforowy
odbiornika
R S
Układ
sterujący
odbiornikiem
DSR
TxD
TxRDY
RxD
DTR
CTS
RTS
TxE
TxC
RxRDY
RxC
SYNDET
Rys. 7.1. Schemat blokowy sterownika 8251A.
Opis sygnałów wejść/wyjść
Sygnały współpracy z CPU
D7
÷D0 - linie szyny danych,
RESET - wejście sygnału zerowania sprzętowego,
CLK -
wejście sygnału zegara synchronizującego,
C/D -
wejście sygnału selekcji rozkazów:
"0" – pisanie / czytanie danej
adres bazowy
"1" - pisanie słowa sterującego lub czytanie statusu
adres bazowy + 1
RD -
wejście sygnału strobu czytania,
WR -
wejście sygnału strobu pisania,
CS -
wejście sygnału selekcji układu.
Sygnały modemowe
DTR -
sygnał wyjściowy (sterowany bitem DTR w słowie sterującym),
DSR -
sygnał wejściowy (do odczytu w słowie statusowym),
RTS -
sygnał wyjściowy (sterowany bitem RTS w słowie sterującym),
CTS -
sygnał wejściowy (stan niski zezwala na nadawanie).
Sygnały transmisyjne
TxD -
sygnał wyjściowy linii nadajnika
RxD -
sygnał wejściowy linii odbiornika
Systemy mikroprocesorowe
12
TxC -
sygnał wejściowy zegara transmisji nadajnika
RxC -
sygnał wejściowy zegara transmisji odbiornika
Inne sygnały sterujące
TxRDY - sygnał wyjściowy "1" oznaczający pusty bufor nadajnika
TxE -
sygnał wyjściowy "1" oznaczający pusty rejestr konwersji nadajnika
RxRDY - sygnał wyjściowy "1" oznaczający znak odebrany w buforze odbiornika
SY/BR - w transmisji asynchronicznej wyjście sygnalizujące przerwanie transmisji
(długi sygnał 0 na wejściu RxD)
- w transmisji synchronicznej wejście lub wyjście ustalane w słowie trybu (SYNDET)
jeżeli wejście to w nadajniku i odbiorniku podaje się impuls określający moment synchronizacji,
jeżeli wyjście, to sygnalizuje moment osiągnięcia synchronizacji przez odbiornik po wykryciu bajtów
synchronizacji.
2.2.2. Format sygnału dla transmisji szeregowej
P
D0
stop
S - bit startu
D1
D
n-1
bity stopu
S
P - bit parzystości
n - zaprogramowana ilość bitów danych 5-8
D0 D1
P
D
n-1
D0 D1
P
D
n-1
Transmisja asynchroniczna
Transmisja synchroniczna
2.2.3. Programowanie układu 8251A
Sekwencje rozkazów dla inicjalizacji układu zależą od trybu transmisji. Po sprzętowym sygnale RESET, lub po
rozkazie IR (zerowanie programowe) układ jest rozprogramowany i oczekuje na słowo trybu. Po podaniu słowa
trybu dalsze programowanie układu zależy od tego, jaki tryb został wybrany.
-
w trybie asynchronicznym układ oczekuje tylko na słowo rozkazowe
-
w trybie synchronicznym układ oczekuje na jeden lub dwa bajty synchronizacji (zależnie od słowa
trybu), a następnie na słowo rozkazowe.
Problem pojawia się wtedy, gdy nie wiadomo w jakim stanie jest układ. Można go rozwiązać przez wysłanie
na adres słowa rozkazowego ( bazowy + 1) sekwencji trzech bajtów 00H, a następnie bajtu 40H. Po tej sekwencji
układ jest rozprogramowany i oczekuje na słowo trybu. Bajt o wartości 00H jako słowo rozkazowe nie zmienia
stanu układu. Po trzech takich bajtach układ oczekuje na słowo rozkazowe, a bajt 40H jest rozkazem zerowania
programowego. Bajt 00H jako słowo trybu programuje transmisję synchroniczną z dwoma bajtami synchronizacji.
Następne dwa bajty 00H traktowane są jako bajty synchronizacji. Po nich bajt 40H jest znowu rozkazem zerowania
programowego.
Po kompletnym zaprogramowaniu układu wyjście nadajnika TxD jest ustawione w stanie wysokim. W trybie
asynchronicznym wpisanie danej do układu (adres bazowy) spowoduje wysłanie jej szeregowo i powrót wyjścia
TxD na stan wysoki (STOP). W trybie synchronicznym po nadaniu wpisanej danej układ nada kolejną daną, albo
gdy jej brak zacznie nadawać bajty synchronizacji do czasu otrzymania kolejnej danej. Jeżeli były zaprogramowane
dwa bajty synchronizacji , to nadawane są zawsze parami.
2.2.4. Synchronizacja nadajnika i odbiornika
Nadajnik i odbiornik układu 8251 mogą być synchronizowane na dwa sposoby.
Systemy mikroprocesorowe
13
Synchronizacja sprzętowa.
Wymaga zaprogramowania linii SYNDET jako wejście i dołączenia ich do wspólnego sygnału synchronizującego.
Synchronizacja bajtami synchronizującymi.
Linie SYNDET programujemy jako wyjście. W słowie rozkazowym odbiornika ustawiamy bit EH (poszukuj
bajtów synchronizacji). Odbiornik przegląda odbierane dane bit po bicie i porównuje je z zaprogramowanymi
bajtami synchronizacji. Gdy wykryje zgodność, to ustawia wyjście SYNDET w stan 1. Odbiór każdego następnego
bajtu jest sygnalizowany sygnałem RxRDY.
Zaprogramowane bajty synchronizacji mogą w zasadzie mieć dowolne wartości, ale należy zwracać uwagę na to,
żeby ich przesunięcie o jeden lub kilka bitów nie było z nimi tożsame.
2.2.5. Format słowa trybu
Słowo trybu dla transmisji asynchronicznej:
S2
D7
S1
D6
EP
D5
PEN
D4
L2
D3
L1
D2
B2
D1
B1
D0
0
0
- transmisja synchroniczna
0
1
- transmisja asynchroniczna, podział wewnętrzny przez 1
1
0
- transmisja asynchroniczna, podział wewnętrzny przez 16
1
1
- transmisja asynchroniczna, podział wewnętrzny przez 64
0
0
- 5 bitów danych
0
1
- 6 bitów danych
1
0
- 7 bitów danych
1
1
- 8 bitów danych
0
- bez bitu kontroli
1
- z bitem kontroli
0
- kontrola nieparzystości
1
- kontrola parzystości
0
0
- nie zdefiniowane
0
1
- 1 bit stopu
1
0
- 1.5 bitu stopu
1
1
- 2 bity stopu
BAZOWY+1
ADRES
Słowo trybu dla transmisji synchronicznej:
SCS
D7
ESD
D6
EP
D5
PEN
D4
L2
D3
L1
D2
0
D1
0
D0
0
0
- 5 bitów danych
0
1
- 6 bitów danych
1
0
- 7 bitów danych
1
1
- 8 bitów danych
0
- bez bitu kontroli
1
- z bitem kontroli
0
- kontrola nieparzystości
1
- kontrola parzystości
0
- SYNDET jest linią wejściową oznaczającą detekcję zewnętrznego sygnału synchronizacji
1
- SYNDET jest linią wyjściową oznaczającą detekcję wewnętrznego sygnału synchronizacji
0
- jedno słowo synchronizacji
1
- dwa słowa synchronizacji
BAZOWY+1
ADRES
Systemy mikroprocesorowe
14
2.2.6. Format słowa operacyjnego (rozkazowego)
EH
D7
IR
D6
RTS
D5
ER
D4
SBRK
D3
RxE
D2
DTR
D1
TxEN
D0
0
- zakaz nadawania
1
- zezwolenie na nadawanie
1
- ustaw linię DTR w stan niski
0
- zakaz odbioru
1
- zezwolenie na odbiór
0
- normalna praca
1
- transmisja znaku przerwy TxD=0
1
- zerowanie flag błędów (PE, OE, FE)
1
- ustaw linię RTS w stan niski
1
- zerowanie programowe
1
- rozpoczęcie poszukiwania znaków synchronizacji
(tylko dla transmisji synchronicznej)
BAZOWY+1
ADRES
2.2.7. Format słowa statusowego
DSR
D7
SYNC
D6
FE
D5
OE
D4
PE
D3
TxE
D2
RxRDY
D1
TxRDY
D0
1
- bufor nadajnika pusty
1
- znak w buforze odbiornika
1
- pusty rejestr konwersji
1
- błąd parzystości / nieparzystości
1
- błąd odczytu znaku (utrata znaku )
1
- błąd ramki (tylko dla transmisji asynchronicznej )
1
- dla transmisji synchronicznej wykrycie znaku(ów) synchronizacji
1
- dla transmisji asynchronicznej wykrycie przerw
1
- linia DSR w stanie niskim
BAZOWY+1
ADRES
Systemy mikroprocesorowe
15
2.3 Układ 8253 – liczniki
2.3.1 Przeznaczenie i ogólna charakterystyka.
Programowalny licznik 8253 przeznaczony jest do generacji sygnałów¸ będących funkcją czasu lub funkcją
zliczanych impulsów, m.in. do generacji periodycznych żądań przerwań (a więc może służyć jako tzw. "zegar czasu
rzeczywistego"), do generacji żądań przerwań po odliczeniu określonej liczby impulsów, do generacji ciągu
impulsów periodycznych o różnych częstotliwościach.
Programowalny układ 8253 składa się z trzech niezależnych liczników 16-to bitowych zliczających wstecz,
z których każdy może być zaprogramowany w jednym z·6-ciu trybów pracy. Każdy licznik ma wejście zegarowe
(CLK), wejście bramkujące (GATE) oraz wyjście (OUT). Na wejście CLK może być podany przebieg z generatora
wewnętrznego (zegar mikroprocesora - ew. .podzielony) lub z zewnętrznego licznika impulsów. Maksymalna
częstotliwość impulsów podawanych na wejście CLK nie może być większa od 2MHz.
2.3.2 Opis sygnałów wejściowych i wyjściowych.
Bufor szyny
danych
D7..D0
Logika
odczytu i
zapisu
A0
RD
WR
A1
CS
Rejestr
sterujący
Licznik 0
Licznik 1
Licznik 2
CLK 0
CLK 1
GATE 1
OUT 1
CLK 2
GATE 2
OUT 2
GATE 0
OUT 0
Wewnętrzna szyna danych
Rys. Schemat blokowy układu 8253
D7÷D0 (DATA)
- 3-stanowa dwukierunkowa magistrala danych,
A0, A1 (ADDRESS)
- adresy dla selekcji numeru licznika,
RD (READ)
-
wejście sygnału czytania,
WR (WRITE)
- wejście sygnału pisania,
CS (CHIP SELECT) -
wejście sygnału wyboru układu,
CLK 0, 1, 2
-
wejścia zliczanych impulsów,
GATE 0, 1, 2
- wejścia sygnałów sterujących zliczaniem,
OUT 0, 1, 2
-
wyjścia liczników.
Systemy mikroprocesorowe
16
8253
Magistrala adresów (16)
Magistrala sterowań
Magistrala danych (8)
A0
A1
I/OR
I/OW
CS
A0
A1
D7..D0
RD
WR
Licznik 0
Licznik 1
Licznik 2
CLK 0 GATE 0 OUT 0
CLK 1 GATE 1 OUT 1
CLK 2 GATE 2 OUT 2
Rys. Sposób dołączenia układu 8253 do magistrali systemu
2.3.3 Opis działania układu.
Podstawowe układy elementu 8253 to:
Bufor danych - dwukierunkowy bufor danych D0÷D7 służący do sprzęgania elementu 8253 z magistralą systemu
8086 w celu:
• wpisania słów sterujących,
• ładowania liczników,
• odczytywania stanu liczników.
Logika odczytu/zapisu - steruje wpisywaniem słów sterujących oraz ustawianiem i odczytywaniem stanów licznika.
Rejestr
sterujący
Rejestr
sterujący
BRW1
Rejestr
sterujący
BRW2
Układ
sterujący
Rejestr
sterujący
Rejestr
sterujący
Licznik
Szyna danych
Rys. 3.3 Schemat blokowy pojedynczego licznika
Systemy mikroprocesorowe
17
Schemat blokowy jednego zespołu licznika przedstawia Rys. 3.3. Z każdym licznikiem związany jest 8-mio bitowy
rejestr sterujący, do którego wpisywana jest informacja z szyny danych. Słowo sterujące steruje poprzez układ
sterowania działaniem układu. Licznik L może pracować jako:
•
16 bitowy licznik binarny lub
•
4 dekadowy licznik dziesiętny zliczający impulsy w kodzie BCD.
Zawartość początkową licznika wpisuje się w dwu rozkazach przesłania do buforowego rejestru wejściowego (B-
RWE). Następnie układ sterujący powoduje wpisanie danych do licznika. Stan zerowej zawartości licznika
przekazywany jest do układu sterującego, formującego odpowiedni sygnał na wyjściu OUT licznika.
Licznik reaguje na opadające zbocza impulsów wejściowych. Zawartość licznika można odczytać poprzez wysłanie
dwóch rozkazów odczytu. Aby odczytywana informacja nie była zniekształcona - układ wyposażony jest w 16-to
bitowy buforowy rejestr wyjściowy (BRW1 i BRW2 Rys. 3.3.), do którego stan licznika może być wpisany
za pomocą specjalnego rozkazu. Stan ten można następnie odczytać.
2.3.4 Programowanie licznika.
Układ licznika 8253 obsługuje 4 adresy wejścia – wyjścia. Trzy pierwsze pozwalają na pisanie i czytanie zawartości
liczników. Czwarty adres służy do wpisywania słowa trybu do wybranego licznika. Wpisanego słowa trybu nie
można odczytać. Po włączeniu zasilania każdy używany licznik wymaga zaprogramowania. Programowanie polega
na wpisaniu słowa trybu, a następnie liczby do wybranego licznika. Zapis i odczyt stanu licznika może być wybrany
na trzy sposoby:
tylko
młodszy bajt (przy zapisie starszy jest zerowany)
tylko starszy bajt (przy zapisie młodszy jest zerowany)
kolejno najpierw młodszy, potem starszy bajt.
Przy dwubajtowym dostępie odczyty i zapisy trzeba wykonywać zawsze parami. Dwubajtowy rozkaz odczytu stanu
licznika w biegu wymaga uprzedniego rozkazu zatrzaśnięcia stanu licznika.
Adres Przeznaczenie
BAZOWY+0
zapis / odczyt licznika 0
BAZOWY+1
zapis / odczyt licznika 1
BAZOWY+2
zapis / odczyt licznika 2
BAZOWY+3 słowo trybu
BAZOWY+3 zatrzaśnięcie stanu licznika
Format słowa trybu:
SC1
D7
SC0
D6
RL1
D5
RL0
D4
M2
D3
M1
D2
M0
D1
BCD
D0
BAZOWY+3
ADRES
0
- kod binarny prosty
1
- kod BCD, cztery dekady
0
0
0
- MOD 0: zliczanie impulsów
0
0
1
- MOD 1: programowany uniwibrator
X
1
0
- MOD 2: programowany dzielnik częstotliwości
X
1
1
- MOD 3: programowany generator
1
0
0
- MOD 4: gen. impulsów wyzwalany programowo
1
0
1
- MOD 5: gen. imp. wyzwalany z zewnątrz
0
0
- zapamiętanie stanu licznika
0
1
- czytanie/pisanie mniej znaczącego bajtu
1
0
- czytanie/pisanie bardziej znaczącego bajtu
1
1
- czytanie/pisanie najpierw mniej znaczącego
bajtu, potem bardziej znaczącego bajtu
0
0
- wybór licznik 0
0
1
- wybór licznik 1
1
0
- wybór licznik 2
1
1
- kod niedopuszczalny
Systemy mikroprocesorowe
18
Zatrzaśnięcie stanu licznika:
SC1
D7
SC0
D6
RL1
D5
RL0
D4
X
D3
X
D2
X
D1
X
D0
BAZOWY+3
ADRES
0
0
- zapamiętanie stanu licznika
0
0
- wybór licznik 0
0
1
- wybór licznik 1
1
0
- wybór licznik 2
1
1
- kod niedopuszczalny
2.3.5 Rodzaje pracy liczników.
Tryb 0 Wygenerowanie przerwanie po zakończeniu odliczania.
Wpisanie liczby do licznika inicjuje kolejne odliczanie lub przedłuża trwający impuls.
Zadana liczba pojawia się w liczniku po następnym impulsie zegara.
Bramka = 0 zatrzymuje odliczanie.
Bramka = 1 zezwala na liczenie.
CLK
GATE
W
S
S
S
L
L
L
L
L
S
L
L
L
L
WR
0
4
tryb
stop
stop
Stan
X
X
X
4
4
4
4
3
2
1
0
FFFF FFFF FFFE FFFD FFFC
liczba
OUT
CLK
GATE
W
L
L
S
L
L
L
L
L
S
L
L
L
L
WR
0
4
tryb
stop
stop
Stan
X
X
X
4
3
2
2
1
0
FFFD
FFFE
FFFD FFFC FFFB
liczba
OUT
FFFF
FFFA
CLK
GATE
W
L
L
L
L
L
L
W
L
S
L
L
L
L
WR
0
7
tryb
stop
Stan
X
X
X
7
6
5
4
3
2
liczba
OUT
FFFF
1
3
2
2
1
0
3
nowa liczba
Systemy mikroprocesorowe
19
Tryb 1 Pojedynczy impuls o zadanym czasie trwania
Narastające zbocze na bramce inicjuje odliczanie od wpisanej liczby
Przedłuża już generowany impuls
Zadana liczba pojawia się w liczniku po następnym impulsie zegara.
Stan bramki nie ma wpływu na liczenie
CLK
GATE
W
L
L
L
L
L
W
L
L
L
L
L
L
WR
1
4
tryb
start
start
Stan
X
X
X
X
4
3
2
1
0
3
4
FFFF
FFFF
liczba
OUT
CLK
GATE
W
L
L
L
W
L
L
L
L
L
L
L
L
WR
1
4
tryb
Stan
X
X
X
X
4
3
2
1
0
FFFF
liczba
OUT
FFFF
FFFE
CLK
GATE
W
L
L
L
L
L
W
L
L
W
L
L
L
WR
1
7
tryb
start
start
Stan
X
X
X
X
7
6
5
4
3
liczba
OUT
2
7
6
5
7
6
liczba bez zmiany
2
1
0
start
start
3
nowa liczba
0
1
2
3
start
liczba bez zmiany
5
4
Systemy mikroprocesorowe
20
Tryb 2 Dzielnik częstotliwości zegara przez ostatnio wpisaną liczbę
Narastające zbocze na bramce inicjuje odliczanie od wpisanej liczby
Stan 0 na bramce zatrzymuje liczenie i ustawia wyjście w stan 1
Zadana liczba pojawia się w liczniku po następnym impulsie zegara.
Zmiana liczby zostaje uwzględniona w momencie kolejnego przeładowania
licznika za wygenerowanym ujemnym impulsem.
CLK
GATE
W
L
L
W
L
L
L
W
L
L
L
W
L
WR
2
4
tryb
Stan
X
X
X
4
3
2
1
4
3
4
1
liczba
OUT
liczba bez zmiany
3
2
1
L
2
4
3
CLK
GATE
W
L
L
W
L
L
L
W
L
L
L
W
L
WR
2
4
tryb
Stan
X
X
X
4
3
2
1
5
4
1
2
liczba
OUT
3
2
1
L
3
3
2
CLK
GATE
W
L
L
S
W
L
L
W
L
L
S
W
L
WR
2
4
tryb
Stan
X
X
X
4
3
2
1
1
4
1
2
liczba
OUT
4
3
3
L
3
4
3
liczba
liczba
5
3
Systemy mikroprocesorowe
21
Tryb 3 Dzielnik częstotliwości zegara przez ostatnio wpisaną liczbę
Narastające zbocze na bramce inicjuje odliczanie od wpisanej liczby
Stan 0 na bramce zatrzymuje liczenie i ustawia wyjście w stan 1
Zadana liczba pojawia się w liczniku po następnym impulsie zegara.
Zmiana liczby zostaje uwzględniona w momencie kolejnego przeładowania
licznika za wygenerowanym ujemnym impulsem.
CLK
GATE
W
L
L
W
L
W
L
W
L
W
L
W
L
WR
3
4
tryb
Stan
X
X
X
4
2
4
2
4
2
4
2
liczba
OUT
liczba bez zmiany
2
4
2
W
4
4
2
CLK
GATE
W
L
L
W
W
L
L
W
L
L
L
W
L
WR
3
5
tryb
Stan
X
X
X
5
4
2
5
2
7
2
4
liczba
OUT
7
4
2
L
6
7
6
CLK
GATE
W
L
L
W
W
L
S
W
S
S
L
W
L
WR
3
4
tryb
Stan
X
X
X
4
2
4
2
4
2
4
4
liczba
OUT
4
4
2
W
4
4
2
liczba
7
Systemy mikroprocesorowe
22
Tryb 4 Krótki impuls generowany po zadanym opóźnieniu
Wpisanie liczby do licznika inicjuje kolejne odliczanie lub przedłuża odliczane opóźnienie
Zadana liczba pojawia się w liczniku po następnym impulsie zegara.
Bramka = 0 zatrzymuje odliczanie.
Bramka = 1 zezwala na liczenie.
CLK
GATE
W
S
S
S
L
L
L
W
S
L
L
L
L
WR
4
4
tryb
Stan
X
X
X
4
4
4
4
3
2
FFFF
0
liczba
OUT
liczba bez zmiany
L
1
CLK
GATE
W
L
L
L
W
L
L
S
L
L
L
L
L
WR
4
4
tryb
Stan
X
X
X
4
3
2
1
0
3
4
liczba
OUT
3
2
1
L
5
0
CLK
GATE
W
L
L
L
W
L
L
L
L
S
L
L
L
WR
4
7
tryb
Stan
X
X
X
7
6
5
4
3
2
2
3
liczba
OUT
2
1
0
L
1
nowa liczba
5
stop
stop
FFFF FFFE
FFFD FFFC
stop
FFFF
stop
5
nowa liczba
FFFF
Systemy mikroprocesorowe
23
Tryb 5 Krótki impuls generowany po zadanym opóźnieniu
Narastające zbocze na bramce inicjuje odliczanie od wpisanej liczby
Przedłuża już generowane opóźnienie
Zadana liczba pojawia się w liczniku po następnym impulsie zegara.
Stan bramki nie ma wpływu na liczenie
CLK
GATE
W
L
L
L
L
W
L
L
L
L
L
L
WR
5
4
tryb
Stan
X
X
X
X
4
3
2
1
0
FFFF
4
liczba
OUT
liczba bez zmiany
L
3
CLK
GATE
W
L
L
L
W
L
L
L
L
L
L
L
WR
5
4
tryb
Stan
X
X
X
4
3
2
1
0
1
2
liczba
OUT
0
L
3
CLK
GATE
W
L
L
W
L
L
W
L
L
L
L
L
WR
5
7
tryb
Stan
X
X
X
X
7
6
5
4
3
6
7
liczba
OUT
5
7
6
L
2
nowa liczba
3
start
FFFF
FFFF
start
liczba bez zmiany
start
2
1
0
start
start
start
start
start
start
FFFF FFFE
X
start
5
Zestawienie własności poszczególnych trybów pracy licznika.
Tryb
pracy
Stan sygnału GATE
0
1
0 blokada
zliczania
−
odblokowanie zliczania
1
−
inicjacja zliczania
−
2
blokada zliczania,
ustawienie wyjścia w stan "1"
inicjacja zliczania
odblokowanie zliczania
3
blokada zliczania,
ustawienie wyjścia w stan "1"
inicjacja zliczania
odblokowanie zliczania
4
blokada zliczania
odblokowanie zliczania
5
−
inicjacja zliczania
−
Systemy mikroprocesorowe
24
2.4. Układ 8255 – port równoległy
Programowalny układ równoległych we-wy zawiera trzy 8-mio bitowe porty, pracujące jako wejścia lub wyjścia
równoległe. 24 linie we-wy mogą być łączone w dwie, trzy lub cztery grupy, zależnie od zaprogramowanego trybu
pracy.
2.4.1. Opis układu
2.4.1.1. Schemat blokowy i opis sygnałów wejść i wyjść
Schemat blokowy układu pokazany jest na rys.6.1.
Bufor szyny
danych
D7..D0
Logika
odczytu i
zapisu
RD
WR
A0
CS
Układ sterowania
(Grupa A )
Układ sterowania
(Grupa B )
Port A
I/O
PA7..PA0
A1
RESET
Port C
Port C
Port B
PC7..PC4
PC3..PC0
PB7..PB0
Rys.6.1. Schemat blokowy układu 8255.
Znaczenie sygnałów wejść i wyjść:
D7 ÷ D0 (DATA)
- 3-stanowa dwukierunkowa magistrala danych,
A0, A1 (ADDRESS)
- adresy dla selekcji numeru portu,
GDN (GROUND)
- masa (minus zasilania),
VCC
- +5 V
RD (READ)
- wejście sygnału odczytu,
WR (WRITE)
- wejście sygnału wpisu,
CS (CHIP SELECT)
- wejście sygnału wyboru układu,
RESET
- wejście sygnału zerującego rejestry,
PA7 ÷ PA0
- wejścia/wyjścia portu A,
PB7 ÷ PB0 -
wejścia/wyjścia portu B,
PC7 ÷ PC0 -
wejścia/wyjścia portu C
Systemy mikroprocesorowe
25
2.4.1.2. Opis układu
Zasadniczymi blokami elementu 8255 są:
Bufor danych - pośredniczący w przekazywaniu danych między systemem mikroprocesorowym a innymi
zespołami elementu (dane, słowa sterujące, słowa statusowe)
Logika odczytu/zapisu - steruje przepływem danych (słów sterujących i słów statusowych) do/z elementu
Układy sterowania (Grupa A i Grupa b) - każda z grup odbiera polecenia z bloku logiki odczytu/zapisu oraz dane
z wewnętrznej szyny danych elementu 8255, wytwarzając odpowiednie sygnały sterujące:
Grupa A dla portu A i Portu C (górnego, bity C7-C4)
Grupa B dla portu B i Portu C (dolnego, bity C3-C0)
Porty A, B, C - element 8255 ma trzy 8-mio bitowe porty. Mogą one być ustawiane programowo w różne
konfiguracje, z uwzględnieniem cech ‘indywidualnych’.
Port A: jest wyposażony w 8-mio bitowy wyjściowy buforowany rejestr-zatrzask i 8-mio bitowy rejestr -zatrzask
wejściowy
Port B: jest wyposażony w 8-mio bitowy wyjściowy buforowany rejestr-zatrzask i 8-mio bitowy rejestr -zatrzask
wejściowy
Port C: jest wyposażony w 8-mio bitowy buforowany wyjściowy rejestr-zatrzask i 8-mio bitowy bufor wejściowy.
Port ten może być podzielony na dwa 4-ro bitowe porty, które mogą być skonfigurowane z Portem A i Portem B.
Dane pomiędzy systemem mikroprocesorowym a układem 8255 przesyłane są za pośrednictwem szyny danych
i bufora danych.
Sposób dołączenia elementu 8255 do szyny systemowej pokazany jest na rys.6.2.
8255
Magistrala adresów (16)
Magistrala sterowań
Magistrala danych (8)
A0
A1
I/OR I/OW
CS
A0
A1
D7..D0
RD
WR
PA7..PA0
PC3..PC0
PC7..PC4
RESET
PB7..PB0
(8
)
(4
)
(4
)
(8
)
Rys.6.2. Sposób dołączania układu 8255 do magistrali systemu.
Kierunkiem przepływu danych sterują wejścia WR i RD. Wejścia A0 i A1 adresują źródło danych lub miejsce
przesłania (port A, port B, port C lub rejestr sterujący RS).Wejście CS stanowi wejście wybierania układu.
Tabela 6.1. Adresy poszczególnych portów układu 8255.
Adres Rodzaj
operacji
BAZOWY+0
zapis/odczyt portu A
BAZOWY+1
zapis/odczyt portu B
BAZOWY+2
zapis/odczyt portu C
BAZOWY+3
zapis rejestru RS
Systemy mikroprocesorowe
26
2.4.2. Programowanie układu
W celu zaprogramowania układu należy przesłać do rejestru sterującego 8-mio bitowe słowo programujące. Format
słowa programującego jest następujący:
1
D7
X
D6
X
D5
X
D4
X
D3
X
D2
X
D1
X
D0
BAZOWY+3
ADRES
GRUPA B
PB7..PB0, PC3..PC0
PC3..PC0
PB7..PB0
1 – we
0 – wy
1 – we
0 – wy
0 – TRYB 0
1 – TRYB 1
GRUPA A
PA7..PA0, PC7..PC4
PC7..PC4
PA7..PA0
1 – we
0 – wy
1 – we
0 – wy
00 – TRYB 0
01 – TRYB 1
11 – TRYB 2
W przypadku kiedy w słowie sterującym bit D7 = ‘0’, to możliwe jest indywidualne programowanie stanów
na liniach portu C pracujących jako wyjścia:
0
D7
0
D6
0
D5
0
D4
X
D3
X
D2
X
D1
X
D0
BAZOWY+3
ADRES
0
- zeruj linię PC
1
- ustaw linię PC
C0 C1 C2 C3 C4 C5 C6 C7
0
1
0
1
0
1
0
1
0
0
1
1
0
0
1
1
0
0
0
0
1
1
1
1
W trybie 1 i 2 jest to jedyny możliwy sposób sterowania liniami portu C.
2.4.2.1. Tryb 0
Tryb 0 jest najprostszym trybem pracy układu 8255, w którym realizowane są bezpośrednie przesłania danych, przy
czym
µP nie jest informowany czy informacja wysłana wcześniej została już wykorzystana, a pobierając dane
z określonego portu nie wie, czy żądane dane są tam obecne. Dane wejściowe przesyłane do układu 8255
nie są pamiętane, zaś dane wysyłane z mikroprocesora do 8255 są pamiętane w buforze wyjściowym portu.
Systemy mikroprocesorowe
27
2.4.2.2. Tryb 1
W trybie 1 dane przesyłane są z potwierdzeniem. W trybie tym pracować mogą porty A i B. Sygnały sterujące
przepływem danych portu przesyłane są liniami portu C. W trybie 1 porty A i B pracować mogą jako wejścia lub
wyjścia. Na rys.6.3 pokazano pracę portu A jako wejścia.
INTE
A
PC3
PC4
PC5
STB
A
IBF
A
INTR
A
I/O
- potwierdzenie wpisu danych do bufora WE
- sygnał strobujący wpis danych do bufora WE
Stan przerzutnika INTE
A
jest maską sygnału INTR
A
i
jest ustawiany programowo
bitem PC4
PC6..PC7
PA7..PA0
RD
Rys. 6.3. Schemat funkcjonalny portu A pracującego w trybie 1 jako wejście.
Rys.6.4 pokazuje pracę portu B jako wyjścia:
INTE
B
PC0
PC2
PC1
PB7..PB0
ACK
B
OBF
B
INTR
B
- sygnał zgłaszający zapełnienie bufora WY
- potwierdzenie odczytu danej przez
urządzenie zewnętrzne
Stan przerzutnika INTE
B
jest maską sygnału INTR
B
i
jest ustawiany programowo
bitem PC2
WR
Rys. 6.4. Schemat funkcjonalny portu B pracującego w trybie 1 jako wyjście.
2.4.2.3. Tryb 2
W trybie 2 może pracować tylko port A. Stanowi on wówczas dwukierunkowy układ we-wy z potwierdzeniem.
W ćwiczeniu praca w tym trybie jest niemożliwa z powodu dołączenia do portu A zewnętrznego wzmacniacza
jednokierunkowego.
Systemy mikroprocesorowe
28
2.4.2.4. Przykład zastosowania układu 8255 do transmisji równoległej z potwierdzeniem
Słowo trybu:
1
0
1
1
0
1
0
0
Flaga: programowanie
Grupa A w trybie 1
Port A - wejście
Bity PC7.. PC4 jako wyjścia w trybie 0 (dostępne PC 6 i PC7)
Grupa B w trybie 1
Port B - wyjście
Bity PC3.. PC0 jako wyjścia w trybie 0 (nie są dostępne )
INTE
A
PC3
PC4
PC5
STB
A
IBF
A
PC6..PC7
PA7..PA0
WR2
INTE
B
PC0
PC2
PC1
PB7..PB0
ACK
B
OBF
B
WR1
INTR
A
INTR
B
Komputer 2
Grupa A
Komputer 1
Grupa B
RD2
WR1
OBF
B
INTR
B
ACK
B
PORT B/A
WR2
STB
A
IBF
A
INTR
A
RD2
B4
05
36
B4
09
36 (dana)
tryb
tryb
PC4
PC2
dana
36
dana
programowanie portów
przesyłanie bajtu danych
7
6
1
2
4
8
2
3
5
3
4
7
Systemy mikroprocesorowe
29
2.5. Układ 8259 – sterownik przerwań
2.5.1. Przeznaczenie i ogólna charakterystyka
Programowalny sterownik przerwań 8259A pozwala na realizację ośmio-poziomowego wektoryzowanego systemu
przerwań.
Jego główne cechy to:
• przeprowadzanie arbitrażu między zgłoszonymi przerwaniami, pochodzącymi z 8-miu różnych źródeł,
• maskowanie wybranych zgłoszeń przerwań,
• generacja żądania przerwania dla systemu mikroprocesorowego 8080
• przekazywanie mikroprocesorowi rozkazu skoku CALL do obsługi dla niezamaskowanego zgłoszenia
przerwania o najwyższym priorytecie.
Programowalność umożliwia sterownikowi przeprowadzanie arbitrażu według szeregu różnych zasad, zależnie
od potrzeb użytkownika. Zasady arbitrażu mogą być zmieniane programowo w dowolnym miejscu realizowanego
programu.
Układ złożony z 9-ciu programowalnych sterowników może przeprowadzać arbitraż dla obsługi przerwań z 64
różnych źródeł.
Bufor szyny
danych
D7..D0
Logika
odczytu i
zapisu
RD
WR
A0
CS
Logika
sygnałów
kaskadowych
Logika sterująca
Rejestr
obsługi
przerwań
ISR
Rejestr maskowania przerwań IMR
CAS0
CAS1
CAS2
SP
Rejestr
zgłoszonych
przerwań
IRR
Arbiter
priorytetów
IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
INTA
INT
Rys.1. Schemat blokowy elementu 8259A.
2.5.2. Opis sterownika
Opis sygnałów wejść i wyjść
D7÷D0
- 3-stanowa dwukierunkowa magistrala danych,
A0
- adres selekcji rozkazów,
GDN (GROUND)
- masa (minus zasilania),
VCC
- zasilanie +5 V,
RD -
wejście sygnału czytania,
WR -
wejście sygnału pisania,
CS -
wejście sygnału wyboru układu,
CAS0÷CAS2
- linie dla kaskadowego połączenia większej liczby układów 8259A,
Systemy mikroprocesorowe
30
SP(SLAVE PROG) -
wejście określające funkcję każdego z większej liczby układów 8259A,
NIT -
wyjście żądanie przerwania,
INTA -
wejście potwierdzające przerwania,
IR0÷IR7 -
wejście zgłoszenia przerwania.
2.5.2.1. Opis działania układu
Układ posiada trzy wewnętrzne rejestry istotne ze względu na jego działanie:
IRR -
Rejestr zgłoszenia przerwań (Interrupt Request Register). W rejestrze tym zostają zapamiętane
wszystkie zgłoszenia przerwań IR0÷IR7, generowane przez źródła zewnętrzne;
ISR -
Rejestr
przerwań obsługiwanych (In-Service Register). W rejestrze tym zostają zapamiętane wszystkie
zgłoszenia przerwań, które są obsługiwane;
IMR - Rejestr maskowania przerwań (Interrupt Mask Register). W rejestrze tym są ustawiane bity
odpowiadające tym zgłoszeniom przerwań, które powinny zostać zablokowane.
Pozostałe podukłady sterownika 8259A to:
Arbiter priorytetów - określa priorytety zgłoszeń przerwań na podstawie przekazanych do elementu 8259A słów
sterujących.
Bufor danych - dwukierunkowy bufor danych D0...D7 służy do sprzęgania elementu 8259A z magistralą danych
systemu mikroprocesorowego w celu wpisywania do elementu 8259A słów sterujących i odczytu słów statusowych.
Logika zapisu/odczytu - steruje wpisywaniem danych w trakcie programowania sterownika oraz odczytywaniem
zawartości rejestrów w trakcie ich testowania. Układ ma wejścia CS, WR, RD i A0. Wszystkie możliwości
sterowania za pomoc tych sygnałów ilustruje Tabela 1.1.
Logika sygnałów kaskadowych - wykorzystywana jest w przypadku połączenia wielu elementów 8259A do
obsługi większej niż osiem liczby zgłoszeń przerwań. Jeden z elementów 8259A jest wówczas zawsze elementem
nadrzędnym (master), a pozostałe są elementami podporządkowanymi (slave). Końcówki CAS0÷CAS2 są
wyjściami, jeśli układ 8259A jest elementem nadrzędnym, a wejściami jeśli jest podporządkowanym. Sygnał "1
log" na wejściu SP czyni element 8259A nadrzędnym, zaś sygnał "0 log" elementem podporządkowanym.
Tabela 1 - 1
Sygnatura
Adres D4
D3
RD
WR
Operacje
odczytujące stan rejestrów
BAZOWY+0
0
1
odczyt rejestrów IRR i IRS
BAZOWY+1
0
1
odczyt rejestru IMR
operacje
programujące układ
BAZOWY+0 0 0 1 0
wpis
słowa operacyjnego OCW2
BAZOWY+0 0 1 1 0
wpis
słowa operacyjnego OCW3
BAZOWY+0 1 x 1 0
wpis
słowa ICW1
BAZOWY+1 x x 1 0
wpis
słowa OCW1, ICW2, ICW3
2.5.3. Opis współpracy z systemem mikroprocesorowym.
Przerwanie wpisywane jest do rejestru IRR dodatnim zboczem sygnału IRQ, a po zakończeniu obsługi kasowane
programowo (kasowany jest rejestr ISR). Współpraca z systemem mikroprocesorowym przebiega następująco:
• W rejestrze IRR ustawiane są pozycje liniom zgłaszającym żądanie przerwania.
• Układ akceptuje żądanie i wysyła do procesora sygnał INT informujący o przerwaniu.
• Procesor akceptuje przerwania wysyłając sygnał INTA.
• Po otrzymaniu sygnału INTA sterownik wpisuje do rejestru ISR przerwanie o aktualnie najwyższym
priorytecie, kasuje odpowiednią pozycji w rejestrze IRR i wysyła kod instrukcji CALL na szynę danych.
• Instrukcja CALL powoduje wysłanie dwóch następnych sygnałów INTA przez procesor.
• Sygnały INTA powodują wysłanie przez sterownik dwóch kolejnych bajtów na szynę danych
zawierających mniej i bardziej znaczącą część adresu podprogramu obsługi przerwania.
• Mikroprocesor (np. 8080) rozpoczyna wykonywanie programu obsługi przerwania.
• Ustawiony bit rejestru obsługiwanych przerwań (ISR) powinien być wyzerowany dopiero na zakończenie
programu obsługi przerwania, za pomocą słowa OCW2 z odpowiednio ustawionym bitem EOI (END OF
INTERRUPT).
Systemy mikroprocesorowe
31
• Jeżeli w trakcie obsługi żądania przerwania o niższym priorytecie pojawi się zgłoszenie przerwania
o wyższym priorytecie, program obsługi przerwania o niższym priorytecie zostanie przerwany i rozpocznie
się realizacja obsługi przerwania o wyższym priorytecie.
Standardowy sposób podłączenia elementu 8259A do systemu mikroprocesorowego pokazany jest na Rys.3.
8259
Magistrala adresów (16)
Magistrala sterowań
Magistrala danych (8)
A0
I/OR I/OW
CS
A0
D7..D0
RD
WR
INTA
INT
INTA
INT
wejście przerwań
wejście programujące
CAS0
CAS1
CAS2
linie dla
kaskady
SP
IRQ7
IRQ6
IRQ5 IRQ4
IRQ3
IRQ2
IRQ1
IRQ0
Rys.3. Sposób dołączenia do magistrali systemu.
2.5.4. Programowanie sterownika
Do programowania sterownika stosowane są dwa typy słów sterujących:
• ICW - Słowa sterujące inicjujące (Initialization Command Word)
• OCW - Słowa sterujące operacyjne (Operation Command Word)
Systemy mikroprocesorowe
32
2.5.4.1. Inicjalizacja sterownika
START
Wpisz ICW1 do nadrzędnego ukłądu 8259
Wpisz ICW2 do nadrzędnego ukłądu 8259
Czy system zawiera
podporządkowane układy
8259
Wpisz ICW3 do nadrzędnego układu 8259
Wpisz ICW1, ICW2 oraz ICW3 do każdego
podporządkowanego układu 8259
Układy 8259 gotowe do przyjmowania zgłoszeń
w trybie podstawowym przerwań
NIE
TAK
Rys. 3 Sekwencja inicjalizacji elementów 8259
Rozpoczęcie normalnej pracy sterownika musi być poprzedzone wysłaniem do sterownika sekwencji dwu lub
trzech słów inicjujących ICW1, ICW2 i ewentualnie ICW3 (dla pracy połączonych kaskadowo większej liczby
elementów 8259A). Kolejność wysłania tych słów pokazana jest na Rys. 3.
2.5.4.2. Formaty słów inicjujących.
A7
D7
A6
D6
A
D5
1
D4
0
D3
F
D2
S
D1
0
D0
BAZOWY+0
ADRES
0
- kilka układów 8259
1
- tylko jeden układów 8259
ICW1
0
- krok tablicy przerwań 8
1
- krok tablicy przerwań 4
Bity mniej znaczącego bajtu
adresu tablicy przerwań
X
- gdy F=0
A5 - gdy F=1
A15
D7
A14
D6
A13
D5
A12
D4
A11
D3
A10
D2
A9
D1
A8
D0
BAZOWY+1
ADRES
ICW2
bity bardziej znaczącego bajtu adresu tablicy
przerwań
Systemy mikroprocesorowe
33
S7
D7
S6
D6
S5
D5
S4
D4
S3
D3
S2
D2
S1
D1
S0
D0
BAZOWY+1
ADRES
ICW3
0
- do IRi nie podłączono układu 8259
1
- do IRi podłączono układ 8259
sterownika nadrzędnego
0
D7
0
D6
0
D5
0
D4
0
D3
ID2
D2
ID1
D1
ID0
D0
BAZOWY+1
ADRES
ICW3
Kod binarny numeru wejścia IR
nadrzędnego układu 8259,
do którego zostało podłączone
wyjście INT danego
podporządkowanego układu 8259
sterownika podporządkowanego
Po wpisaniu do elementu 8259A słów ICW sterownik jest zainicjowany w modzie podstawowym (fully nested
mode - tryb pełnego zagnieżdżenia), charakteryzujący się tym, że:
• następuje wyzerowanie rejestru maskowania przerwań (co oznacza odmaskowanie wszystkich linii).
• wejściu IR7 zostaje przyporządkowany najniższy priorytet, zaś kolejnym wyjściom kolejne wyższe
priorytety.
• przerzutnik specjalnego maskowania i przerzutnik czytania statusu zostają wyzerowane.
Bity Ai słowa inicjującego ICW1 i ICW2 są bitami dwóch adresowalnych bajtów rozkazu skoku CALL
do programu obsługi przerwań. Pewne najmniej znaczące bity adresu nie są programowalne lecz automatycznie
wprowadzane do bajtów adresowych przez sterownik 8259A, przy czym może to się odbywać na dwa różne
sposoby zależnie od bitu F w słowie ICW1. Sposób tworzenia słów adresowych pokazany jest na Rys.3-3.2.
Zależnie od wyboru bitu F w słowie ICW1 sterownik 8259A zeruje najmniej znaczące bity adresu, co jest pokazane
w Tabeli 1.2.
A7
D7
A6
D6
A5
D5
A4
D4
A3
D3
A2
D2
A1
D1
A0
D0
A15
D7
A14
D6
A13
D5
A12
D4
A11
D3
A10
D2
A9
D1
A8
D0
mniej znaczący bajt
adresu dla kroku
tablicy przerwań 4
(F=1 w ICW1)
bardziej znaczący
bajt adresu
programowane
za pomocą
ICW1
automatycznie ustawiane
przez 8259
programowane za pomocą ICW2
A7
D7
A6
D6
A5
D5
A4
D4
A3
D3
A2
D2
A1
D1
A0
D0
programowane
za pomocą
ICW1
automatycznie ustawiane przez
8259
mniej znaczący bajt
adresu dla kroku
tablicy przerwań 8
(F=0 w ICW1)
Rys.5. Bajty adresu rozkazu CALL skoku do programu obsługi przerwania.
Systemy mikroprocesorowe
34
Tabela 1.2
F=1 krok adresów 4
F = 0 krok adresów 8
wejście
IR
D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0
IR7
A7
A6
A5 1 1 1 0 0 A7 A6
1 1 1 0 0 0
IR6
A7
A6
A5 1 1 0 0 0 A7 A6
1 1 0 0 0 0
IR5
A7
A6
A5 1 0 1 0 0 A7 A6
1 0 1 0 0 0
IR4
A7
A6
A5 1 0 0 0 0 A7 A6
1 0 0 0 0 0
IR3
A7
A6
A5 0 1 1 0 0 A7 A6
0 1 1 0 0 0
IR2
A7
A6
A5 0 1 0 0 0 A7 A6
0 1 0 0 0 0
IR1
A7
A6
A5 0 0 1 0 0 A7 A6
0 0 1 0 0 0
IR0
A7
A6
A5 0 0 0 0 0 A7 A6
0 0 0 0 0 0
Przykładowo, jeżeli w słowie ICW1 ustawiono F=1, zaś przerwanie zostało zgłoszone na linii IR5 to kolejne 3-y
bajty jakie układ 8259A wystawi na szynę danych, w odpowiedzi na trzy kolejne wysłania przez system sygnałów
INTA, są następujące:
D7 D6 D5 D4 D3 D2 D1 D0
1-gie
INTA
1 1 0 0 1 1 0 1 kod
rozkazu
CALL
2-gie
INTA
A7
A6
A5
1 0 1 0 0 najmniej
znaczący bajt adresu
3-cie
INTA A15 A14 A13 A12 A11 A10 A9 A8 najbardziej
znaczący bajt adresu
2.5.4.3. Przykład programu inicjalizacji.
Zadanie: należy zaprogramować układ 8259A dla systemu z pojedynczym elementem 8259A tak, aby krok tablicy
przerwań był równy 4.
Fragment programu inicjalizacji winien składać się z następującej sekwencji rozkazów:
. . . . . .
MVI A,TAB_CALL AND 0E0H OR 10110B
;trzy bity młodszego bajtu
OUT
ICW1
;adresu
oraz
P=1,
S=1
MVI A,HIGH TAB_CAL
;starszy bajt adresu obsługi
OUT
ICW2
;przerwania
. . . . .
Po zainicjowaniu układu poprzez wysłanie słów ICW układ jest zaprogramowany i może przyjmować słowa
operacyjne.
Formaty słów operacyjnych OCW1, OCW2 i OCW3 są następujące:
M7
D7
M6
D6
M5
D5
M4
D4
M3
D3
M2
D2
M1
D1
M0
D0
BAZOWY+1
ADRES
OCW1
0
- zgłoszenie przerwania IRi
nie jest zamaskowane
1
- zgłoszenie przerwania IRi
jest zamaskowane
Słowo operacyjne OCW1 pozwala na maskowanie dowolnych linii przerwań oraz na czytanie aktualnej maski
przerwań (stan rejestru IMR).
Systemy mikroprocesorowe
35
R
D7
SEOI
D6
EOI
D5
0
D4
0
D3
L2
D2
L1
D1
L0
D0
BAZOWY+0
ADRES
OCW2
numer w kodzie BCD źródła
przerwania , któremu
zostanie przyporządkowany
najniższy priorytet
1
- zeruj bit rejestru przerwań obsługiwanych
o najwyższym priorytecie
0
- nie czyń nic
0
- nie czyń nic
1
- zeruj bit rejestru przerwań obsługiwanych
o numerze L 2 L1 L0
0
- brak rotacji priorytetów
1
- rotacja priorytetów
W przypadku trybu ankietowania (Polling) element 8259A nie pracuje jako sterownik przerwań lecz jako generator
flag statusowych, które mogą być testowane przez system mikroprocesorowy poprzez wykonanie operacji we-wy.
Operacje te muszą być inicjowane przez mikroprocesor za pomocą słowa sterującego OCW3
zawierającego bit
P=1; słowo to jest wprowadzane sygnałem WR=0. Tak zaprogramowany sterownik 8259 uwaga najbliższy sygnał
RD za odpowiednik przerwania i wyprowadza na magistralę słowo statusowe o następującym formacie:
I
D7
X
D6
X
D5
X
D4
X
D3
W2
D2
W1
D1
W0
D0
kod BCD źródła przerwania
o najwyższym priorytecie,
żądanie obsługi
0
- brak zgłoszenia przerwania
1
- obecność zgłoszenia przerwania
X
D7
ESMM
D6
SMM
D5
0
D4
1
D3
P
D2
ERIS
D1
RIS
D0
BAZOWY+0
ADRES
OCW3
1
0
- czytaj rejestr zgłoszeń
przerwań IRR
1
1
- czytaj rejestr przerwań
obsługiwanych ISR
ANKIETOWANIE (ang. polling)
P=1 umożliwia następnemu sygnałowi RD =0
dokonanie odczytu numeru źródła przerwania
o najwyższym priorytecie, żądanie obsługi
nic nie czyń
zeruj
maskę
ustaw
maskę
1
1
0
0
0
1
0
1
maskowanie specjalne
Systemy mikroprocesorowe
36
2.6 Układ 8279 – sterownik klawiatury i wyświetlaczy
2.6.1. Przeznaczenie i ogólna charakterystyka
Programowalny sterownik współpracy z klawiaturą i wyświetlaczem może być wykorzystany do automatycznej
obsługi matrycy klawiszy oraz zestawu wskaźników siedmiosegmentowych lub alfanumerycznych. Układ
bezpośrednio dołączony do szyn systemu mikroprocesorowego zwalnia współpracujący mikroprocesor
z wykonywania czasochłonnych procedur przeglądania klawiatury i sterowania wyświetlaczy.
2.6.2. Opis sterownika
2.6.2.1. Opis sygnałów wejściowych i wyjściowych
Bufor szyny
danych
D7..D0
Logika
odczytu i
zapisu
RD
WR
A0
CS
Słowo
statusowe
Układ tłumienia
drgań
klawiatury
Rejestr
sterujący
IRQ
Rejestr
zwrotny
Licznik
przeglądania
CNTL/STB
SHIFT
Rejestr
FIFO
8×8
RESET
CLK
S3..S0
R7..R0
Sterowanie i
synchronizacja
Rejestr
wyświetlaczy
Rejestr adresów
wyświetlaczy
Pamięć RAM
wyświetlaczy
8×16
A3..A0
B3..B0
Rys. 7A Schemat blokowy elementu 8279
D7÷D0
- 3-stanowa dwukierunkowa magistrala danych,
A0
- wejście selekcji adresu – rozkaz / dana,
GND
- masa (minus zasilania),
VCC
- zasilanie +5 V,
RD (READ)
-
wejście sygnału czytania,
WR (WRITE)
- wejście sygnału pisania,
CS
- wejście sygnału wyboru układu,
RESET
- wejście sygnału zerowania układu,
CLK (CLOCK)
- wejście impulsów synchronizujących,
IRQ
- wyjście żądania przerwania,
RL7÷RL0
- wejścia linii powrotnych wybierane kluczami lub sensorami,
CNTL/STB
- wejście sterowania (stanu), sygnał wprowadzający dane do FIFO,
SHIFT
- wejście sygnału przesunięcia kodów wybieranego klawisza
SL3÷SL0
- linie wybierania: klucza, matrycy sensora, cyfr wskaźnika,
BD
- blokada wskaźników.
OUTA3÷OUTA0, OUTB3÷OUTB0 -
wyjścia, linie do odświeżania wskaźników zsynchronizowane z liniami
SL0 ÷ SL3, mogą pracować jak dwa wyjścia 4 bitowe lub jedno 8-mio bitowe,
Systemy mikroprocesorowe
37
2.6.2.2. Opis działania układu
Schemat blokowy układu 8279 pokazuje rysunek 7A. Jego zasadnicze podukłady to:
Bufor danych - pośredniczy w transmisji danych między systemem mikroprocesorowym a innymi zespołami
układu
Logika odczytu/zapisu - steruje przepływem tych danych, którymi mogą być słowa sterujące (rozkazowe), dane
lub słowa statusu układu
Zespół rejestrów sterowania i synchronizacji - przechowuje rozkazy, w których zawarta jest pełna informacja
o trybach pracy zespołu klawiatury i wyświetlaczy
Zespół sterowania i synchronizacji - kontroluje pracę układu, a także dostarcza zalecanej częstotliwości
100[kHz] (ustawianej programowo)
Licznik przeglądania - dostarcza sygnały potrzebne do przeglądania klawiatury i wyświetlaczy. W zależności
od trybu pracy sygnały te mogą mieć postać zdekodowaną lub zakodowaną
Rejestr zwrotny - przez bufor ten wprowadzana jest informacja zwrotna z zespołu klawiatury
Układ tłumienia drgań klawiatury - eliminuje wpływ drgań styków klawiatury
Rejestr FIFO - w zależności od trybu pracy układu informacja do tego rejestru wprowadzana jest natychmiast
lub z opóźnieniem 10[ms] lub strobowana impulsem CNTL/STB. Rejestr ten traktowany jak matryca pamięci
RAM odpowiadająca matrycy sensorów lub jak pamięć FIFO (pierwszy na wejściu, pierwszy na wyjściu)
Rejestr adresów wyświetlaczy - przechowuje adres ostatnio wpisanego słowa lub słowa odczytanego ostatnio
przez CPU
Pamięć RAM wyświetlaczy - przechowuje dane wyświetlaczy i może być odczytywana w/g adresu ustawionego
automatycznie lub zaprogramowanego przez CPU
Rejestr wyświetlaczy - rejestr poprzez który dostarczane są dane do wyświetlaczy i mogą mieć postać dwóch
niezależnych słów 4-ro bitowych lub jednego słowa 8-mio bitowego. W zależności od trybu pracy dane mogą być
wprowadzane do wskaźników lewostronnie (jak w przypadku maszyny do pisania) lub prawostronnie (jak
w kalkulatorach)
Blok stanu - kontroluje szczególne stany pamięci takie jak: ilość znaków, zapełnienie, opróżnienie. Niektóre
sytuacje, takie jak wprowadzanie informacji do pamięci, zapis do pełnej pamięci, odczyt z pustej pamięci mogą
być sygnalizowane przerwaniem (IRQ)
Przykład połączenia układu 8279 z szyną systemu mikroprocesorowego pokazuje rysunek 7- B.
8279
Magistrala adresów (16)
Magistrala sterowań
Magistrala danych (8)
I/OR I/OW
CS
C/D
D7..D0
RD
WR
RESET
RESET
A0
IRQ
CLK
Kod wyświetlanych znaków
Adres
WSKAŹNIKI LED
8 kolumn
8 wierszy
MATRYCA KLAWIATURY
16 4
3 8
S3..S0
BD
B3..B0
A3..A0
CNTL
SHIFT
R7..R0
Rys. 7B Przykład dołączenia układu 8279 do systemu mikroprocesorowego
Systemy mikroprocesorowe
38
2.6.3. Programowanie układu
Zespół klawiatury układu może pracować w czterech podstawowych trybach (przeglądanie klawiatury z blokadą do
dwóch klawiszy, przeglądanie N klawiszy, przeglądanie matrycy czujników i wejście strobowane), natomiast zespół
wskaźników może pracować w dwu podstawowych trybach (wprowadzanie od lewej lub od prawej strony).
2.6.3.1. Ustawianie trybu pracy dla klawiatury i wskaźników
Wybranie jednego z uprzednio opisanych trybów pracy klawiatury i wyświetlaczy umożliwia rozkaz, którego
format jest następujący:
0
D7
0
D6
0
D5
D
D4
D
D3
K
D2
K
D1
K
D0
BAZOWY+1
ADRES
0
- przeglądanie kodowane
1
- przeglądanie dekodowane
0
0
- przeglądanie klawiatury , blokada do
dwóch klawiszy (ang. 2-key lockout)
0
1
- przeglądanie N klawiszy
(ang . N-key rollover)
1
0
- przeglądanie matrycy czujników
1
1
- wejście strobowane
0
0
- 8 wyświetlaczy, wprowadzanie od lewej
0
1
- 16 wyświetlaczy, wprowadzanie od lewej
1
0
- 8 wyświetlaczy, wprowadzanie od prawej
1
1
- 16 wyświetlaczy, wprowadzanie od prawej
W przypadku wybrania dekodowanego sposobu przeglądania matrycy liczba wskaźników zostaje automatycznie
ograniczona do 4 niezależnie od ustawionego tryby pracy wskaźników. Sygnały na zakodowanych liniach
wybierania SL mają postać
S0
S1
S2
S3
Natomiast sygnały na zdekodowanych liniach wybierania:
S0
S1
S2
S3
Uwaga!: Po zewnętrznej inicjacji układu poprzez sygnał RESET, wybrany jest automatycznie tryb pracy
odpowiadający wysłaniu do układu rozkazu (binarnie):
0 0 0 0 1 0 0 0
2.6.3.2. Programowanie dzielnika częstotliwości
Rozkaz ten umożliwia dobranie dzielnika podziału zewnętrznego zegara, dla uzyskania właściwej wewnętrznej
częstotliwości pracy sekcji klawiatury i wyświetlacza. Format tego rozkazu jest następujący:
Systemy mikroprocesorowe
39
0
D7
0
D6
1
D5
P
D4
P
D3
P
D2
P
D1
P
D0
BAZOWY+1
ADRES
Parametr PPPPP może przyjmować wartości od 2 do 31. Wskazane jest tak zaprogramować dzielnik, aby
uzyskać częstotliwość wewnętrzną r ówną około 100[kHz]. Przy tej częstotliwości spełnione są następujące
zależności:
• czas przeglądania klawiatury: 5.1[msek],
• czas przeglądania jednego klucza: 80 [µsek],
• czas maskowania drgań: 10.3 [msek],
• czas świecenia wskaźnika: 480 [µsek],
• czas wygaszania wskaźnika: 160 [µsek],
• czas przeglądania zestawu wskaźników: 10.3 [msek].
Uwaga 1: Częstotliwość zegara doprowadzona do końcówki CLK układu 8279 jest równa 4.77[MHz]/2.
Uwaga 2: Po zewnętrznej inicjalizacji przez sygnał RESET parametr PPPPP jest ustawiony na wartość 31.
2.6.3.3. Odczyt rejestru FIFO/pamięci RAM czujników
Rozkaz ten przesyła informację do układu, że będzie odczytywany rejestr FIFO klawiatury lub wybrana komórka
pamięci RAM matrycy czujników. Format tego rozkazu jest następujący:
0
D7
1
D6
0
D5
AI
D4
X
D3
A
D2
A
D1
A
D0
BAZOWY+1
ADRES
Określa adres
komórki RAM
0
- czytanie komórek RAM o adresie AAA
1
- zwiększanie adresu po odczycie
Omawiany rozkaz jest istotny tylko dla trybu matrycy sensorowej. W trybie wybieranej klawiatury bit
przyrostu adresu AI oraz bity adresowe nie są istotne i nie wymagają ustawiania ponieważ dane są odczytywane
z pamięci FIFO (odczyt danych z adresu bazowego) w takiej kolejności w jakiej zostały wprowadzone.
2.6.3.4. Odczyt pamięci wyświetlaczy
Rozkaz ten przesyła informację do układu 8279, że będzie odczytywana zawartość pamięci
RAM wyświetlaczy. Format tego słowa jest następujący:
0
D7
1
D6
1
D5
AI
D4
X
D3
A
D2
A
D1
A
D0
BAZOWY+1
ADRES
Określa adres
komórki RAM
0
- czytanie komórek RAM o adresie AAA
1
- zwiększanie adresu po odczycie
2.6.3.5. Zapis do pamięci RAM wyświetlaczy
Format tego rozkazu jest następujący:
Systemy mikroprocesorowe
40
1
D7
0
D6
0
D5
AI
D4
X
D3
A
D2
A
D1
A
D0
BAZOWY+1
ADRES
Określa adres
komórki RAM
0
- zapis do komórek RAM o adresie AAA
1
- zwiększanie adresu po zapisie
Rozkaz ten ustala adres pod który odbędzie się następny zapis i nie ma on żadnego wpływu na źródło, z którego
odbędzie się najbliższy odczyt danych.
2.6.3.6. Programowanie blokady/wygaszanie wyświetlaczy
Rozkaz ten wykorzystywany jest do wygaszania wybranej połówki wskaźnika lub dla zabronienia zapisu do
wybranej połówki.
1
D7
0
D6
1
D5
X
D4
IWA
D3
IWB
D2
BLA
D1
BLB
D0
BAZOWY+1
ADRES
Gdy IW = ‘1’ - następuje częściowa blokada zapisu do pamięci wskaźników, w zależności od ustawienia (A lub
B) blokowane są wejścia portu pamięci odpowiadającego wyjściom A0÷ A3 lub B0 ÷ B3 rejestru wskaźników.
Gdy BL = ‘1’ - następuje częściowe wygaszanie wskaźników, w zależności od ustawienia (A lub B) wygaszane są
wskaźniki dołączone do wyjść A0 ÷ A3 lub B0 ÷ B3.
Uwaga: Jeżeli do wyjść A0÷A3 i B0÷B3 dołączone będą dekodery sterujące oddzielnymi grupami
wskaźników to rozkazem tym można zapisywać i kasować każdą grupę oddzielnie, aby wygasić wskaźniki przy
pracy w trybie zdekodowanym gdy grupa A i B sterowane są razem należy ustawić 1 na obu pozycjach BL.
Przy przesyłaniu danych bit B0 odpowiada pozycji D0 a bit A5 odpowiada pozycji D7 na szynie danych.
2.6.3.7. Zerowanie
Rozkaz służy do zainicjowania pamięci klawiatury i wyświetlaczy. Format rozkazu jest następujący:
1
D7
1
D6
0
D5
CD
D4
CD
D3
CD
D2
CF
D1
CA
D0
BAZOWY+1
ADRES
bit kasowania ogólnego ,
łączy funkcje CD i CF
dodatkowo synchronizując
wewnętrzny zegar układu
powoduje :
- zerowanie statusu FIFO
- zerowanie linii przerwania
- opróżnienie kolejki FIFO
ustaw RAM wyświtlacza:
- wszystkie bajty = 00H
- wszystkie bajty = 20H
- wszystkie bajty = FFH
0
X
1
0
1
1
- nie ma zerowania wyświetlaczy
- jest zerowanie wyświetlaczy (lub gdy CA=1)
0
1
Uwaga!: Kasowanie pamięci RAM wyświetlaczy trwa około 160 [
µsek]. W czasie kasowania ustawia się
najstarszy bit słowa stanu FIFO na ”1” logiczną, który zeruje się automatycznie po zakończeniu procesu kasowania.
Podczas kasowania nie można zapisywać pamięci RAM.
Systemy mikroprocesorowe
41
2.6.3.8. Blokuj przerwanie/Ustaw tryb sygnalizacji błędu
Format rozkazu jest następujący:
1
D7
1
D6
1
D5
E
D4
X
D3
X
D2
X
D1
X
D0
BAZOWY+1
ADRES
0
- nie rób nic
1
- blokuj przerwanie lub ustaw Specjal Error Mode
Podczas pracy w trybie przepatrywania matrycy czujników rozkaz pozwala na zablokowanie przerwań
(generowanych przy każdej zmianie zawartości pamięci matrycy) oraz wpis do pamięci RAM wartości
początkowych. Dla trybu przeglądania N klawiszy rozkaz ustawia opcję specjalnego trybu sygnału błędu -
Specjal Error Mode.
2.6.3.9. Słowo stanu FIFO
Dodatkowe informacje o stanie układu znajdują się w słowie statusowym. Format tego
słowa jest następujący:
DU
D7
S/E
D6
O
D5
U
D4
F
D3
N
D2
N
D1
N
D0
BAZOWY+1
ADRES
liczba znaków
w kolejce FIFO
FIFO napełnione
błąd odczytu z pustego FIFO
FIFO przepełnione
Określa tryb przepatrywania matrycy czujników czy
jest aktywne chociaż jedno wejście. Podczas pracy
w trybie przepatrywania klawiatury i specjalnym
trybie sygnału błędu określa czy nastąpiło wykrycie
wciśniętego więcej niż jednego klawisza.
ustawia się na czas kasowania
pamięci RAM wyświetlaczy
2.6.3.10. Odczyt danych
Odczyt danych ma miejsce gdy linie A
0
, CS i RD są w stanie niskim, a źródło danych określa odpowiednio podany
wcześniej rozkaz odczytu. Przy ustalonym bicie przyrostu automatycznego każdy odczyt spowoduje zwiększenie
adresu o 1, pod warunkiem, że nie wystąpił błąd odczytu.
2.6.3.11. Zapis danych
Dane zapisywane są do pamięci RAM, przy stanie niskim na liniach A
0
, CS i WR. Adres zapisu określa
ostatni rozkaz zapisu lub odczytu (wspólny licznik). Jeżeli ustawiony był bit automatycznego przyrostu adresu to
Systemy mikroprocesorowe
42
każdy zapis spowoduje zwiększenie adresu.
2.6.4. Opis rodzaju pracy klawiatury i wyświetlaczy
2.6.4.1 Tryb przeglądanej klawiatury, blokada od 2 klawiszy
W tym trybie możliwe są trzy sytuacje:
1. FIFO pełne - zwarcie klucza powoduje ustawienie bitu błędu w słowie stanu O (D
5
).
2. FIFO nie napełnione - jeżeli został zwarty więcej niż jeden klucz to fakt ten nie zostanie zarejestrowany
aż do momentu gdy pozostanie włączony tylko jeden klucz i ten zostanie wpisany wraz ze stanem linii
CNTL i SHIFT. Ustawiona zostanie również linia IRQ.
3. FIFO nie napełnione - włączenie jednego klucza spowoduje wpisanie tego faktu do FIFO po drugim
przeglądnięciu, ustawiona zostanie również linia IRQ.
2.6.4.2 Tryb przeglądanej klawiatury, przeglądanie N klawiszy
W trybie tym każdy klawisz jest traktowany indywidualnie. Włączenie pojedynczego klawisza spowoduje wpisanie
tego faktu do FIFO po drugim przeglądnięciu wraz ze stanem linii CNTL i SHIFT.
Jednoczesne włączenie większej ilości klawiszy spowoduje zarejestrowanie z opóźnieniem jak wyżej tych
klawiszy które w tym czasie nadal są włączone w kolejności jaka wynika z reguł przeglądania.
2.6.4.3 Tryb przeglądanej klawiatury - specjalny rodzaj błędu
W trybie przeglądania N klawiszy można ustawić tryb specjalnego błędu. Tryb ten ustawia się rozkazem o którym
mowa w p.2.6.3.8. Cykl wpisywania pozostaje bez zmian, natomiast jeżeli podczas jednego cyklu przeglądania
naciśniętych będzie więcej niż jeden klawisz to zostanie to potraktowane jak włączenie wielokrotne
i ustawiony zostanie bit błędu S/E oraz linia przerwania IRQ. Do pamięci FIFO nie zostanie wpisana żadna
informacja. Bit błędu w słowie stanu można zerować rozkazem zerowania przy CF = ‘1’.
2.6.4.4 Tryb matrycy sensorowej
W trybie tym każdemu bitowi pamięci RAM odpowiada jeden przełącznik sensorowy. W ten sposób pamięć
RAM obrazuje stan przełączników matrycy sensorowej. Linia IRQ ustawiana jest na 1 zawsze wtedy, gdy
nastąpi jakakolwiek zmiana któregoś z sensorów (na końcu przeszukiwania matrycy). Linia IRQ zostanie
skasowana pierwszą operacją odczytu gdy bit AI automatycznej zmiany adresu był ustawiony na "0" lub po
podaniu rozkazu "koniec przerwania" jeżeli bit AI ustawiony był na "1".
2.6.4.5 Tryb strobowanego wejścia
W trybie tym informacja wprowadzana jest do FIFO narastającym zboczem sygnału CNTL/STB z wszystkich
ośmiu linii RL.
Systemy mikroprocesorowe
43
2.6.4.6 Format danych
- dla trybu przeglądanej klawiatury:
CTRL/STB
D7
SHIFT
D6
S2
D5
S1
D4
S0
D3
R2
D2
R1
D1
R0
D0
linie powrotne
linie wybierające
0
- wciśnięto klawisz SHIFT
0
- wciśnięto klawisz CTRL
SDL0
- < 3 > 7 6 8 9
SDL1 A B C D E F
SDL2
0 1 2 4 5
SDL3 + *
÷
, %
= ;
RL0 RL1 RL2 RL3 RL4 RL5 RL6 RL7
- dla matrycy sensorowej
- dla trybu strobowanego wejścia
RL7
D7
RL6
D6
RL5
D5
RL4
D4
RL3
D3
RL2
D2
RL1
D1
RL0
D0
2.6.4.7 Tryby pracy wyświetlaczy - wprowadzanie lewostronne
Jest to najprostszy tryb pracy zespołu wyświetlaczy. W trybie tym adres "0" pamięci odpowiada lewemu skrajnemu
wyświetlaczowi a adres 15 (lub 7 w wyświetlaczu o 8-u znakach) prawemu skrajnemu wyświetlaczowi.
Wprowadzanie informacji modulo 16 (lub modulo 8) powoduje, że grupa wyświetlaczy wypełnia się od lewej
strony do prawej. Przykłady wprowadzania lewostronnego dla 8-u znaków:
Adres RAM (8 znaków)
0
1
2
3
4
5
6
7
1 - wprowadzenie
pierwszego znaku
1
2 - wprowadzenie drugiego
znaku
1
2
rozkaz 1 0 0 1 0 1 0 1
- zmiana adresu
1
2
3 - wprowadzenie trzeciego
znaku
1
2
3
4 - wprowadzenie
czwartego znaku
1
2
3
4
Systemy mikroprocesorowe
44
2.6.4.7 Tryby pracy wyświetlaczy - wprowadzanie prawostronne
Wprowadzanie prawostronne (charakterystyczne dla kalkulatorów) polega na wprowadzaniu pierwszej informacji
od prawego skrajnego wyświetlacza. Następna informacja również jest wprowadzana do skrajnego prawego
wyświetlacza, zaś poprzednia informacja przesuwana jest o jedną pozycję w lewo a informacja z lewego
skrajnego wyświetlacza znika. W trybie tym pozycja wyświetlacza i adres w pamięci nie odpowiadają sobie
i wprowadzanie informacji pod wybrane adresy (nieciągłe) jest stosunkowo trudne. Zaleca się aby pierwsza
informacja była wprowadzana pod adres "0", oraz aby stosować automatyczną zmianę adresów (z zachowaniem
ciągłości).
Przykłady wprowadzania prawostronnego dla zespołu 8-u wyświetlaczy z automatyczną zmianą adresu:
4
5
6
7
0
1
2
3
1 - wprowadzenie
pierwszego znaku
1
2 - wprowadzenie drugiego
znaku
1
2
rozkaz 1 0 0 1 0 1 0 1
- zmiana adresu
1
2
3 - wprowadzenie trzeciego
znaku
3
1
2
4 - wprowadzenie
czwartego znaku
3
4
1
2
3
4
5
6
7
0
1
2
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
Adres RAM (8 znaków)
Systemy mikroprocesorowe
45
2.7. Wyświetlacz LCD
2.7.1. Przeznaczenie i ogólna charakterystyka
Wyświetlacz ciekłokrystaliczny DM4020 jest wyświetlaczem matrycowym zawierającym moduł kontrolera i
układ wykonawczy wykonany w technologii LSI, pozwalający wyświetlać znaki alfanumeryczne i symbole
graficzne. Wyświetlacz może współpracować z mikrokomputerem jednoukładowym lub mikroprocesorem z
szyną danych 4-o i 8-o bitową. Wyświetlacz wyposażony jest również w wewnętrzną pamięć RAM (80 bajtów) i
ROM (która zawiera matryce 5*7 punktów lub 5*10 punktów dekodowanych znaków).
2.7.2. Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych
Rysunek 4-a. przedstawia schemat blokowy układu wyświetlacza, zaś tabela 4-a opis sygnałów wejściowych i
wyjściowych.
Tabela 4-A
Nr styku
Nazwa
Poziom
Opis Sygnału
1 VSS -
Masa
2 VDD -
+5V
3 V0 -
Ustawianie
kontrastu
4 RS 0/1
0-kod
instrukcji
1-dana
5 R/W 0/1
0-wpis
danej
1-czytanie danej
6 E
1→0 impuls
zapisu/odczytu
7 DB0 0/1
8 DB1 0/1
9 DB2 0/1
10 DB3 0/1
11 DB4 0/1
12 DB5 0/1
13 DB6 0/1
14 DB7 0/1
Linie danych
15 Vled -
Podświetlenie
16 NC -
-
Systemy mikroprocesorowe
46
2.7.3. Opis schematu blokowego
Rys. 2.7.1 przedstawia schemat blokowy wyświetlacza LCD. Jego zasadniczymi blokami funkcjonalnymi są:
Bufor WE/WY
DB0..DB3
DB4..DB7
E
RS
R/W
Flaga
zajętości (BF)
Rejestr
danych (DR)
Rejestr
instrukcji (IR)
ROM generatora
znaków
(CG ROM)
RAM generatora
znaków
(CG RAM)
RAM danych
(DD RAM)
Układ sterowania
kursorem
Układ konwersji danych
równoległe szeregowe
40 bitowy rejestr
przesuwny
40 bitowy rejestr
zatrzaskowy
Sterowanie
segmentami
Sterowanie sygnałami
wspólnymi
16 bitowy rejestr
przesuwny
Dekoder
instrukcji
Licznik adresów
(AC)
Sterowanie
wyświetlaczem
LCD
CL1
CL2
M
COM1..COM6
SEG1..SEG6
D
Rys. 2.7.1 Schemat blokowy wyświetlacza
Rejestr instrukcji IR: rejestr 8-mio bitowy przechowujący instrukcje sterujące, informację o adresach wewnętrznej
pamięci danych RAM (DD RAM) oraz pamięci RAM znaków (CG RAM).
Uwaga: do rejestru IR można jedynie zapisać informację.
- Rejestr danych DR: rejestr 8-o bitowy chwilowo przechowujący dane zapisywane lub odczytywane do/z DD
RAM lub CG RAM. Dane wpisywane w rejestr DR są automatycznie przepisywane do pamięci danych
DD RAM lub pamięci znaków CG RAM przez operację wewnętrzną. Rejestr DR jest także wykorzystywany
do przechowywania danej podczas operacji czytania danych z pamięci DD RAM lub CG RAM. Po zapisaniu
adresu do rejestru IR dana jest przepisywana do rejestru DR z pamięci DD lub CG przez operację wewnętrzną.
Po odczycie przez MPU danej z rejestru DR, do rejestru DR przesyłana jest dana z komórki pamięci DD lub CG
Systemy mikroprocesorowe
47
o adresie zwiększonym o 1. Przy pomocy sygnału RS dokonywany jest wybór między rejestrem IR i DR.
- Flaga zajętości (BF): kiedy przyjmuje ona wartość "1", wyświetlacz znajduje się w trybie wykonywania
operacji wewnętrznej i następna instrukcja nie będzie zaakceptowana. Jak pokazuje tabela 4-b,
Tabela 4-B
RS
R/W
E
Opis sygnału
0
0
IR przepisywany wewnętrzną operacją (kasowanie
wyświetlacza, itd.)
1
0
DR przepisywany przez wewnętrzną operację
(DR do CG lub DD RAM)
0
1
Czytanie flagi zajętości BF (DB7) i licznika adresów
(DB6..DB0)
1
1
DR zapisywany przez wewnętrzną operację
(CG lub DD RAM do DR)
flaga zajętości jest wystawiana jako bit DB7 (dla RS = "0", R/W = "1"). Następna instrukcja może być wpisana po
stwierdzeniu, że BF = "0".
Na rys.3. przedstawiono przebiegi czasowe sygnałów sterujących i odpowiedzią układów wyświetlacza dla
przypadku zapisu instrukcji (przypadek dla szyny 8 bitowej).
B - trwa operacja wewnętrzna
NB - zezwolenie na wpis następnej instrukcji
DBi - wpisywane odczytywane dane
R, R/W, E - sygnały sterujące wyświetlaczem
RS
R/W
E
Operacja
wewnętrzna
DBi
DANA
DANA
B
B
NB
Rysunek 4-B Przykładowy przebieg zapisu instrukcji do wyświetlacza LCD
Pamięć wyświetlanych danych (DD RAM): Pamięć wyświetlanych danych przechowuje dane w postaci 8-mio
bitowych kodów. Jej pojemność wynosi 80*8 bitów (80 znaków). Ta część pamięci, która nie jest
wykorzystywana do wyświetlania może być użyta jako RAM ogólnego przeznaczenia. Zależność między
adresami DD RAM i położeniem znaku na wyświetlaczu LCD pokazana jest poniżej. Adres DD RAM
(ADD) jest wytwarzany w liczniku adresów (AC) i ma postać binarną.
Pamięć znaków ROM (CG ROM): generator ten wytwarza wzory 5*7 lub 5*10 pikseli odpowiadające
wyświetlanym 8-mio bitowym danym. Wzory znaków dla obydwu typów reprezentacji podano w tabelach
przedstawiających fonty znaków.
Pamięć znaków RAM (CG RAM): pamięć ta pozwala na zdefiniowanie własnego zestawu znaków, poprzez
wpisanie odpowiednich wzorów 5*7 lub 5*10 pikseli. Sposób zapisu informacji w CG RAM pokazuje rysunek
4-c. W tabelach 5. przedstawiono zależność między adresami CG RAM a wyświetlanym znakiem (matrycą
znaku).
Blok sterownika wyświetlaczem LCD: blok ten zawiera 16 wzmacniaczy sterujących liniami wspólnymi i 40
wzmacniaczy sterujących segmentami. Po wybraniu przez program generatora znaków i liczby linii
znakowych następuje automatyczna selekcja wzmacniaczy sterujących liniami wspólnymi. Matryce znaków są
przesyłane szeregowo przez rejestr 40- bitowy i zatrzaskiwane po przesłaniu wszystkich znaków. Zatrzaśnięte
dane sterują wzmacniaczem wyjściowym wytwarzającym odpowiedni kształt sygnału.
Systemy mikroprocesorowe
48
Blok sterowania kursorem: blok ten wytwarza kursor lub powoduje jego migotanie. Kursor pojawia się na pozycji
wyznaczonej stanem licznika adresów DD RAM. Poniżej pokazano przykładowe położenie kursora dla stanu
licznika 7 heksadecymalnie:
0
AC6
0
AC5
0
AC4
0
AC3
1
AC2
1
AC1
1
AC0
00
1
01
2
02
3
03
4
04
5
05
6
06
7
07
8
08
9
27
40
- położenie znaku
- adres DD RAM
00
1
01
2
02
3
03
4
04
5
05
6
06
7
07
8
08
9
27
40
- położenie znaku
- adres DD RAM
40
41
41
43
44
45
46
47
48
67
- adres DD RAM
….
….
….
Praca w trybie jednoliniowym
Praca w trybie dwuliniowym
UWAGA: adresy DD RAM podane są w kodzie heksadecymalnym
- położenie kursora
2.7.4. Programowanie układu wyświetlacza LCD
2.7.4.1. Inicjalizacja wyświetlacza
Układ wyświetlacza jest automatycznie zerowany po włączeniu zasilania. Poniżej przedstawiono proces
inicjalizacji wyświetlacza (flaga zajętości jest ustawiana w stan BF=‘1’ i może być testowana dopiero po wysłaniu
słowa operacyjnego).
1) Inicjalizacja (zerowanie po włączeniu zasilania) wyświetlacza
WŁĄCZENIE NAPIĘCIA ZASILAJĄCEGO
Odczekać t > 15 ms po osiągnięciu Vcc > 4.5 V
Wysłać na adres bazowy 30H
Wysłać na adres bazowy 30H
Odczekać t > 4.1 ms
Wysłać na adres bazowy 30H
Odczekać t > 100 us
Wpisywanie wg powyższego schematu sekwencji instrukcji jest konieczne w przypadku szybkiego wysyłania
instrukcji programujących (np. w momencie inicjalizacji systemu mikroprocesorowego).
Systemy mikroprocesorowe
49
2) Wysłanie słowa funkcyjnego
0
D7
0
D6
1
D5
DL
D4
N
D3
F
D2
X
D1
X
D0
BAZOWY+0
ADRES
0
- matryca znaków 5x7 punktów
1
- matryca znaków 5x10 punktów
0
- jedna linia znaków
1
- dwie linie znaków (tylko dla F=0)
0
- słowo danych: 4 bity
1
- słowo danych: 8 bitów
Uwaga 1: W przypadku pracy w trybie wyświetlania dwóch linii znakowych, matryca znaków może składać się
tylko z 5*7 punktów.
Uwaga 2: Przed wysłaniem każdego kolejnego słowa (danej lub instrukcji) należy sprawdzać flagę gotowości BF.
3) Wyświetlacz „włączony / wyłączony”
0
D7
0
D6
0
D5
0
D4
1
D3
D
D2
C
D1
B
D0
BAZOWY+0
ADRES
0
- migotanie kursora wyłączone
1
- migotanie kursora włączone
0
- kursor wyłączony
1
- kursor włączony
0
- wyświetlacz wyłączony
1
- wyświetlacz włączony
4) Zerowanie wyświetlacza
0
D7
0
D6
0
D5
0
D4
0
D3
0
D2
0
D1
1
D0
BAZOWY+0
ADRES
5) Ustawienie trybu pracy wyświetlacza
0
D7
0
D6
0
D5
0
D4
0
D3
1
D2
I/D
D1
S
D0
BAZOWY+0
ADRES
0
- wpis znaku od lewej strony
1
- wpis znaku od prawej strony
0
- dekrementacja
1
- inkrementacja
Wysłanie tej instrukcji kończy proces inicjalizacji wyświetlacza i umożliwia wpisywanie wyświetlanych znaków.
W przypadku pracy z programem Monitor 8086 nie jest konieczne sprawdzanie flagi zajętości, ze względu na
długi czas upływający między wysłaniem kolejnych instrukcji.
Systemy mikroprocesorowe
50
2.7.4.2. Zestaw instrukcji sterujących
MPU ma bezpośredni dostęp do Rejestru Instrukcji (IR) oraz Rejestru Danych (DR). Wewnętrzne operacje
w wyświetlaczu LCD określane są sygnałami generowanymi przez MPU:
- sygnał wyboru rejestrów RS
- sygnał czytaj/pisz R/W
- sygnały szyny danych DB7 - DB6
Sygnały te tworzą zestaw instrukcji który został podany w tabeli.3. Poniżej podano znaczenie poszczególnych
bitów:
B =
"1"
włączenie migotania kursora
BF
= "1"
trwa operacja wewnętrzna – brak gotowości
BF =
"0"
gotowość do przyjęcia następnej instrukcji
C =
"1"
włączenie wyświetlania kursora
D
= "1"
włączenie wyświetlacza
DL
= "1"
słowo danych 8-mio bitowe
DL
= "0"
słowo danych 4-ro bitowe
F
= "1"
matryca znaków 5*10 punktów
F
= "0"
matryca znaków 5*7 punktów
I/D
= "1"
operacja inkrementacji (+1)
I/D
= "0"
operacja dekrementacji (-1)
N
= "1"
dwie linie znakowe
N
= "0"
jedna linia znakowa
R/L
= "1"
przesunięcie w prawo
R/L
=
"0"
przesunięcie w lewo
S = "1"
wpisywanie znaków od prawej strony
S/C =
"1"
przesunięcie pozycji znaku
S/C =
"0"
przesunięcie pozycji kursora
Systemy mikroprocesorowe
51
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
X
0
0
0
0
0
1
I/D
S
0
0
0
0
1
D
C
B
0
0
0
1
S/C R/L
X
X
0
0
1
DL
N
F
X
X
1
0
A
A
A
A
A
A
A
N
1
A
A
A
A
A
A
A
BF
A
A
A
A
A
A
D
D
D
D
D
D
D
D
KOD (DB7..DB0)
OPIS
ADRES
BAZOWY+0
zeruj LCD, kursor na pozycję spoczynkową
BAZOWY+0
cofnij kursor na pozycję spoczynkową, zeruj licznik
pozycji, zawartość DD RAM bez zmian
BAZOWY+0
tryb przesuwania kursora i obrazu
1
1
1
0
0
1
0
0
- znak pod kursor, kursor w lewo
- obraz w prawo, kursor bez zmian
- znak pod kursor, kursor w prawo
- obraz w lewo, kursor bez zmian
BAZOWY+0
tryb wyświetlania kursora i obrazu
1
1
1
0
0
1
0
0
- brak kursora
- miga znak i podkreślenie
- znak nie miga, widoczne podkreślenie
- znak miga, widoczne podkreślenie
1
0
- wyświetlacz wyłączony
- wyświetlacz włączony
BAZOWY+0
rozkaz przesunięcia kursora lub obrazu
1
1
1
0
0
1
0
0
- przesunięcie kursora w lewo
- przesunięcie kursora w prawo
- przesunięcie obrazu w lewo
- przesunięcie obrazu w prawo
BAZOWY+0
tryb wyświetlania kursora i obrazu
1
1
1
0
0
1
0
0
- jedna linia znaków , matryca 5x7
- jedna linia znaków , matryca 5x10
- dwie linie znaków, matryca 5x7
- kombinacja niedozwolona
1
0
- słowo danych 4-ro bitowe
- słowo danych 8-mio bitowe
BAZOWY+0
wpisanie adresu CG RAM do licznika adresów
BAZOWY+0
wpisanie adresu DD RAM do licznika adresów
- A
N
=0 dotyczy pierwszej linii znaków (00H..27H)
- A
N
=1 dotyczy drugiej linii znaków (40H..67H)
BAZOWY+2
odczyt flagi zajętości BF i zawartości licznika adresów
BAZOWY+1
wpisanie danej do CG RAM lub DD RAM zależnie od
ostatnio ustawianego adresu
D
D
D
D
D
D
D
D
BAZOWY+3
odczyt danej z CG RAM lub DD RAM zależnie od
ostatnio ustawianego adresu
Uwaga: 1.Zmiana trybu w trakcie pracy nie powoduje zmiany zawartości DDRAM i CGRAM.
2.Zmiana liczby linii wyświetlanych znaków musi być przeprowadzona poprzez realizację procedury
inicjalizacji wyświetlacza.
2.7.4.3. Definiowanie znaku (dla matrycy 5*7)
Wyświetlacz LCD umożliwia zdefiniowanie do 8 własnych wzorów znaków dla matrycy 5*7 pikseli i do 4
znaków dla matrycy 5*10 pikseli. Adresy początków definicji znaków dla matrycy 5*7 są wielokrotnością
ośmiu (np. 00H, 08H, 10H, ...), a dla matrycy 5*10 są wielokrotnością szesnastu (np. 00H, 10H, 20H...).
Wpisywanie informacji może nastąpić w dowolnym momencie po wykonaniu procedury inicjalizacji wyświetlacza.
Po zakończeniu definiowania własnych znaków należy wykonać operację ustawienia adresu DD RAM.
Poniżej przedstawiono przykładowy ciąg poleceń dla cyfry '1' (32H) 5*7 pikseli.
Systemy mikroprocesorowe
52
1) Wpisanie adresu CG RAM
0
D7
1
D6
0
D5
0
D4
0
D3
0
D2
0
D1
0
D0
BAZOWY+0
ADRES
2) Wpisanie danych definiujących symbol
X
D7
X
D6
X
D5
0
D4
0
D3
1
D2
0
D1
0
D0
BAZOWY+1
ADRES
- pierwsza linia znaku
X
X
X
0
1
1
0
0
BAZOWY+1
- druga linia znaku
X
X
X
0
0
1
0
0
BAZOWY+1
- trzecia linia znaku
X
X
X
0
0
1
0
0
BAZOWY+1
- czwarta linia znaku
X
X
X
0
0
1
0
0
BAZOWY+1
- piąta linia znaku
X
X
X
0
0
1
0
0
BAZOWY+1
- szósta linia znaku
X
X
X
0
1
1
1
0
BAZOWY+1
- siódma linia znaku
X
X
X
0
0
0
0
0
BAZOWY+1
- ósma linia znaku
(podkreślenie znaku)
Uwaga: Wpisanie danej do CG RAM inkrementuje licznik adresów.
3) Wpisanie adresu DD RAM
Od tej pory zdefiniowany znak '1' jest dostępny jako znak o kodzie 00H.
Systemy mikroprocesorowe
53
Rysunek 4-C Matryca generatora znaków
Systemy mikroprocesorowe
54
3. Opis sprzętu dla poszczególnych ćwiczeń
– adresy portów we – wy
3.1 Ćwiczenie 1 – analizator stanów logicznych
Adres portu wyzwalającego rejestrację: 20H
Ćwiczenia składa się z komputera PC do którego dołączona jest karta B8080 zawierająca m.in. mikroprocesor 8080.
Współpracę z tą kartą umożliwia program umieszczony w pliku SM_8080.EXE. Do karty dołączone są 24 sondy.
Jako analizator stanów logicznych wykorzystany jest drugi komputer PC wyposażony w odpowiednią kartę wraz z
oprogramowaniem.
3.1.1 Ogólna charakterystyka mikroprocesora INTEL 8080
Mikroprocesor 8080 (Rys. 1.1) zawiera 8-bitowy rejestr rozkazów, 8-bitowy akumulator A i sześć
8-bitowych rejestrów ogólnego przeznaczenia B, C, D, E, H, L. Rejestry te można łączyć w pary 16-bitowe BC,
DE i HL. Ich przeznaczenie jest dowolne, lecz z listy rozkazów wynikają następujące najczęstsze zastosowania:
HL - podstawowy rejestr pośredniego adresowania danych - wskaźnik danych
(ang. data pointer);
DE - pomocniczy rejestr pośredniego adresowania danych;
BC -jeden 16-bitowy, lub dwa 8-bitowe rejestry.
Do realizacji operacji arytmetycznych i logicznych służy 8- bitowa równoległa jednostka arytmetyczno-
logiczna ALU z układem korekcji dziesiętnej oraz związany z nią 8-bitowy rejestr pomocniczy i 5-bitowy rejestr
wskaźników warunków.
Do adresowania rozkazów pamięci programu służy 16-bitowy licznik rozkazów PC zwany także
licznikiem programów (Program Counter). 16-bitowy wskaźnik stosu SP służy do organizowania i adresowania stosu
(Stack Pointer).
Pracę mikroprocesora inicjalizuje i kontroluje układ sterujący, który w oparciu o dwufazowy zegar
zewnętrzny Φ
1
i Φ
2
generuje właściwe sygnały sterowania wewnętrznego i zewnętrzne sygnały sterujące.
Przeznaczenie poszczególnych wyprowadzeń jest następujące:
GND, +5V, +12V, -5V -doprowadzenie masy i napięć zasilających
D
0
- D
7
ośmiobitowa, dwukierunkowa ,trzystanowa szyna danych
A
0
– A
15
16-bitowa trzystanowa szyna adresowa
RESET sygnał zerowania wymusza przejście mikroprocesora w określony stan początkowy
Φ
1
i Φ
2
dwufazowy sygnał zegarowy wysokonapięciowy MOS
SYNC wyjście sygnału synchronizującego; stan aktywny identyfikuje początek każdego cyklu maszynowego
i związaną z nim emisję słowa stanu na szynie danych
DBIN
wyjście sygnału strobującego odczyt danych lub rozkazu przez mikroprocesor - szyna danych pracuje
w trybie wejście
WR wyjście sygnału strobującego zapis danych przez mikroprocesor - szyna danych pracuje w trybie
wyjście
READY wejście synchronizujące szybkość pracy mikroprocesora z zewnętrznymi, wolniejszymi układami;
pozwala wstrzymać pracę mikroprocesora na poziomie cykli maszynowych
WAIT
aktywny stan tego wejścia sygnalizuje przejście w stan oczekiwania wymuszony sygnałem READY
HOLD
wejście sygnału wymuszającego przejście mikroprocesora w stan wstrzymania; wymusza stan wysokiej
impedancji na szynach danych i adresowych
HLDA
wyjście sygnału potwierdzającego stan HOLD mikroprocesora
INTE
wyjście sygnalizujące stan wewnętrznego przerzutnika zezwalającego na przyjęcie przerwania
INT
wejście sygnału zgłoszenia przerwania
Początek każdego cyklu maszynowego w mikroprocesorze I8080 (Rys. 1.2) identyfikowany jest
aktywnym stanem na wyjściu SYNC. Jednocześnie na szynie danych pojawia się słowo stanu procesora (status
word). Na podstawie tego słowa zewnętrzne układy identyfikują rodzaj cyklu maszynowego jaki wykonuje aktualnie
mikroprocesor oraz dokonują selekcji zasobów zewnętrznych mikroprocesora do współpracy. Na podstawie słowa
stanu można zidentyfikować, które zasoby są aktualnie adresowane przez szynę adresową: pamięć, stos, wejście,
wyjście, system przerwań.
Systemy mikroprocesorowe
55
(Tab. 1.1)
Rodzaj cyklu maszynowego
Linie szyny danych
Status
Pobranie rozkazu
Czytaj pami
ęć
Pisz do pami
ęci
Czyt
aj ze st
osu
P
isz na st
os
Czytaj uk
ład we/wy
Pisz do uk
ładu we/wy
Potwierdzenie przerwania
Potwierdzenie wykonania rozkazu HLT
Potwierdzenie przerwania podczas HLT
Nr cyklu
1
2
3
4
5
6
7
8
9
10
D0
INTA
0
0
0
0
0
0
0
1
0
1
D1
WO
1
1
0
1
0
1
0
1
1
1
D2
STACK
0
0
0
1
1
0
0
0
0
0
D3
HLTA
0
0
0
0
0
0
0
0
1
1
D4
OUT
0
0
0
0
0
0
1
0
0
0
D5
M1
1
0
0
0
0
0
0
1
0
1
D6
INP
0
0
0
0
0
1
0
0
0
0
D7
MEMR
1
1
0
1
0
0
0
0
1
0
Przeznaczenie poszczególnych bitów w słowie stanu jest następujące:
D0 INTA
żądanie dostępu do systemu przerwań; potwierdza przyjęcie przerwania,
Dl WO
„1" identyfikuje cykl czytania do mikroprocesora
„0" oznacza pisanie danych na zewnątrz,
D2 STACK
oznacza
że szyna adresowa zawiera adres komórki stosu,
D3 HLTA
stan potwierdzenia instrukcji HLT,
D4 OUT
aktualny cykl maszynowy jest operacją wyjścia; na szynie sygnalizuje że procesor jest w stanie
FETCH,
D5 M1
odczytany na szynie danych bajt będzie potraktowany jako kod instrukcji,
D6 INP
aktualny cykl maszynowy jest operacją wejścia; na szynie adresowej znajduje się numer
urządzenia wejściowego,
D7 MEMR oznacza
że szyna danych będzie służyła do czytania danych z pamięci.
Legalne kombinacje (10 z 256) wraz z nazwami odpowiadających im cykli maszynowych
obrazuje załączona tabela (Tab. 1.1) W większości zastosowań mikroprocesor i8080 bywa łączony z
układem zegara systemowego 8224 i kontrolera systemowego 8228 tworząc jednostkę mikrokomputera
CPU (Rys. 1.3).
Do obiektów zewnętrznych (pamięć, podsystem we/wy) jednostka centralna dołączona jest
poprzez trzy szyny:
- szyna 1 jest 8 - bitową, dwukierunkową, trzystanową szynę danych
-
szyna 2 jest 16 - bitową trzystanową szynę adresową
- szyna 3 jest 5 - bitową sygnałową szynę sterującą, w której skład wchodzą następujące sygnały strobujące,
aktywne niskim stanem TTL, oznaczające:
MEMR - czytanie danych z pamięci
MEMW - zapis danych do pamięci
IOR
- czytanie danych z urządzenia wejściowego
IOW
- zapis danych do urządzenia wyjściowego
INTA
- odczyt instrukcji będącej potwierdzeniem przerwania
Systemy mikroprocesorowe
56
Akumulator A
Rejestr
pomocniczy
Rejestr
wskaźników
Rejestr
rozkazów
Multiplekser
Rejestr
pomocniczy
W
Rejestr
pomocniczy
Z
B
C
D
E
H
L
Wskaźnik stosu SP
Licznik rozkazów PC
Układ zwiększania i
zmniejszania zawartości
PC
Bufor magistrali
adresowej
Dekoder
rozkazów
D0
..D7
Rejestr
pomocniczy
ALU
Korekcja
dziesiętna
Układ sterowania
RESET
Ø
1
Ø
2
WR DBIN SYNC INT INTE HLDA HOLD WAIT READY
A
0..A
1
5
Wy
bó
r r
e
je
st
ró
w
Rys. 1.1 Organizacja wewnętrzna mikroprocesora 8080
Systemy mikroprocesorowe
57
Rys. 1.2
Rys. 1.3. Schemat połączeń jednostki CPU
3.1.2. Opis karty mikroprocesora 8080 (B8080)
Kartę B8080 zbudowano jako układ jednopłytkowy, w oparciu o mikroprocesor 8080 pracujący
w standardowym układzie aplikacyjnym zalecanym przez producenta (układ scalony U2). Mikroprocesor pracuje
Systemy mikroprocesorowe
58
z zegarem systemowym, zbudowanym w oparciu o układ 74S424 (Ul), o częstotliwości l.ll MHz] (dla rezonatora
kwarcowego F=10[MHz]). Cykl zegarowy wynosi T= 900[nsek]. Układ Ul wytwarza również sygnał zerowania (
po włączeniu napięcia zasilającego lub z przycisku umieszczonego na płycie czołowej) oraz akceptuje sygnały
gotowości).
Jako kontroler systemowy, stanowiący źródło sygnałów sterujących dla całego systemu, (MEMR, MEMW,
I/OR. I/OW, INTA, DB7-DB0) zastosowano układ scalony 74S428 (U3).
Mikroprocesor współpracuje z pamięcią nieulotną EPROM o pojemności 1 kB (U9) i pamięcią statyczną
RAM o pojemności 1 kB (U10). Pamięci zostały umieszczone w przestrzeni adresowej pod adresami:
• -
pamięć EPROM
od adresu 0000H do adresu 03FFH
• -
pamięć RAM
od adresu 8000H do adresu 83FFH.
Mikroprocesor obsługuje następujące urządzenia typu wejście/wyjście:
- wyświetlacz 7-o segmentowy poprzez wpis do rejestru 74HCT574 (Ul2) (sygnał wpisu jest sumą logiczna
sygnałów CSN i I/OW realizowana na bramce OR Ul 5A)
- 8-o pozycyjny przełącznik poprzez odczyt bufora 74HCT245 (U 14) (sygnał odczytu jest sumą logiczną
sygnałów CSN i I/OR realizowaną na bramce OR U15B)
- 8-o bitowy rejestr danej przekazywanej do komputera nadrzędnego poprzez wpis do rejestru 74HCT574
(U24) (sygnał wpisu jest sumą logiczną sygnałów CSO i I/OW realizowaną na bramce OR U23A).
Sygnał wpisu danej do tego rejestru jest jednocześnie sygnałem przerwania (IRQ2 pole kontaktowe JP4)
przekazywanym do komputera nadrzędnego
- 8-o bitowy rejestr danej przekazywanej z komputera nadrzędnego poprzez odczyt rejestru 74HCT574 (U25)
(sygnał odczytu jest suma logiczna sygnałów CSN i I/OR realizowanym na bramce OR U23B). Sygnał wpisu
danej do tego rejestru, wystawiany przez komputer nadrzędny XIRQ jest jednocześnie sygnałem
przerwania podawanym na wejście IRO kontrolera przerwań 8259A (U8).
UWAGA: Ponieważ podczas realizacji rozkazu dostępu do urządzenia zewnętrznego:
out
dx,al
procesor 8088/8086 komputera nadrzędnego wystawia 16-bitowy adres urządzenia zewnętrznego, zaś dekoder
zbudowany w oparciu o układy 74HCT138 (U26) i 74HCT32 (U23C i U23D) dekodują tylko mniej znaczący
bajt adresu, dlatego też bardziej znaczący bajt dekodowany jest na pakiecie ekspandera włożonego w jeden z
slotów IBM AT (komputera nadrzędnego). Sygnał ten opisany jako SBO (pole kontaktowe JP7) podawany jest
na wejście zezwalające G2B dekodera U26
- kontroler transmisji szeregowej typu 8251 (U7) ( sygnał wyboru CS51). Sygnały nadawane i odbierane
przechodzą przez układy buforowe wytwarzające poziomy elektryczne zgodne ze standardem RS232 (Ul 6, Ul
7). Sygnał zegarowy FRS232 wytwarzany jest poprzez podział częstotliwości podstawowej oscylatora
kwarcowego zegara 74S424 przez układ dwu liczników binarnych 74HCT393 (U22A i U22B).
- kontroler
przerwań typu 8259A (U8) ( sygnał wyboru CS59). Kontroler obsługuje trzy sygnały
przerwaniowe IRQ, TxRDY i RxRDY)
Dekoder wytwarzania sygnału dostępu do urządzeń wejścia i wyjścia zbudowano z układu
74HCT138 (U6) oraz bramek typu OR 74HCT32 (U15 i U23).
Adresy urządzeń podane są w Tabeli 1.2.
Tabela 1.2
Numer (hex)
Rodzaj
Nazwa urządzenia
20
wejście
bufor odczytu stanu 8-0 pozycyjnego przełącznika
20
wyjście
rejestr sterowania segmentami wyświetlacza 7-o
segmentowego
40-41
we/wy
dostęp do kontrolera 8259A
60-63
we/wy
dostęp do kontrolera 8251
Sygnały sterujące, danych, młodszy bajt adresu oraz sygnały kontrolerów 8251 i 8259A mogą być
obserwowane przy pomocy analizatora stanów logicznych na ekranie komputera pomocniczego. Do tego celu
wykorzystano zespół trzech sond 8-o wejściowych oznaczonych na schemacie literami A, B, i C. Sondy te
podłączone są do:
-
sonda A do układu buforów trójstanowych 74HCT245 U31 i U32
-
sonda B do układu buforów trójstanowych 74HCT245 U27 i U28
-
sonda C do układu buforów trójstanowych 74HCT245 U29 i U30
Systemy mikroprocesorowe
59
Wybór grupy buforów (odpowiednio U31,U27, U29 lub U32, U28, U30) dokonywany jest przełącznikiem
umieszczonym na płycie czołowej i oznaczonym literą
‘
G’ Stan tego przełącznika jest dodatkowo sygnalizowany
włączeniem/wyłączeniem świecenia zielonej diody LED.
Dwie najstarsze linie bufora U29 (sonda C) mogą być multipleksowane przy pomocy multipleksera
74HCT257 (U33) i przełącznika umieszczonego na płycie czołowej pakietu oznaczonego literą ‘Y’ Stan tego
przełącznika jest dodatkowo sygnalizowany włączeniem/wyłączeniem świecenia żółtej diody LED.
3.1.3. OPIS INSTALACJI ANALIZATORA STANÓW LOGICZNYCH
Analizator stanów logicznych wykorzystywany w ćwiczeniu składa się z dwóch elementów:
- karty zainstalowanej w komputerze personalnym IBM AT i trzech sond obsługujących łącznie 24 linie
sygnałowe. Linie te są podłączone do określonych punktów badanej karty mikroprocesora i8080.
Przyporządkowanie tych linii w trakcie wykonywania ćwiczenia jest zmieniane jedynie przełącznikami SW4(G)
i SW5(Y).
- programu obsługi zainstalowanym w katalogu MAIN na dysku HDD tego komputera. Wykonanie programu
następuje po zrealizowaniu polecenia:
C:\MAIN\MAIN.EXE <ENTER>
po chwili na ekranie monitora pojawi się okno obsługi analizatora stanów logicznych. Następnie należy załadować
do pamięci komputera jeden z trzech plików (patrz tabela 1.3) określających sposób przyporządkowania liniom
analizatora testowane sygnały pakietu I8080. W tym celu należy wybrać opcję UTILITY a następnie LOAD
SETT1NGS . W okienku, które się pojawi należy wpisać nazwę pliku nastaw (patrz tabela 1.3).
Dokładny opis obsługi analizatora znajduje się w załączonym dodatku: GUIDE TO SERIES 27XXLOGIC
ANALYZER CARDS.
Tabl.3
SONDA/LINIA
LED GRE=WYŁ
LED YEL=ZAŁ
(plik YEL1)
LED GRE=WYŁ
LED YEL=WYŁ
(plik YEL2)
LED GRE=ZAŁ
LED YEL=XXX
(plik YEL3)
A/linia 0
F2TTL
F2TTL
XI/OR
A/linia 1
READY
READY
XI/OW
A/linia 2
MEMR
MEMR
XIRQ
A/linia3
MEMW
MEMW
SB
A/linia 4
I/OR
I/OR
CSN.
A/linia5
I/OW
I/OW
I/OR
A/linia6
INT
INT
I/OW
A/linia7
INTA
INTA
CSO
B/linia 0
PDO
PDO
DO
B/linia 1
PD1
PD1
Dl
B/linia 2
PD2
PD2
D2
B/linia 3
PD3
PD3
D3
B/linia 4
PD4
PD4
D4
B/linia 5
PD5
PD5
D5
B/linia 6
PD6
PD6
D6
B/linia 7
PD7
PD7
D7
C/linia 0
PAO
PAO
FRS232
C/linia 1
PA1
PA1
RTS
C/linia 2
PA2
PA2
CTS
C/linia 3
PA3
PA3
CTS
C/linia 4
PA4
PA4
RXD
C/linia 5
PA5
PA5
RXRDY
C/linia 6
PA6
SYNC
TXRDY
C/linia 7
PA7
STSTB
TXE
Systemy mikroprocesorowe
60
Systemy mikroprocesorowe
61
Systemy mikroprocesorowe
62
3.2. Ćwiczenie 2,5,13.
3.2.1. Wprowadzenie
Podstawowym elementem tego stanowiska laboratoryjnego jest karta B8059_B.
Na Rys 2.2-1 pokazany jest schemat blokowy karty pokazujący połączenia najważniejszych elementów
dostępnych dla użytkownika karty. Karta dołączona jest do złącz rozszerzeń komputera IBM PC i dzięki
rezydującemu oprogramowaniu w pamięci EPROM oraz komputerze PC umożliwia sterowanie elementami
pakietu.
Część tych elementów takich jak złącza szufladowe (P1-KP4), zespół wyświetlaczy 7- segmentowych W1-W4,
zespół przycisków 1-5, Tryb, Zegar, Bramka i Reset, zespół 8-u diod LED dostępne są na płycie czołowej
pakietu. Pozostałe elementy takie jak układy 8255, 8251, 8253 i 8259 znajdują się na płycie głównej karty (nie
widocznej dla użytkownika). Na części niewidocznej znajdują się też m.in. takie elementy jak procesor 8080,
pamięci RAM i EPROM. Kompletny schemat elektryczny karty wraz z krótkim opisem znajduje się
w rozdziale 3.2.3
Sposób wykorzystania pakietu zależy od treści otrzymanego zadania, przy czym najczęściej:
- W
ćw. nr
2 do złącza szufladowego Pl należy dołączyć zewnętrzny zespół przycisków (Rys 2.2-2),
- W
ćw. nr 5 należy zgodnie z treścią otrzymanego zadania dołączyć źródła przerwań do wejść IRQ
sterowników przerwań 8259 a także w przypadku pracy kaskadowej skonfigurowania współpracy obu
sterowników. Czynności te wymagają odpowiedniego połączenia pomiędzy pinami złącz szufladowych P2 i P3
(Rys 2.2-1),
- W
ćw. nr 13 należy wykorzystać odpowiednie kable do połączenia szeregowego lub równoległego dwu
stanowisk. Kable te (Rys 2.2-3) są na wyposażeniu stanowiska laboratoryjnego.
Wykonanie otrzymanego zadania polega na napisaniu programu w języku assembler a następnie wykonaniu
odpowiednich połączeń na płycie czołowej karty i uruchomieniu programu.
Opis pakietu programów służących do edycji programu źródłowego a także kompilacji i uruchomienia
programu opisany jest w rozdziale 1.
Pisząc program należy pamiętać, że dostępna dla użytkownika pamięć RAM o pojemności 8kB znajduje się
w obszarze 8000h-9FFFh. Zastosowanie niepełnego dekodera pamięci powoduje, że pamięć RAM widoczna jest
w czterech kolejnych obszarach 8kB. Ponadto należy unikać korzystania z ostatnich 256 bajtów pamięci
(umieszczone są tam zmienne systemowe programu rezydującego w pamięci EPROM).
Adresy kontrolerów umieszczonych na module B8059_B
Tabela 3.2.3-1
Numer (hex)
Nazwa urządzenia
28H-2BH CS59M
obsługa kontrolera 8259 master
2CH-2FH CS59S
obsługa kontrolera 8259 slave
30H-33H CS51
obsługa kontrolera 8251
34H-37H CS53
obsługa kontrolera 8253
38H-3BH CS55
obsługa kontrolera 8255
Systemy mikroprocesorowe
63
Rys. 2.2.1 Schemat blokowy pakietu.
Systemy mikroprocesorowe
64
Rys. 2.2.2 Schemat zewnętrznego zespołu przycisków.
Rys. 2.2.3 Schemat kabli komunikacyjnych.
3.2.2 Opis kart ćwiczenia laboratoryjnego
3.2.2.1 Pakiet laboratoryjny.
Schematy ideowe badanego pakietu przedstawione są
na rysunkach:
B8059_c.sch
przedstawia schemat ideowy modułu mikroprocesora 8080
B80MAN_C
.
sch
przedstawia schemat ideowy modułu manipulatora i wyświetlania
IBMEX6A.sch
przedstawia schemat ideowy karty bufora między komputerem nadrzędnym
a pakietem laboratoryjnym
Rys 2.2-2
przedstawia schemat ideowy klawiatury pomocniczej
Rys 2.2-1
przedstawia schemat blokowy pakietu laboratoryjnego
Rys 2.2-3
przedstawia konstrukcję kabli transmisji szeregowej i równoległej
Systemy mikroprocesorowe
65
Pakiet (składającą się z dwu modułów B8059_B i B80MANB) zbudowano w oparciu
o mikroprocesor I8080 pracujący w standardowym układzie aplikacyjnym zalecanym przez producenta (układ
scalony U2). Mikroprocesor taktowany jest zegarem systemowym, wytwarzanym przez układ scalony 74S424 (Ul),
o częstotliwości F = l8.432 [MHz]. Układ Ul wytwarza również sygnał zerowania mikroprocesora i układów 8251
i 8255 (po włączeniu napięcia zasilania karty lub wciśnięciu przycisku RESET umieszczonego na module
B80MAN_B).
Sygnały systemowe (MEMR, MEMW, I/OR, I/OW, INTA, DB7-DB0) wytwarzane są przez kontroler systemowy
74S428 (U3).
Mikroprocesor współpracuje z pamięcią programu typu EPROM o pojemności 8kB (U5) i pamięcią danych
typu SRAM o pojemności 8kB (U4). Pamięci zostały umieszczone w przestrzeni adresowej pod adresami:
pamięć EPROM
0000 - 1FFFH
pamięć SRAM
8000 - 9FFFH
Mikroprocesor obsługuje następujące sterowniki:
- programowany sterownik transmisji szeregowej USART 8251A (U
14, sygnał wyboru CS51). Sygnały
danych nadawanych i odbieranych TxD i RxD oraz sygnały modemowe CTS i RTS i zegara taktującego
TxC wyprowadzono na złącze P3 umieszczone na płycie czołowej. Diody LED Dl, D2, D3, D4, D5, D6
informują o stanie linii TxD, RTS, CTS, TxRDY, RxRDY, SY/BR (sygnał SY/BR jest ponadto
doprowadzony do wejścia sterownika przerwań).
Uwaga 1: transmisja szeregowa nie jest realizowana w standardzie RS232.
Uwaga 2: częstotliwość zegara FI2TTL=2,048 MHz.
- Sterowniki przerwań 8259 (master i slave) (U8 i U7, sygnał wyboru CS59M i CS59S). Sterowniki mogą
pracować w trybie 2*master lub master i slave poprzez sterowanie sygnałem INTA układu U7. Poziom
sygnału ENINTA określony jest położeniem przełącznika SW10 na module B80MAN_C. Zapalona
dioda LED umieszczona nad przełącznikiem oznacza ENINTA = "0 "
Wejścia sygnałów przerwaniowych (w standardzie TTL) podane są na złącze P2, dostępne od strony czołowej
pakietu. Na wejściach inicjalnie wytwarza się stan '1' logicznej (drabinka rezystorowa RP2 i RP3).
- programowany licznik 8253 (U9, sygnał wyboru CS53)
Sygnały sterujące licznikami wyprowadzone są na złącze P4 umieszczone na zespole manipulatora B80MAN_B
oraz poprzez złącze pośrednie Z2 doprowadzone do układu liczników U9 (sygnały CLKO, OUTO, OUT2 i
GATE).
Na tym zespole umieszczono ponadto:
• przycisk
stabilny
TRYB sterujący multiplekserem 74HCT257 (U2), określający źródło sygnału CLKO,
CLK2 i GO. Wyjścia multipleksera podłączone są do odpowiednich wejść układu 8253,
• przycisk
niestabilny
ZEGAR, przy pomocy którego można taktować licznik/liczniki układu 8253,
• przycisk
stabilny
GATE bramkujący licznik 0 układu 8253.
Diody LED D7 i D8 sygnalizują stan linii OUT2 i OUTO.
- programowany
układ wejść/wyjść binarnych 8255 (U10, sygnał wyboru CS55). Porty sterownika poprzez
bufory Ull,U12iU13 wyprowadzone są
na złącze Pl umieszczone od strony czołowej pakietu, oraz poprzez
złącze Z3 na zespół manipulatora B80MAN_C. Sygnały te pozwalają na obsługę:
• 4-cyfrowego
wyświetlacza 7-segmentowego (praca w trybie multipleksowania), podłączonego do linii
OC7-OC4 i OB7-OB0,
• zespołu ośmiu diod LED D16-D9, podłączonych do linii OB7-OB0,
• zespołu pięciu stabilnych przycisków SW9-SW5 podłączonych do linii OA4-OA0,
• zespołu pomocniczej klawiatury (schemat przedstawiony na Rys 2.2-2) składającej się z 12 niestabilnych
przycisków, podłączonych do linii OA7-OA6 i OC7-OC4.
Moduł B8059B połączony jest kanałem transmisji równoległej z modułem IBMEX6A umieszczonym w jednym
ze slotów komputera nadrzędnego IBM AT. Do przekazywania danych używane są
dwa rejestry (umieszczone
na module B8059B):
- 74HCT574 Ul6 umożliwia przekazywanie danych przez mikroprocesor i8080 do IBM AT
- 74HCT574 U17 umożliwia odczyt danych przez mikroprocesor przekazywanych z IBM AT. Transferowi
danych towarzyszy ustawianie przerzutników typu D:
- wpisowi bajtu danej przez mikroprocesor 8080 do rejestru Ul 6 towarzyszy ustawienie wyjścia Q
przerzutnika U18B w stan ‘1’logicznej. Odczyt stanu tego przerzutnika odbywa się za pośrednictwem
trójstanowego bufora 74HCT125 U20B.
- w identyczny sposób odbywa się przekazywanie danych w drugą stronę.
Systemy mikroprocesorowe
66
3.2.2.2 Karta bufora komputera nadrzędnego IBMEX6A
Karta, wkładana w jeden ze slotów komputera IBM PC, umożliwia (poprzez kabel 50-żyłowy) obsługę pakietu
laboratoryjnego. Umieszczono na niej:
- dekoder adresu dostępu (układy 74HCT138 i 74HCT32 U3
-
U6), umożliwiający sterowanie wpisem/odczytem
danych do/z pakietu laboratoryjnego
Uwaga: karta bufora umieszczona jest w przestrzeni adresowej przewidzianej dla pakietów prototypowych
tzn. pod adresami od 318H do 31FH. Do komunikacji z pakietem laboratoryjnym wykorzystuje się adresy
318H i 319H.
- dwukierunkowy bufor transferu danych D7D0 (układ 74HCT245 Ul)
- jednokierunkowy bufor adresu A3-A0, zegara szyny XCLKi sygnałów sterujących I/OR i I/OW
- układ dzielnika zegara XCLK (74HCT393 i 74HCT74 U8 i U9) wytwarzający sygnał FRS232 (fala
prostokątna o wypełnieniu 0.5)
- bufor
sygnałów przerwań (opcjonalnie, układ 74HCT245 U7).
Systemy mikroprocesorowe
67
Systemy mikroprocesorowe
68
Systemy mikroprocesorowe
69
Systemy mikroprocesorowe
70
Systemy mikroprocesorowe
71
3.3 Ćwiczenie 3 – Układy wejścia-wyjścia
Ćwiczenie składa się z dwóch elementów:
• pakietu klawiatury i wyświetlaczy LED
• zestawu wielofunkcyjnych układów sterowanych rozkazami wejścia-wyjścia
3.3.1. Obsługa klawiatury.
Odczyt stanu kluczy dokonywany jest przez mikroprocesor poprzez sterowanie rejestrem typu 74HCT574 U3
i buforem typu 74HCT244 U2. Do rejestru U2 wpisywane są słowa sterujące. Na pakiecie została umieszczona
klawiatura zbudowana z trzydziestu dwóch kluczy, których kolejne bity przyjmują wartość zera logicznego
(sterowanie kolumnami kluczy RL7- RL0). Synchronicznie odczytywany jest bajt danych bufora U2, informujący
o stanie wierszy kluczy klawiatury (linie SDL3-SDL0). Analiza wpisanego i odebranego bajtu danych pozwala
określić, który z kluczy został włączony.
Program obsługi klawiatury powinien posiadać procedurę zapewniającą eliminację drgań zestyków kluczy.
Klucze klawiatury rozmieszczone są w sposób następujący:
SDL0
.
_
0
d
L
u
←
→
SDL1
1
2
3
C
h
r
↓
↑
SDL2
4
5
6
b
F
0
d
SDL3
7
8
9
A
E
n
c
RL0 RL1 RL2 RL3 RL4 RL5 RL6 RL7
Rys. 1 Schemat matrycy klawiatury.
7
8
9
A
E
n
c
4
5
6
b
F
0
d
1
2
3
C
h
r
.
-
0
d
L
u
Rys.2. Schemat rozmieszczenia kluczy klawiatury
3.3.2. Obsługa wyświetlaczy 7-segmentowych.
Sterowanie zespołem ośmiu wyświetlaczy 7-segmentowych odbywa się poprzez wpisanie słów 8-bitowych
do rejestrów typu 74HCT574 (Ul i U3). Słowo wpisane do rejestru U3 wybiera aktywne pole wyświetlacza W0-
W7, gdyż stan '1' logicznej na wyjściu rejestru powoduje wprowadzenie tranzystora wykonawczego (typu
NPN lub MOSFET N), podłączonego do tej linii, w stan nasycenia.
Słowo 8-mio bitowe wpisane do drugiego rejestru (Ul) steruje segmentami na wybranym polu. Zapalenie
segmentu następuje po wpisaniu na odpowiednią pozycję stanu „0" logicznego, co w konsekwencji powoduje
wprowadzenie tranzystora wykonawczego (typu PNP lub MOSFET P), podłączonego do tej linii, w stan nasycenia
Ten sposób sterowania pozwala obsłużyć osiem wyświetlaczy 7-segmentowych za pomocą 16 linii sterujących.
Stan początkowy po włączeniu zasilania systemu mikroprocesorowego, określany jest stanem przerzutnika
typu D (U9A), który po włączeniu zasilania ustawia wyjście odwracające Q w stan wysoki. Powoduje to
zablokowanie wyjść rejestru Ul (są one ustawiane w tzw. stan wysokiej impedancji). Ten sam efekt można uzyskać
Systemy mikroprocesorowe
72
po wysłaniu polecenia out pod adres 194H. Zdjęcie blokady wyświetlania następuje po wysłaniu polecenia out pod
adres 193H.
3.3.3. Sposób adresowania.
Adresy układów na pakiecie:
Tabela 1
Adres
Nazwa portu
190H
wpis danej do rejestru segmentu
191H
wpis danej do rejestru sterowania kolumną klawiatury / polem
wyświetlacza
192H
odczyt stanu wiersza klawiatury
193H
zdjęcie blokady
194H
ustawienie blokady
196H
wyłączenie buzzera
197H
włączenie buzzera
Systemy mikroprocesorowe
73
Systemy mikroprocesorowe
74
Systemy mikroprocesorowe
75
Systemy mikroprocesorowe
76
3.3.4. Wielofunkcyjny zestaw układów sterujących i wejścia-wyjścia
3.3.4.1. Wprowadzenie
Rysunek 1 przedstawia sposób podłączenia płyty wielofunkcyjnej MAB-94 do komputera IBM/PC. Komputer
zawiera blok interfejsu (kartę wetkniętą w 8-bitowe złącze magistrali PC), którego zadaniem jest buforowanie
sygnałów i sterowanie pracą płyty. Blok interfejsu połączony jest z płytą MAB-94 za pomocą 40-przewodowego
kabla elastycznego (taśmy).
Komputer
IBM/PC
INT
E
RF
EJS
MAB-94
Płyta wielofunkcyjna
Rys. 1. Połączenie płyty MAB-94 z komputerem IBM/PC
Na płycie MAB-94 rozmieszczone są:
1. Keypad - klawiatura szesnastkowa (mała klawiatura zawierająca 16 klawiszy oznaczonych cyframi 0..9
i literami A..F, w układzie macierzy 4×4);
2. DIP-switch - sześć miniaturowych przełączników ;
3. Bargraph - liniowy wskaźnik składający się z ośmiu diod świecących (LED);
4. 4 Digit Display - czterocyfrowy wyświetlacz siedmiosegmentowy;
5. ADC - 8-bitowy przetwornik analogowo-cyfrowy który może być sterowany i odczytywany przez komputer;
6. DAC - 8-bitowy przetwornik cyfrowo-analogowy, pobierający dane z komputera;
7. Stepper Motor - silnik krokowy z czujnikiem pozycji zerowej wirnika;
8. Buzzer - brzęczyk, dla generacji akustycznych sygnałów alarmowych;
9. Comparator - układ komparatora napięć z wyjściem 0/1;
10. Push Buttons - dwa klawisze halotronowe;
11. Level Indicators - trzy różnokolorowe wskaźniki diodowe;
12. VCO - generator sterowany napięciem, wyjście TTL;
13. Optoisolator - element optoizolacyjny o liniowej charakterystyce przejściowej;
14. Pot. - potencjometr.
Komputer IBM/PC może odczytywać:
• klawiaturę,
• ustawienia mikroprzełączników,
• stan przycisków,
• czujnik silnika krokowego,
• sygnał z VCO,
• stan rejestru wyjściowego przetwornika A/C
oraz sterować:
• wskaźnik liniowy,
• wyświetlacz siedmiosegmentowy,
• brzęczyk,
• kierunek i prędkość obrotu silnika krokowego,
• wejście przetwornika C/A.
Przykładowo napięcie ustawione potencjometrem może być odczytane przez komputer na dwa sposoby: przy
użyciu przetwornika A/C bądź też przez podłączenie wyjść potencjometru i przetwornika C/A na wejścia
komparatora, a następnie podawanie na wejście przetwornika C/A kolejnych liczb i wykrycie momentu, w którym
zmieni się stan wyjścia komparatora.
3.3.4.2. Opis sprzętu
Widok płyty MAB-94 pokazano na rysunku 2. Układy wymienione w rozdziale poprzednim zostały na tym rysunku
obramowane i opatrzone etykietkami (układy nieoznakowane nie są wykorzystywane w Laboratorium). Poniżej
podano szczegóły ich wykorzystania.
Systemy mikroprocesorowe
77
Rys. 2. Wygląd płyty wielofunkcyjnej
A. Klawiatura szesnastkowa
Na rysunku 3 przedstawiony został uproszczony schemat macierzy klawiszy, która pracuje w sposób następujący:
• przy założeniu, że żaden z klawiszy nie został naciśnięty, linie wejściowe KC[0..3] (kolumny macierzy) są
podłączone do napięcia +5V za pośrednictwem rezystorów, uzyskując w ten sposób stan logiczny 1.
• na linie wyjściowe KR[0..3] (wiersze macierzy) podaje się kolejno stan logiczny 0.
• kiedy jakiś klawisz jest wciśnięty, odpowiadająca mu linia wejściowa (kolumna) osiągnie stan 0 w momencie,
gdy odpowiedni wiersz osiągnie ten stan.
Systemy mikroprocesorowe
78
C
D
E
F
8
9
A
B
4
5
6
7
0
1
2
3
+5V
4×6k8
KR0
KC0
KR1
KR2
KR3
KC1
KC2
KC3
Rys. 3. Schemat klawiatury szesnastkowej
Wiedząc który wiersz został wprowadzony w stan 0 i w której kolumnie pojawiło się 0, możemy określić który
klawisz został naciśnięty.
B. Wyświetlacz siedmiosegmentowy
Wygląd wyświetlacza przedstawiono na rysunku 4. Wyświetlacz składa się z czterech niezależnych układów,
z których każdy przetwarza 4-bitową liczbę w kodzie BCD na pojedynczą wyświetlaną cyfrę.
DY[15..12] DY[11..8]
DY[7..4]
DY[3..0]
Rys. 4. Wyświetlacz siedmiosegmentowy
C. Przetwornik analogowo-cyfrowy
Na rysunku 5 przedstawiono sposób sterowania przetwornikiem A/C. Krótki impuls START (min. 100 ns)
rozpoczyna nowy cykl przetwarzania, podczas którego przetwornik jest zajęty przez około 1 ms. Komputer
powinien sprawdzać sygnał EOC (End of Conversion - koniec przetwarzania) i po wykryciu zakończenia
przetwarzania może odczytać nowe dane z portu ADC[7..0].
Systemy mikroprocesorowe
79
czas konwersji = około 1ms
przetwarzanie
gotowy
dane ustalone
START
EOC
ADC[7..0]
Rys. 5. Przebiegi czasowe w przetworniku A/C
D. Przetwornik cyfrowo-analogowy
Przetwornik D/A zamienia 8-bitowe liczby wpisane do odpowiedniego portu DAC[7..0] na wielkość napięcia.
Liczbie 00H odpowiada napięcie U
OUT
=0 V, natomiast liczbie 0FFH napięcie +5 V na wyjściu przetwornika.
E. Silnik krokowy
Silnik krokowy wymaga podania odpowiednio przesuniętych czterech sygnałów fazowych Ph[1..4], aby wykonać
obrót w zadanym kierunku, jak to pokazano na rysunku 6. Prędkość obrotową reguluje się dobierając odpowiednio
czas trwania impulsów. Maksymalną szybkość obrotową uzyskuje się dla minimalnych czasów trwania impulsów
T
min
=10 ms.
W momencie gdy wirnik silnika przechodzi przez położenie zerowe (co pokazuje wskazówka dołączona do osi
silnika), wskaźnik położenia zerowego osiąga stan 1 (linia ZP) i zapala się dioda ZPL.
1
2
3
4
5
Ph1
Ph2
Ph3
Ph4
Ph1
Ph2
Ph3
Ph4
T
min
=10ms
kierunek obrotu silnika
kierunek obrotu silnika
Rys. 6. Sygnały sterujące silnikiem krokowym
Systemy mikroprocesorowe
80
F. Brzęczyk
W momencie ustawienia linii wejściowej BUZZ w stan logiczny 1, brzęczyk generuje sygnał akustyczny
o częstotliwości ok. 1 kHz.
G. Komparator napięcia
Komparator porównuje napięcie wejściowe (IN) oraz napięcie odniesienia (REF). Kiedy U
IN
< U
REF
, sygnał
wyjściowy COMP posiada poziom wysoki (logiczne 1), w przypadku przeciwnym ma poziom niski (logiczne 0).
Może to być odczytane programowo lub pomierzone w punkcie pomiarowym TP1.
H. Generator sterowany napięciem.
Częstotliwość napięcia wyjściowego generatora zależy od napięcia U
IN
podawanego na jego wejście. Zależność
częstotliwości od napięcia jest liniowa, zakresowi napięć wejściowych 0 ÷ 5 V odpowiada w przybliżeniu zakres
częstotliwości napięć wyjściowych 0 ÷ 5 kHz. Sygnał wyjściowy z generatora jest falą prostokątną w standardzie
TTL. Można go odczytywać programowo lub mierzyć w punkcie TP2.
I. Optoizolator
Optoizolatory służą do transmisji sygnałów zmienno- i stałoprądowych pomiędzy obwodami o dużych różnicach
potencjałów, które z tego powodu muszą być od siebie odizolowane stałoprądowo. Optoizolator składa się z pary
elementów: diody świecącej i fototranzystora. Przepływ prądu wejściowego powoduje emisję przez diodę wiązki
światła w kierunku fototranzystora, który z kolei zamienia światło na prąd wyjściowy. Element optoizolacyjny
wykorzystywany w układzie laboratoryjnym posiada liniową charakterystykę przejściową, to znaczy napięcie
wyjściowe jest liniową funkcją napięcia wejściowego. Dodatkowa duża dioda świecąca, połączona w szereg
z wejściem optoizolatora sygnalizuje wielkość prądu wejściowego.
J. Przyciski
Dwa przyciski PB0, PB1 wykorzystują zjawisko Hall'a go otrzymania sygnałów logicznych. Przycisk naciśnięty
generuje sygnał 0, zwolniony generuje 1. Aktualny stan każdego z przycisków może być odczytany programowo.
3.3.4.3. Interfejs
Poszczególne funkcje płyty MAB-94 mogą być sterowane i/lub badane przez komputer za pomocą dwóch
zestawów rejestrów i buforów, które ogólnie nazywamy portami interfejsu. Organizacja portów wejściowych
i wyjściowych przedstawiona została poniżej.
Organizacja portów wyjściowych
Adres
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
300H Ph4 Ph3 Ph2 Ph1 KR3 KR2 KR1 KR0
301H DY15 DY14 DY13 DY12 DY11 DY10 DY9 DY8
302H DY7 DY6 DY5 DY4 DY3 DY2 DY1 DY0
303H DAC7 DAC6 DAC5 DAC4 DAC3 DAC2 DAC1 DAC0
304H
BUZZ
START
305H BG7 BG6 BG5 BG4 BG3 BG2 BG1 BG0
gdzie:
Phi
-
sygnały sterujące silnikiem krokowym
KRi
-
sygnały wierszy klawiatury
DYi
-
sygnały wyświetlacza siedmiosegmentowego
DACi - dane dla przetwornika C/A
BUZZ
-
sygnał sterujący brzęczyka
START
-
sygnał startowy przetwornika A/C
BGi
-
sygnały sterujące wskaźnikiem liniowym
Systemy mikroprocesorowe
81
Organizacja portów wejściowych
Adres
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
300H KC3 KC2 KC1 KC0
301H DS7 DS6 DS5 DS4 DS3 DS2 DS1 DS0
302H ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0
303H
PB1
PB0
304H
VCO
COMP
EOC
ZP
gdzie:
KCi
-
sygnały kolumn klawiatury
DSi
- status mikroprzełącznika
ADCi - bajt danych z przetwornika A/C
PBi
- status przycisków
VCO
-
napięcie wyjściowe generatora sterowanego napięciem
COMP
-
sygnał wyjściowy z komparatora
EOC
-
sygnał zajętości przetwornika A/C
ZP
-
sygnał ze wskaźnika położenia zerowego wirnika silnika krokowego
Systemy mikroprocesorowe
82
3.4 Ćwiczenie 4 – wyświetlacz LCD
3.4.1. Opis pakietu sterownika wyświetlaczem ciekłokrystalicznym
Adres bazowy wyświetlacza LCD wynosi 1E4H.
Pakiet sterownika współpracuje z systemem mikroprocesorowym poprzez 8-mio bitową szynę danych, 8-mio bitową
szynę adresową i szynę sterującą. Układ logiki wyboru zbudowany jest na elementach 74HCT138 (U1 i U2)
i 74LS10 (U3). Umożliwia on zapis/odczyt danej do/z układu licznika 8253 (U5), układu USART 8251A (U7)
oraz układu wyświetlacza ciekłokrystalicznego LCD U7 (typu LM092LN, dwie linie po 40 znaków w linii) przez
procesor (poprzez sterowanie układem bufora danych 74LS245 (U4)). Na wejście dekodera U1 podane są trzy
starsze bity (AB7, AB6, AB5) młodszego bajtu adresu. Sygnał sterujący jednego z wybranych wyjść tego dekodera
poprzez pole kontaktowe JP1 steruje dekoderem U2 (sygnałem aktywnym jest stan "0" logicznego podanego
na wejście E1). Na wejścia A0, A1 i A2 tego dekodera podane są trzy kolejne bity adresowe (AB4, AB3, AB2). Dwa
najmłodsze bity adresowe (AB1, AB0) szyny adresowej podane są bezpośrednio na układy U5, U7 i U11.
Ponieważ podczas realizacji rozkazu:
out
dx,al
procesor 8088/8086 wystawia 16-to bitowy adres urządzenia zewnętrznego, zaś opisany powyżej dekoder dekoduje
tylko mniej znaczący bajt adresu, dlatego też bardziej znaczący bajt dekodowany jest na pakiecie ekspandera
włożonego w jeden ze slotów IBM XT/AT. Sygnał ten opisany jako SB0 (pole kontaktowe JP3 i JP3A),
podawany jest na wejście zezwalające E2 dekodera U1.
Układ 74LS245 (U4) jest dwukierunkowym buforem szyny danych: jest on aktywny tylko w tych momentach,
gdy układ logiki wyboru wykrywa żądanie dostępu do licznika 8253 (U5), układu USART 8251A (U7) bądź
układu wyświetlacza LCD (U11) zaś kierunek transmisji określany jest poziomem sygnału I/OR i I/OW.
W pozostałych momentach jest on ustawiany w stan wysokiej impedancji.
Sygnał wyboru układu wyświetlacza LCD podawany jest z jednego z wyjść dekodera U2 na wejście
E wyświetlacza poprzez bramkę negującą U3B (74LS10). Sygnał ten jest wymnożony logicznie na bramce U3C
z iloczynem sygnałów I/OR i I/OW. Linia adresowa AB0 podana jest na wejście RS układu, wybierając typ
rejestru wewnętrznego ('1'- rejestr danych, '0'-rejestr instrukcji). Linia adresowa AB1 podana jest na wejście R/W
układu U11, wybierając rodzaj sygnału: '1'-czytaj dane, '0'-pisz dane. Takie rozwiązanie układowe wynika
ze specyfiki sterowania układem wyświetlacza LCD.
Systemy mikroprocesorowe
83
Systemy mikroprocesorowe
84
3.5 Ćwiczenie 7 – sterownik klawiatury i wyświetlaczy
3.5.1. Opis pakietu z sterownikiem 8279
Adres bazowy układu 8279 wynosi 158H.
Schemat ideowy pakietu programowalnego sterownika klawiatury i wskaźników 7-mio segmentowych przedstawia
rysunek. Pakiet sterownika współpracuje z systemem mikroprocesorowym poprzez 8-mio bitową szynę danych, 8-
mio bitową szynę adresową i szynę sterującą. Układ logiki wyboru zbudowany jest na elementach 74S405 (U4 i
U5). Umożliwia on zapis/odczyt układu 8279 (U2) przez procesor. Na wejście dekodera U5 podane są trzy starsze
bity (A7, A6, A5) młodszego bajtu adresu. Jedno z wybranych wyjść tego dekodera (pole kontaktowe JP3)
steruje dekoderem U4: na jego wejścia podane są trzy kolejne bity adresowe (A3, A2, A1), bit adresu A4 podany
jest na wejście sterujące E3 dekodera. Najmłodszy bit adresowy (A0) podany jest bezpośrednio na układ U2.
Ponieważ podczas realizacji rozkazu:
out
dx,al
procesor 8088/8086 wystawia 16-to bitowy adres urządzenia zewnętrznego, zaś opisany powyżej dekoder dekoduje
tylko mniej znaczący bajt adresu, dlatego też bardziej znaczący bajt dekodowany jest na pakiecie ekspandera
włożonego w jedno z gniazd rozszerzających na płycie głównej IBM XT/AT. Sygnał ten opisany jako SB0,
podawany jest poprzez pole kontaktowe JP5 na wejście E2 dekodera U5.
Układ 74HCT245 (U1) jest buforem szyny danych: jest on aktywny tylko w tych momentach, gdy układ logiki
wyboru wykrywa żądanie dostępu do elementu 8279 (U2). W pozostałych momentach jest on ustawiany w stan
wysokiej impedancji, zaś kierunek transmisji określany jest poziomem sygnału I/OR.
Dekoder 7442 (U3) wytwarza ciąg impulsów, które przemiatają matrycę klawiatury: w przypadku wciśnięcia
jednego z przycisków sygnał przechodzi przez zestyk matrycy i trafia na jedno z wejść RL7÷RL0 układu 8279.
Sygnał przerwania z układu 8279 podawany jest poprzez pole kontaktowe JP1 na jedno z wejść przerwaniowych
układu 8259A umieszczonego na płycie głównej.
Dekoder 7442 (U11) steruje poprzez wzmacniacz 7407 (U6) i tranzystory BD136 anodami wskaźników 7-mio
segmentowych, zaś poszczególne segmenty załączane są za pośrednictwem wzmacniacza mocy 74549 (U10)
sygnałami podawanymi z portu OA i OB układu 8279.
3.5.2. Klawiatura
Do pakietu z sterownikiem 8279 dołączona jest poprzez złącze szufladowe klawiatura, której widok i schemat
matrycy pokazuje rysunek 7-c i rysunek 7-d.
SDL0
- < 3 > 7 6 8 9
SDL1 A B C D E F
SDL2
0 1 2 4 5
SDL3 + *
÷
, %
= ;
RL0 RL1 RL2 RL3 RL4 RL5 RL6 RL7
Rysunek 7-C Schemat matrycy klawiatury
Systemy mikroprocesorowe
85
<
>
A
B
C
D
E
F
7
8
4
5
1
2
9
6
3
,
0
-
÷
+
*
;
%
SHIFT
CTRL
=
Rysunek 7-D Schemat rozmieszczenia przycisków klawiatury
Systemy mikroprocesorowe
86
Systemy mikroprocesorowe
87
Systemy mikroprocesorowe
88
3.6 Ćwiczenie 8 – port równoległy w trybie 1
3.6. Opis pakietu z układem 8255
Adres bazowy układu 8255 wynosi 170H.
Schemat ideowy pakietu programowalnego układu równoległych we/wy binarnych przedstawia rysunek 6.5, zaś
rysunek 6.6 przedstawia schemat ideowy modułu pomocniczego (zadawanie nastaw). Pakiet sterownika
współpracuje z systemem mikroprocesorowym poprzez 8-mio bitową szynę danych, 8-mio bitową szynę adresową
i szyną sterującą.
Układ logiki wyboru zbudowany jest na elementach 74HCT138 (U2 i U3). Umożliwia on zapis/odczyt układu
8255 (U4) przez mikroprocesor. Na wejście dekodera U3 podane są trzy starsze bity (A7, A6, A5) młodszego
bajtu adresu. Jedno z wybranych wyjść tego dekodera (pole kontaktowe JP3) steruje dekoderem U2: na wejścia
tego dekodera podane są trzy kolejne bity adresowe (A4, A3, A2). Dwa najmłodsze bity adresowe (A1, A0)
podane są bezpośrednio na układ (U4).
Ponieważ podczas realizacji rozkazu:
out
dx,al
procesor 8088/8086 wystawia 16-to bitowy adres urządzenia zewnętrznego, zaś opisany powyżej dekoder dekoduje
tylko mniej znaczący bajt adresu, dlatego też bardziej znaczący bajt dekodowany jest na pakiecie ekspandera
włączonego w jedno z gniazd rozszerzających na płycie głównej IBM PC XT/AT. Sygnał ten opisany jako SB0
(pole kontaktowe JP1), podawany jest poprzez pole kontaktowe JP2 na wejście E1 dekodera U3.
Układ 74HCT245 (U1) jest buforem szyny danych: jest on aktywny tylko w tych momentach, gdy układ logiki
wyboru wykrywa żądanie dostępu do elementu 8255 (U4) (zapis lub odczyt). Kierunek transmisji określany jest
poziomem sygnału I/OR.W pozostałych momentach jest on ustawiany w stan wysokiej impedancji.
Port PA7÷PA0 układu 8255 pracuje w trybie wejściowym, przy czym sygnały wejściowe podawane na złącze
P1 buforowane są przez układ 74HCT245 (U9), zaś monitorowanie stanu wejść tego portu następuje na zespole diod
typu LED sterowanych wzmacniaczami 7406 (U7, U17).
Port PB7÷PB0 układu 8255 pracuje w trybie wyjściowym: sygnały buforowane układem 74HCT245 (U10)
podawane są na złącze P2, zaś monitorowanie stanu wyjść tego portu następuje na zespole diod typu LED
sterowanych wzmacniaczami 7406 (U12, U14).
Sygnały PC1 i PC5 podawane są poprzez układy opóźniające (odpowiednio C5 i R27 oraz C7 i R29) na złącza
wyjściowe (sygnał OBF
B
na złączu P1 i sygnał IBF
A
na złączu P2); układy czasowe zbudowane na multiwibratorze
U16 mają przedłużyć czas trwania tych impulsów (do około 1[sek]).
Zespół manipulatora B55T1_1 zasilany jest napięciem 5[V] (+5CC) uzyskiwanym ze stabilizatora monolitycznego U20
typu L7805. Brzęczyk BZ1 sygnalizuje stan zwarcia linii +5CC do masy (VSS).
Systemy mikroprocesorowe
89
Rys. 6.5 Schemat pakietu do transmisji równoległej.
Systemy mikroprocesorowe
90
Rys. 6.6 Schemat modułu pomocniczego
Systemy mikroprocesorowe
91
3.7 Ćwiczenie 9, 14 – transmisja szeregowa asynchroniczna lub synchroniczna
3.7.1. Opis pakietu sterownika transmisją szeregową
Adres bazowy układu 8253 wynosi 1C0H.
Adres bazowy układu 8251 wynosi 1CEH.
Adres bazowy układu 8250 wynosi 2F8H.
Schemat ideowy pakietu programowalnego układu transmisji szeregowej przedstawia . Pakiet sterownika
współpracuje z systemem mikroprocesorowym poprzez 8-mio bitową szynę danych, 8-mio bitową szynę adresową i
szynę sterującą. Układ logiki wyboru zbudowany jest na elementach 74HCT138 (U1 i U2) i 74LS00 (U3).
Umożliwia on zapis/odczyt danej do/z układu licznika 8253 (U5) i układu USART 8251A (U7) przez procesor
(poprzez sterowanie układem bufora danych 74LS244 (U4)). Na wejście dekodera U1 podane są trzy starsze bity
(AB7, AB6, AB5) młodszego bajtu adresu. Sygnał sterujący podany jest z jednego z wybranych wyjść tego
dekodera i poprzez pola kontaktowe G1 i G4 steruje dekoderem U2 (sygnałem aktywnym jest stan "0" logicznego
podanego na wejście E2), zaś na wejście E1 podany jest sygnał będący iloczynem sygnałów zapisu i odczytu
(I/OW i I/OR, stan aktywny "0" logiczne). Na wejścia A2, A1 i A0 tego dekodera podane są trzy kolejne bity
adresowe (AB4, AB3, AB2). Dwa najmłodsze bity adresowe (A1, A0) szyny adresowej podane są bezpośrednio
na układy U5 i U7.
Ponieważ podczas realizacji rozkazu:
out
dx,al
procesor 8088/8086 wystawia 16-o bitowy adres urządzenia zewnętrznego, zaś opisany powyżej dekoder dekoduje
tylko mniej znaczący bajt adresu, dlatego też bardziej znaczący bajt dekodowany jest na pakiecie ekspandera
włożonego w jeden ze slotów IBM XT/AT. Sygnał ten opisany jako SB0 (pole kontaktowe G3), podawany jest
poprzez bramkę NAND na wejście zezwalające E3 dekodera U1. Układ 74LS245 (U4) jest dwukierunkowym
buforem szyny danych: jest on aktywny tylko w tych momentach, gdy układ logiki wyboru wykrywa żądanie
dostępu do licznika 8253 (U5) bądź układu 8251A (U7). W pozostałych momentach jest on ustawiany w stan
wysokiej impedancji, zaś kierunek transmisji określany jest poziomem sygnału I/OR i I/OW.
Licznik drugi układu 8253 (U5) pracuje w trybie podziału częstotliwości (sygnał podany na wejście zegarowe CLK2
ma częstotliwość
Φ2TTL=4.77/2 [MHz], maksymalny współczynnik podziału uzyskiwany na tym liczniku wynosi
k = 65535). Sygnał z wyjścia OUT2 licznika podawany jest na wejście TxC układu USART oraz poprzez bufor
U8D na złącze wyjściowe toru transmisji szeregowej RS232C umieszczone na płycie czołowej pakietu.
Wyjścia TxD, RTS i DTR układu USART podawane są poprzez bufory U8A, U8B i U8C na złącze transmisji
szeregowej. Zadaniem układu U8 jest przepoziomowanie sygnału o poziomach TTL na poziomy przewidziane w
standardzie RS232C, tj. +3V - +15 i -3V - -15V
Odwrotnego przepoziomowania dokonuje układ U10, który sygnały RxD, DSR, CTS, RxC przychodzące z łącza
transmisyjnego w standardzie RS232 przepoziomowuje na standard TTL. Stan linii RxD, TxD, RTS, CTS, DSR i
DTR jest monitorowany przez zespół diod świecących umieszczonych na płycie czołowej pakietu: napięcie
dodatnie powoduje zaświecenie diody czerwonej, zaś ujemne - zielonej. Linie TxRDY, RxRDY i TxEMPTY
podane są przez bramki nieodwracające U12 na wejścia bramek odwracających U11 z wyjściem typu otwarty
kolektor. Rozwiązanie to umożliwia wytworzenie sumarycznego sygnału przerywającego, podanego poprzez pole
kontaktowe G6 na wejście kontrolera przerwań umieszczonego na płycie mikroprocesora. Stan linii jest
monitorowany przez diody świecące D13, D14 i D15.
Poziomy sygnałów:
Stan logiczny
'1'
'0'
napięcie na liniach danych i sterujących układu 8251
+5V
0V
napięcie na liniach danych i sterujących złącza wyjściowego
-15V < U < -3V
+15V > U > +3V
stan diod świecących
świeci zielony LED
świeci czerwony LED
Uwaga: dla poprawnej pracy układu 8251A niezbędne jest podanie na wejście RxC (pin nr.17 złącza wyjściowego
G5) sygnału zegarowego z innego pakietu bądź z wyjścia TxC (pin nr.15 złącza wyjściowego G5).
Systemy mikroprocesorowe
92
3.7.2 Opis sygnałów złącza RS-232C (V.24)
Nr. styku
Nazwa
Opis sygnału
1 FGND
ziemia
ochronna
2 TxD
dane
nadawane
3 RxD
dane
odbierane
4 RTS
żądanie nadawania
5 CTS
gotowość do nadawania
6 DSR
gotowość DCE
7 GND
masa
sygnałowa
8
DCD
detekcja fali nośnej
9
10
11
12 SI
wskaźnik szybkości transmisji z DCE
13
14
15 TxC
zegar
nadajnika
16
17 RxC
zegar
odbiornika
18
19
20 DTR
gotowość DTE
21
22 RI
wskaźnik wywołania
23 DSRD
wybór
szybkości transmisji
24
25
Systemy mikroprocesorowe
93
3.7.3 Konstrukcja kabli do transmisji szeregowej
Systemy mikroprocesorowe
94
Rys. 7.3 Schemat pakietu do obsługi transmisji szeregowej.
Systemy mikroprocesorowe
95
3.8. Ćwiczenie 11 – Sterownik przerwań 8259A
3.8.1. Opis pakietu sterownika przerwań
Adres bazowy układu 8253: 160H.
Adres bazowy układu 8259A: 164H.
Adres układu startu bramki G2 licznika 8253: 168H
Adres wpisu do rejestru 74175: 16CH.
Pakiet sterownika współpracuje z systemem mikroprocesorowym poprzez 8-mio bitową szynę danych, 8-mio bitową
szynę adresową i szynę sterującą Układ logiki wyboru zbudowany jest na elementach 74HCT138 (U4 i U5), 7402
(U10), 74LS00 (U8) i 7410 (U15). Umożliwia on zapis/odczyt układu 8259A (U2) i 8253 (U3) oraz zapis do
rejestru 74175 (U11 i U12) przez procesor. Na wejście dekodera U5 podane są trzy starsze bity (A7, A6, A5)
młodszego bajtu adresu. Jedno z wybranych wyjść tego dekodera (pole kontaktowe JP3) steruje dekoderem U4:
na jego wejścia podane są trzy kolejne bity adresowe (A4, A3, A2). Dwa najmłodsze bity adresowe (A1, A0)
podane są bezpośrednio na układy U2 i U3.
Ponieważ podczas realizacji rozkazu:
out
dx,al
procesor 8088/8086 wystawia 16-to bitowy adres urządzenia zewnętrznego, zaś opisany powyżej dekoder dekoduje
tylko mniej znaczący bajt adresu, dlatego też bardziej znaczący bajt dekodowany jest na pakiecie ekspandera
włożonego w jedno z gniazd rozszerzających na płycie głównej IBM XT/AT. Sygnał ten opisany jako SB0
(pole kontaktowe JP2), podawany jest na wejście zezwalające E1 dekodera U5.
Układ 74HCT245 (U1) jest buforem szyny danych: jest on aktywny tylko w tych momentach, gdy układ logiki
wyboru wykrywa żądanie dostępu do elementów 8259A (U2), 8253 (U3), 74175 (U11,U12), zaś kierunek
transmisji określany jest poziomem sygnału I/OR. W pozostałych momentach jest on ustawiany w stan wysokiej
impedancji. Licznik programowalny 8253 (U3) pracuje w następujących trybach:
• licznik #0 może pracować w trybie podziału częstotliwości lub w trybie generowania przerwania po zliczeniu
do "0": sygnał "CLK" podawany jest z liczników binarnych 7493 (U6 i U7). Sygnał "OUT0" tego
licznika podawany jest na wejście "IRQ0" kontrolera przerwań.
• licznik #2 może pracować w trybie programowanego uniwibratora wyzwalanego z procesora. Koniec
generowanego impulsu wykrywany jest przez kontroler przerwań (przerwanie "IRQ2").
• licznik #1 pracuje w trybie zliczania impulsów, bramkowanych sygnałem wyzwalanym z licznika #2.
Impulsy podawane są z podzielników częstotliwości U6 i U7 bądź z zewnętrznego generatora: wybór
dokonywany jest przełącznikiem SW5.
Częstotliwość zegara systemowego wynosi
Φ2TTL = 4.77[MHz]/2. Rejestry 74175 (U11 i U12) wraz
ze wzmacniaczami 7407 (U13 i U14) i zespołem 8-miu diod typu LED mogą być wykorzystane w procesie
obsługi przerwań, np. do sygnalizacji numeru obsługiwanego aktualnie przerwania. Układ przerwań, poza
dwoma przerwaniami licznikowymi, może obsłużyć dodatkowo dwa przerwania (IRQ6 i IRQ7) generowane
przyciskami umieszczonymi na płycie czołowej pakietu. Drgania zestyków przycisków eliminowane
są układami R-S, zbudowanymi z elementów 7400 (U9).
Systemy mikroprocesorowe
96
Rys. 4.5 Schemat pakietu sterownika przerwań 8259A.
Systemy mikroprocesorowe
97
3.9 Ćwiczenie 12 - Licznik programowalny 8253.
3.9.1. Opis pakietu licznika 8253
Adres bazowy licznika 8253: 140H
Schemat ideowy pakietu programowalnych liczników przedstawia Rys. 3.4.
Pakiet sterownika współpracuje z systemem mikroprocesorowym poprzez 8-mio bitową szynę danych, 8-mio
bitową szynę adresową i szynę sterującą.
Układ logiki wyboru zbudowany jest na elementach 74HCT138 (U4 i U5) i 74HCT32 (U11). Umożliwia on
zapis/odczyt układu 8253 (U3) oraz podglądanie stanów sygnałów wejściowych i wyjściowych (tj. CLKn, GATEn,
OUTn) układu 8253 przez mikroprocesor (poprzez sterowanie dostępem do układu 74HCT245 (U1)). Na wejście
dekodera U5 podane są trzy starsze bity (A7, A6, A5) młodszego bajtu adresu. Jedno z wybranych wyjść tego
dekodera (pole kontaktowe JP3) steruje dekoderem U4. Na wejścia A2
÷A dekodera U4 podane są trzy kolejne bity
adresowe (A4, A3, A2) bajtu adresu. Dwa najmłodsze bity adresowe (A1, A0) podane są bezpośrednio na wejścia
adresowe A1 i A0 układu 8253 (U3).
Ponieważ podczas realizacji rozkazu:
out
dx,al
procesor 8088/8086 wystawia 16-bitowy adres urządzenia zewnętrznego, zaś opisany powyżej dekoder dekoduje
tylko mniej znaczący bajt adresu, dlatego też bardziej znaczący bajt dekodowany jest na pakiecie ekspandera
włożonego w jeden z slotów IBM PC XT/AT. Sygnał ten opisany jako SB0 (pole kontaktowe JP5 i JP5A)
podawany jest na wejście zezwalające E2 dekoder U5.
Układ 74HCT245 (U2) jest buforem szyny danych. Jest on aktywny tylko w tych momentach gdy układ logiki
wyboru wykrywa żądanie dostępu do elementu 8253 (U3). W pozostałych momentach jest on ustawiany w stan
wysokiej impedancji. Kierunek transmisji przez ten bufor określany jest poziomem sygnału I/OR.
Liczniki układu 8253 mogą pracować w wielu trybach (w zależności od potrzeb), z możliwością wyzwalania bądź z
przycisków umieszczonych na płycie czołowej pakietu (przyciski "ZEGAR", "BRAMKA", START") bądź też
mogą być sterowane przez mikroprocesor poprzez multiplekser 74157 (U10). Wybór trybu pracy dokonywany jest
przy pomocy przycisku "PRACA RĘCZNA / AUTO". Drgania zestyków przycisków eliminowane są przy pomocy
układów typ R-S (bramki 7400 U8 i U9).
Na płycie czołowej pakietu umieszczone są diody LED (D1
÷D6) monitorujące stany wejść/wyjść liczników układu
8253. Dodatkowo monitorowanie stanu wejść/wyjść wszystkich liczników układu 8253 może być realizowane
przez mikroprocesor poprzez układ buforowy 74HCT245. Zespół trzech liczników binarnych 7493 (U6, U7 i U14)
dokonuje wstępnego podziału częstotliwości zegara systemowego (4.77/2 [MHz]), zaś wybór sygnałów zegarowych
podawanych na układ 8253 (poprzez multiplekser 74157 U10) dokonywany jest w polach kontaktowych JP6, JP7 i
JP8.
Systemy mikroprocesorowe
98
Rys. 3.4 Schemat pakietu licznika 8253.
Systemy mikroprocesorowe
99
4. Polecenia programów narzędziowych używanych
w laboratorium mikroprocesorowym.
4.1 Polecenia debuggera na stanowiskach roboczych 8086.
Polecenia debuggera na stanowiskach roboczych 8086 znajdują się w oddzielnym zeszycie.
4.2 Polecenia edytora KOMPLET.EXE
4.2.1 Wywołanie edytora
Edytor KOMPLET używany w komputerach narzędziowych ćwiczeń 1, 2, 5 i 13 jest wywoływany automatycznie
po włączeniu komputera (AUTOEXEC.BAT). Edytor rozpoczyna pracę od polecenia „Nowy”. Pokazuje wtedy
katalog włożonej do napędu dyskietki. Dostępny jest tylko katalog główny dyskietki i pliki z rozszerzeniem .ASM.
Można wybrać jeden z nich wskazując go kursorem i naciskając <ENTER>. Można też napisać nową nazwę pliku
składającą się z jednego do ośmiu znaków. Nie podajemy rozszerzenia, które domyślnie przyjmowane jest jako
.ASM. Po wybraniu nazwy edytor przechodzi do edycji wybranego pliku.
4.2.2 Polecenia edycyjne edytora
Edytor KOMPLET w większości wykonuje standardowe polecenia edytorów znakowych. Dokładny wykaz poleceń
i ich opis można zobaczyć na ekranie po wywołaniu polecenia F1.
4.2.3 Polecenia z paska MENU
Naciśnięcie klawisza <ESC> otwiera pasek MENU. Polecenia MENU wybieramy wskazując je kursorem i
naciskając <ENTER>.
Inny sposób to naciśnięcie pierwszej litery nazwy polecenia. Powrót do edycji po naciśnięciu klawisza <ESC>.
-
Zachowaj - zapamiętanie na dyskietce zmian dokonanych w pliku źródłowym.
-
Nowy
- wybór innego pliku do edycji
-
Rezygnuj - wybór innego pliku do edycji bez zachowania starego
-
Symulator - zapamiętanie na dyskietce zmian dokonanych w pliku źródłowym, zawieszenie działania
edytora i przejście do programu SM_8080.EXE.
-
LST -
po poprzednim wykonaniu kompilacji można przeglądać plik o rozszerzeniu .LST Zawiera on
raport z kompilacji i ewentualny wykaz błędów wykrytych przez kompilator. Pliku tego nie
można edytować – jest tylko do odczytu.
-
ASM -
powrót do edycji pliku źródłowego.
Nie ma polecenia zakończenia pracy edytora i powrotu do systemu DOS. Wystarczy wyłączyć komputer.
4.3 Polecenia kompilatora i debuggera SM_8080.EXE
Program SM_8080.EXE przy współpracy z kartą procesora 8080 umożliwia:
- kompilowanie programów źródłowych napisanych w języku asemblera INTEL 8080
- bezpośrednie ładowanie kodów programu do pamięci procesora 8080
- uruchamianie i śledzenie programów załadowanych do pamięci procesora 8080
- modyfikację kodów znajdujących się w pamięci na poziomie bajtów lub rozkazów
4.3.1. Wywołanie programu
Program jest wywoływany z poziomu edytora KOMPLET przez wybranie opcji SYMULATOR. W tym momencie
edytor zapisuje na dyskietce zmiany w programie źródłowym. Wywołany program SM_8080.EXE pracuje z tym
samym plikiem roboczym co edytor. Ma ustawione opcje pozwalające na ładowanie kodów kompilowanego
programu bezpośrednio do pamięci karty z procesorem 8080.
Systemy mikroprocesorowe
100
4.3.2. Rodzaje plików używanych w programie
Nazwa.ASM - Plik lub kilka plików z kodem źródłowym programu. Jeden z plików jest głównym i może zawierać
odwołania dyrektywą .INCLUDE XXXXX.ASM do innych plików.
Nazwa.LST - Plik lub kilka plików tworzonych podczas kompilacji dla każdego z plików źródłowych Pliki te
zawierają wynik kompilacji w postaci adresów lokowania każdej z linii, kodów rozkazu i oznaczenia ewentualnych
błędów formalnych. Przy ponownej kompilacji treść plików .LST jest modyfikowana bez ostrzeżenia. Po powrocie
do edytora można się przełączyć na wyświetlanie pliku .LST i obejrzeć błędy wykryte przez kompilator.
Nazwa.HEX - Jeden plik o nazwie zgodnej z głównym plikiem źródłowym zawierający kod skompilowanego
programu w formacie heksadecymalnym. Plik może być użyty do nagrania pamięci stałej typu EEPROM. Pliki
.HEX generowane są przez kompilator tylko po odpowiedniej opcji w oknie OPCJE. Przy ponownej kompilacji
treść plików .HEX modyfikowana jest bez ostrzeżenia. Kody zapamiętane w pliku .HEX mogą zostać załadowane
do pamięci procesora 8080 przez wywołanie polecenia Ładuj. Przy bezpośredniej kompilacji programu do pamięci
nie należy używać tego polecenia.
4.3.3. Polecenia programu dostępne z poziomu MENU
Opcje -
ustawianie
żądanych opcji programu
Plik
- wybór z katalogu pliku roboczego
Kompiluj - kompilacja pliku roboczego .ASM - lokuje wynik zgodnie z opcjami
Ładuj -
ładowanie pliku .HEX do pamięci
Zapis
- zapis obszaru programu na pliku .HEX
Uruchom -
przejście do debuggera
Mikros. -
przełącznik dostępu do pamięci systemu 8080 lub wewnętrznej IBMa
RESET
- zerowanie rejestrów procesora - jak po reset
HELP -
wyświetlenie tekstu pomocy
WYJŚCIE - wyjście do systemu DOS
LEFT RIGHT
- przesuwanie kursora na wybraną czynność
ENTER
- wykonanie wybranej czynności
litera -
naciśnięcie pierwszej litery opisu czynności - wykonanie
4.3.4. Polecenia podczas ustawiania opcji
UP DOWN
- wybór ustawianego parametru
LEFT RIGHT - wybór odpowiedzi TAK NIE
ENTER -
wejście w edycję liczby - format heksadecymalny
ENTER
- wykonanie wybranej czynności
dowolny znak - powrót
4.3.5. Polecenia dostępne z poziomu debuggera
ESC
- powrót z debuggera do poziomu MENU
\ -
przejście do przeglądania i edycji pamięci
ENTER - wprowadzenie adresu początku wyświetlanego programu
HOME -
wyświetlanie programu od adresu wskazanego przez PC
INSERT - przełącznik trybu edycji lub wykonania rozkazów
Tryb wykonywania rozkazów (wykonaj)
F3 -
Ustawienie licznika rozkazów na linii wskazanej podświetleniem
F4 -
Wykonanie programu do linii wskazanej podświetleniem
F6 -
Wykonanie jednej pętli programu
F7 -
Wykonanie jednego rozkazu - wejście do podprogramu
F8 -
Wykonanie jednego rozkazu lub całego podprogramu
F9 -
wykonanie programu bez zatrzymania - do rozkazu RST 6
TAB, SPACJA - rozpoczęcie edycji rozkazu do wykonania
BS -
wycofanie znaku z bufora lub rezygnacja z polecenia
ENTER - polecenie wykonania edytowanego rozkazu
zmiana zawartości rejestrów - przez wykonanie rozkazu
UP/DOWN - przesunięcie podświetlenia rozkazu na ekranie dla F3 F4
Systemy mikroprocesorowe
101
GREY + - przełącznik używania etykiet dla disassemblowanego programu e-E
GREY - - przełącznik symulacyjnego wykonywania rozkazów s-S
DEL -
przełącznik dostępu do pamięci systemu 8080 lub wewnętrznej IBM-a
4.3.6. Tryb edycji pamięci (edycja)
TAB, SPACJA
- rozpoczęcie edycji rozkazu do wstawienia
' -
rozpoczęcie edycji łańcucha ASCII do wstawienia do pamięci
0-9 A-F
- rozpoczęcie edycji bajtów do wstawienia do pamięci
BS
- wycofanie znaku z bufora lub rezygnacja z polecenia
UP DOWN
- przesunięcie podświetlenia rozkazu na ekranie - gdzie wstawić
ENTER
- polecenie wpisania do pamięci edytowanego bufora
Ctrl ENTER
- wprowadzenie adresu początku wyświetlanej pamięci
UP DOWN
- przesuwanie obrazu wyświetlanej pamięci
PAGE DOWN
- wyświetlenie następnej strony programu
Ctrl PAGE ..
-następna lub poprzednia strona wyświetlanej pamięci
Ctrl O
- stan ekranu w momencie wywołania programu
dowolny znak
- powrót
4.3.7. Tryb edycji pamięci na pełnym ekranie
ESC
- powrót z debuggera do poziomu MENU
\ -
przejście do trybu wykonywania rozkazów - przeglądanie programu
ENTER
- wprowadzenie adresu początku wyświetlanej pamięci
TAB, SPACJA
- rozpoczęcie edycji rozkazu do wstawienia
'
- rozpoczęcie edycji łańcucha ASCII do wstawienia do pamięci
0-9, A-F
- rozpoczęcie edycji bajtów do wstawienia do pamięci
BS
- wycofanie znaku z bufora lub rezygnacja z polecenia
UP DOWN
- przesunięcie podświetlenia linii na ekranie - gdzie wstawić
LEFT RIGHT
- przesunięcie podświetlenia na wybrany bajt - gdzie wstawić
ENTER
- polecenie wpisania do pamięci edytowanego bufora
PAGE UP
- wyświetlenie poprzedniej strony programu
PAGE DOWN
- wyświetlenie następnej strony programu
Ctrl O
- stan ekranu w momencie wywołania programu
Systemy mikroprocesorowe
102
5. Lista rozkazów mikroprocesora 8080.
5.1 Grupa przesyłania danych
5.1.1 Grupa przesyłania danych między rejestrami
MOV
r1,r2
(r1)
← (r2)
flagi bez zmian
r1 = B C D E H
L
A
DDD = 0 1 2 3 4 5
7
r2 = B C D E H
L
A
SSS = 0 1 2 3 4 5
7
Kod
rozkazu 0 1 D D D S S S
XCHG (H)
↔ (D)
flagi bez zmian
(L) ↔ (E)
Kod
rozkazu 1 1 1 0 1 0 1 1
SPHL
(SP)
← (HL)
flagi bez zmian
Kod
rozkazu 1 1 1 1 1 0 0 1
5.1.2 Wpisywanie do rejestru danej bezpośredniej
MVI
r1,D8
(r1)
← bajt 2
flagi bez zmian
r1 = B C D E H
L
A
DDD = 0 1 2 3 4 5
7
Kod
rozkazu 0 0 D D D 1 1 0
Bajt 2
D8
LXI
rp,D16
(rl)
← bajt 2
flagi bez zmian
(rh)
← bajt 3
Rp =
B D H SP
DD =
0 1 2 3
Kod
rozkazu 0 0 DD 0 0 0 1
Systemy mikroprocesorowe
103
Bajt 2
LOW (D16)
Bajt 3
HIGH (D16)
5.1.3 Wpisywanie do pamięci danej bezpośredniej
MVI
M,D8
[HL] ← bajt 2
flagi bez zmian
Kod
rozkazu 0 0 1 1 0 1 1 0
Bajt 2
D8
5.1.4 Odczyt pamięci do rejestru z adresowaniem pośrednim
MOV
r1,M
(r1)
← [HL]
flagi bez zmian
r1
= B C D E H L
A
DDD = 0 1 2 3 4 5
7
Kod
rozkazu 0 1 D D D 1 1 0
LDAX rp
(A)
← [rp]
flagi bez zmian
Rp =
B D
SS =
0 1
Kod
rozkazu 0 0 SS 1 0 1 0
5.5 Zapis rejestru do pamięci z adresowaniem pośrednim
MOV
M,r2
[HL] ← (r2)
flagi bez zmian
R2
= B C D E H L
A
SSS = 0 1 2 3 4 5
7
Kod
rozkazu 0 1 1 1 0 S S S
STAX rp
[rp]
← (A)
flagi bez zmian
rp =
B D
DD =
0 1
Kod
rozkazu 0 0 DD 0 0 1 0
Systemy mikroprocesorowe
104
5.1.6 Wymiana zawartości pamięci (wierzchołek stosu) z parą rejestrów HL
XTHL (H)
↔ [SP+1]
flagi bez zmian
(L) ↔ [SP]
Kod
rozkazu 1 1 1 0 0 0 1 1
5.1.7 Odczyt pamięci do akumulatora z adresowaniem bezpośrednim
LDA
adr
(A) ← [adr]
flagi bez zmian
Kod
rozkazu 0 0 1 1 1 0 1 0
Bajt 2
LOW (adr)
Bajt 3
HIGH (adr)
5.1.8 Zapis akumulatora do pamięci z adresowaniem bezpośrednim
STA
adr
[adr] ←
(A) flagi
bez
zmian
Kod
rozkazu 0 0 1 1 0 0 1 0
Bajt 2
LOW (adr)
Bajt 3
HIGH (adr)
5.1.9 Odczyt pamięci do pary rejestrów HL z adresowaniem bezpośrednim
LHLD
adr
(HL) ← [adr]
flagi bez zmian
Kod
rozkazu 0 0 1 0 1 0 1 0
Bajt 2
LOW (adr)
Bajt 3
HIGH (adr)
5.1.10 Zapis pary rejestrów HL do pamięci z adresowaniem bezpośrednim
SHLD
adr
[adr] ← (HL)
flagi bez zmian
Kod
rozkazu 0 0 1 0 0 0 1 0
Bajt 2
LOW (adr)
Systemy mikroprocesorowe
105
Bajt 3
HIGH (adr)
5.2 Grupa rozkazów arytmetycznych
5.2.1 Dodawanie rejestru lub pamięci do akumulatora
ADD
r2
(A)
← (A)+(r2)
zmienione flagi Z S P CY AC
ADD
M
(A)
← (A)+[HL]
zmienione flagi Z S P CY AC
r2
= B C D E H L M A
SSS = 0 1 2 3 4 5 6 7
Kod
rozkazu 1 0 0 0 0 S S S
5.2.2 Dodawanie danej bezpośredniej do akumulatora
ADI
D8
(A)
← (A)+bajt 2
zmienione flagi Z S P CY AC
Kod
rozkazu 1 1 0 0 0 1 1 0
Bajt 2
D8
5.2.3 Dodawanie rejestru lub pamięci i przeniesienia do akumulatora
ADC
r2
(A)
← (A)+(r2)+CY
zmienione flagi Z S P CY AC
ADC
M
(A)
← (A)+[HL]+CY
zmienione flagi Z S P CY AC
R2
= B C D E H L M A
SSS = 0 1 2 3 4 5 6 7
Kod
rozkazu 1 0 0 0 1 S S S
5.2.4 Dodawanie danej bezpośredniej i przeniesienia do akumulatora
ACI
D8
(A)
← (A)+bajt 2+CY zmienione flagi Z S P CY AC
Kod
rozkazu 1 1 0 0 1 1 1 0
Bajt 2
D8
5.2.5 Dodawanie pary rejestrów do HL
DAD
rp
(HL)
← (HL)+(rp)
zmienione flagi Z S P CY AC
Systemy mikroprocesorowe
106
Rp =
B D H SP
DD =
0 1 2 3
Kod
rozkazu 0 0 DD 1 0 0 1
5.2.6 Odejmowanie rejestru lub pamięci od akumulatora
SUB
r2
(A)
← (A)-(r2)
zmienione flagi Z S P CY AC
SUB
M
(A)
← (A)-[HL] zmienione flagi Z S P CY AC
r2 = B C D E H
L
M
A
SSS = 0 1 2 3 4 5 6 7
Kod
rozkazu 1 0 0 1 0 S S S
5.2.7 Odejmowanie danej bezpośredniej od akumulatora
SUI
D8
(A)
← (A)-bajt 2 zmienione flagi Z S P CY AC
Kod
rozkazu 1 1 0 1 0 1 1 0
Bajt 2
D8
5.2.8 Odejmowanie rejestru lub pamięci i przeniesienia od akumulatora
SBB
r2
(A)
← (A)-(r2)-CY
zmienione flagi Z S P CY AC
SBB
M
(A)
← (A)-[HL]-CY
zmienione flagi Z S P CY AC
R2 = B C D E H
L
M
A
SSS = 0 1 2 3 4 5 6 7
Kod
rozkazu 1 0 0 1 1 S S S
5.2.9 Odejmowanie danej bezpośredniej i przeniesienia od akumulatora
SBI
D8
(A)
← (A)-bajt 2-CY
zmienione flagi Z S P CY AC
Kod
rozkazu 1 1 0 1 1 1 1 0
Bajt 2
D8
Systemy mikroprocesorowe
107
5.2.10 Korekcja dziesiętna – po rozkazach dodawania lub odejmowania
poprawia wynik do formatu BCD
DAA
zmienione
flagi
Z
S
P
CY
AC
Kod
rozkazu 0 0 1 0 0 1 1 1
5.2.11 Inkrementowanie rejestru lub pamięci
INR
r1
(r1)
← (r1)+1
zmienione flagi Z S P AC
INR
M
[HL]
← [HL]+1 zmienione flagi Z S P AC
R1
= B C D E H L M A
DDD = 0 1 2 3 4 5 6 7
Kod
rozkazu 0 0 D D D 1 0 0
5.2.12 Dekrementowanie rejestru lub pamięci
DCR
r1
(r1)
← (r1)-1
zmienione flagi Z S P AC
DCR
M
[HL]
← [HL]-1 zmienione flagi Z S P AC
R1
= B C D E H L M A
DDD = 0 1 2 3 4 5 6 7
Kod
rozkazu 0 0 D D D 1 0 1
5.2.13 Inkrementowanie pary rejestrów
INX
rp
(rp) ← (rp)+1
flagi bez zmian
rp =
B D H SP
DD =
0 1 2 3
Kod
rozkazu 0 0 DD 0 0 1 1
5.2.14 Dekrementowanie pary rejestrów
DCX
rp
(rp) ← (rp)-1
flagi bez zmian
Systemy mikroprocesorowe
108
rp =
B D H SP
DD =
0 1 2 3
Kod
rozkazu 0 0 DD 1 0 1 1
5.3 Grupa rozkazów logicznych
5.3.1 Iloczyn logiczny akumulatora i rejestru lub pamięci
ANA
r2
(A)
← (A) AND (r2)
zmienione flagi Z S P CY AC
ANA
M
(A)
← (A) AND [HL] zmienione flagi Z S P CY AC
r2 = B C D E H
L
M
A
SSS = 0 1 2 3 4 5 6 7
Kod
rozkazu 1 0 1 0 0 S S S
5.3.2 Iloczyn logiczny akumulatora i danej bezpośredniej
ANI
D8
(A)
← (A) AND bajt 2 zmienione flagi Z S P CY AC
Kod
rozkazu 1 1 1 0 0 1 1 0
Bajt 2
D8
5.3.3 Suma logiczna akumulatora i rejestru lub pamięci
ORA
r2
(A)
← (A) OR (r2)
zmienione flagi Z S P CY AC
ORA
M
(A)
← (A) OR [HL]
zmienione flagi Z S P CY AC
r2 = B C D E H
L
M
A
SSS = 0 1 2 3 4 5 6 7
Kod
rozkazu 1 0 1 1 0 S S S
5.3.4 Suma logiczna akumulatora i danej bezpośredniej
ORI
D8
(A)
← (A) OR bajt 2
zmienione flagi Z S P CY AC
Systemy mikroprocesorowe
109
Kod
rozkazu 1 1 1 0 0 1 1 0
Bajt 2
D8
5.3.5 Różnica symetryczna akumulatora i rejestru lub pamięci
XRA
r2
(A)
← (A) XOR (r2)
zmienione flagi Z S P CY AC
XRA
M
(A)
← (A) XOR [HL] zmienione flagi Z S P CY AC
r2
= B C D E H L M
A
SSS = 0 1 2 3 4 5 6 7
Kod
rozkazu 1 0 1 0 1 S S S
5.3.6 Różnica symetryczna akumulatora i danej bezpośredniej
XRI
D8
(A)
← (A) XOR bajt 2 zmienione flagi Z S P CY AC
Kod
rozkazu 1 1 1 0 1 1 1 0
Bajt 2
D8
5.3.7 Porównanie akumulatora i rejestru lub pamięci
CMP
r2
(A) - (r2)
zmienione flagi Z S P CY AC
CMP
M
(A) - [HL]
zmienione flagi Z S P CY AC
r2
= B C D E H L M A
SSS = 0 1 2 3 4 5 6 7
Kod
rozkazu 1 0 1 1 1 S S S
5.3.8 Porównanie akumulatora i danej bezpośredniej
CPI
D8
(A) - bajt 2
zmienione flagi Z S P CY AC
Kod
rozkazu 1 1 1 1 1 1 1 0
Bajt 2
D8
Systemy mikroprocesorowe
110
5.4 Rozkazy przesunięć bitów
5.4.1 Rotacja akumulatora w lewo
RLC
CY A7 A6 A5 A4 A3 A2 A1 A0
zmieniona tylko flaga CY
Kod
rozkazu 0 0 0 0 0 1 1 1
5.4.2 Rotacja akumulatora w prawo
RRC
A7 A6 A5 A4 A3 A2 A1 A0 CY
zmieniona tylko flaga CY
Kod
rozkazu 0 0 0 0 1 1 1 1
5.4.3 Rotacja akumulatora w lewo przez CY
RAL
CY A7 A6 A5 A4 A3 A2 A1 A0
zmieniona tylko flaga CY
Kod
rozkazu 0 0 0 1 0 1 1 1
5.4.4 Rotacja akumulatora w prawo przez CY
RAR
A7 A6 A5 A4 A3 A2 A1 A0 CY
zmieniona
tylko
flaga
CY
Kod
rozkazu 0 0 0 1 1 1 1 1
5.5 Rozkazy ogólne
5.5.1 Negacja akumulatora
CMA
(A)
← NOT (A)
flagi bez zmian
Kod
rozkazu 0 0 1 0 1 1 1 1
5.5.2 Negacja flagi CY
CMC
(CY)
← NOT (CY)
zmieniona tylko flaga CY
Systemy mikroprocesorowe
111
Kod
rozkazu 0 0 1 1 1 1 1 1
5.5.3 Ustawienie flagi CY
STC
(CY)
← 1
zmieniona tylko flaga CY
Kod
rozkazu 0 0 1 1 0 1 1 1
5.5.4 Rozkazy sterujące przyjmowaniem przerwań
EI
zezwolenie na przerwania
flagi bez zmian
Kod
rozkazu 1 1 1 1 1 0 1 1
DI
zabronienie
przerwań
flagi bez zmian
Kod
rozkazu 1 1 1 1 0 0 1 1
5.5.5 Oczekiwanie na przerwanie
HLT
czekaj
na
przerwanie
flagi
bez
zmian
Kod
rozkazu 0 1 1 1 0 1 1 0
5.5.6 Nic nie rób
NOP
nic
nie
rób
flagi
bez
zmian
Kod
rozkazu 0 0 0 0 0 0 0 0
5.6 Rozkazy skoków
5.6.1 Skok bezwarunkowy
JMP
adr
(PC) ← adr
flagi bez zmian
Kod
rozkazu 1 1 0 0 0 0 1 1
Bajt 2
LOW (adr)
Bajt 3
HIGH (adr)
Systemy mikroprocesorowe
112
5.6.2 Skoki warunkowe
JNZ
adr
(PC)
← adr jeżeli Z = 0, flagi bez zmian, CCC = 000
JZ
adr
(PC)
← adr jeżeli Z = 1, flagi bez zmian, CCC = 001
JNC
adr
(PC)
← adr jeżeli C = 0, flagi bez zmian, CCC = 010
JC
adr
(PC)
← adr jeżeli C = 1, flagi bez zmian, CCC = 011
JPO
adr
(PC)
← adr jeżeli P = 0, flagi bez zmian, CCC = 100
JPE
adr
(PC)
← adr jeżeli P = 1, flagi bez zmian, CCC = 101
JP
adr
(PC)
← adr jeżeli S = 0, flagi bez zmian, CCC = 110
JM
adr
(PC)
← adr jeżeli S = 1, flagi bez zmian, CCC = 111
Kod
rozkazu 1 1 C C C 0 1 0
Bajt 2
LOW (adr)
Bajt 3
HIGH (adr)
5.6.3 Bezwarunkowe wywołanie procedury
CALL adr
[SP-1]
← (PCH)
[SP-2]
← (PCL)
(SP)
← (SP-2)
(PC) ← adr
flagi bez zmian
Kod
rozkazu 1 1 0 0 1 1 0 1
Bajt 2
LOW (adr)
Bajt 3
HIGH (adr)
5.6.4 Warunkowe wywołanie procedury
CNZ adr
wykonuje się jeżeli Z = 0,
flagi bez zmian, CCC = 000
CZ adr
wykonuje
się jeżeli Z = 1,
flagi bez zmian, CCC = 001
CNC adr
wykonuje się jeżeli C = 0,
flagi bez zmian, CCC = 010
CC adr
wykonuje
się jeżeli C = 1,
flagi bez zmian, CCC = 011
CPO adr
wykonuje się jeżeli P = 0,
flagi bez zmian, CCC = 100
CPE adr
wykonuje się jeżeli P = 1,
flagi bez zmian, CCC = 101
CP adr
wykonuje
się jeżeli S = 0,
flagi bez zmian, CCC = 110
CM adr
wykonuje
się jeżeli S = 1,
flagi bez zmian, CCC = 111
Kod
rozkazu 1 1 C C C 1 0 0
Bajt 2
LOW (adr)
Bajt 3
HIGH (adr)
Systemy mikroprocesorowe
113
5.6.5 Bezwarunkowy powrót z procedury
RET
(PCL)
← [SP]
(PCH) ← [SP-1]
(SP)
← (SP+2)
flagi bez zmian
Kod
rozkazu 1 1 0 0 1 0 0 1
5.6.6 Warunkowy powrót z procedury
RNZ
wykonuje
się jeżeli Z = 0,
flagi bez zmian, CCC = 000
RZ
wykonuje
się jeżeli Z = 1,
flagi bez zmian, CCC = 001
RNC
wykonuje
się jeżeli C = 0,
flagi bez zmian, CCC = 010
RC
wykonuje
się jeżeli C = 1,
flagi bez zmian, CCC = 011
RPO
wykonuje
się jeżeli P = 0,
flagi bez zmian, CCC = 100
RPE
wykonuje
się jeżeli P = 1,
flagi bez zmian, CCC = 101
RP
wykonuje
się jeżeli S = 0,
flagi bez zmian, CCC = 110
RM
wykonuje
się jeżeli S = 1,
flagi bez zmian, CCC = 111
Kod
rozkazu 1 1 C C C 0 0 0
5.6.7 Krótkie wywołanie procedury
RST
0 NNN
=
0
adres = 0
RST
1 NNN
=
1
adres = 8
RST
2 NNN
=
2
adres = 10H
RST
3 NNN
=
3
adres = 18H
RST
4 NNN
=
4
adres = 20H
RST
5 NNN
=
5
adres = 28H
RST
6 NNN
=
6
adres = 30H
RST
7 NNN
=
7
adres = 38H
[SP-1] ← (PCH)
[SP-2]
← (PCL)
(SP)
← (SP-2)
(PC) ← adres
flagi bez zmian
Kod
rozkazu 1 1 N N N 1 1 1
adres 0 0 0 0 0 0 0 0 0 0 N N N 0 0 0
5.6.8 Skok bezwarunkowy pośredni
PCHL
(PC)
← (HL)
flagi bez zmian
Systemy mikroprocesorowe
114
Kod
rozkazu 1 1 1 0 1 0 0 1
5.7 Operacje na stosie
5.7.1 Wysłanie na stos pary rejestrów
PUSH rp
[SP-1]
← (rh)
[SP-2]
← (rl)
(SP)
← (SP-2)
flagi bez zmian
PUSH PSW
[SP-1]
← (A)
[SP-2]
← (FLAGI)
(SP)
← (SP-2)
flagi bez zmian
rp =
B D H
PSW
DD =
0 1 2 3
Kod
rozkazu 1 1 DD 0 1 0 1
5.7.2 Pobranie ze stosu pary rejestrów
POP
rp
(rh)
← [SP]
(rl)
← [SP+1]
(SP)
← (SP+2)
flagi bez zmian
POP
PSW
(A)
← [SP]
(FLAGI)
← [SP+1]
(SP)
← (SP+2)
flagi pobrane ze stosu
rp =
B D H
PSW
DD =
0 1 2 3
Kod
rozkazu 1 1 DD 0 0 0 1
5.8 Rozkazy wejścia - wyjścia
5.8.1 Pobranie danej z portu wejściowego
IN
port
(A)
← dana z portu
flagi bez zmian
Kod
rozkazu 1 1 0 1 1 0 1 1
Bajt 2
port
Systemy mikroprocesorowe
115
5.8.2 Wysłanie danej do portu wyjściowego
OUT
port
dana
do
portu
← (A)
flagi bez zmian
Kod
rozkazu 1 1 0 1 0 0 1 1
Bajt 2
port
System
y m
ikroprocesorowe
116
5.9 Lista roz
kaz
ów
mik
roprocesora - z
estaw
ienie grup roz
kaz
ów
ACCUMULATOR*
JUMP CALL
RETURN
RESTART
ROTATE
MOVE
(CONT
)
80 ADD
B
A8
XRA
B
C3 JMP
Adr
CD
CALL
Adr
C9
RET
C7 RST
0
07
RLC
58 MOV
E,B
81
ADD
C
A9
XRA
C
C2 JNZ
Adr
C4
CNZ
Adr
C0
RNZ
CF
RST
1
0F
RRC
59
MOV
E,C
82 ADD
D
AA XRA
D
CA JZ
Adr
CC
CZ
Adr
C8
RZ
D7
RST
2
17
RAL
5A MOV
E,D
83
ADD
E
AB
XRA
E
D2 JNC
Adr
D4
CNC
Adr
D0
RNC
DF
RST
3
1F
RAR
5B MOV
E,E
84
ADD
H
AC
XRA
H
DA JC
Adr
DC
CC
Adr
D8
RC
E7
RST
4
CONTROL
5C
MOV
E,H
85 ADD
L
AD XRA
L
E2 JPO
Adr
E4
CPO
Adr
E0
RPO
EF
RST
5
00
NOP
5D MOV
E,L
86
ADD
M
AE
XRA
M
EA
JPE Ad
r
EC
CPE
Ad
r E8
RPE
F7
RST
6
76
HL
T
5E MOV
E,M
87
ADD
A
AF
XRA
A
F2 JP
Adr
F4
CP
Adr
F0
RP
FF
RST
7
F3
DI
5F MOV
E,A
88
ADC
B
B0
ORA
B
FA JM
Adr
FC CM
Adr
F8
RM
STACK OPS
FB
EI
60 MOV
H,B
89
ADC
C
B1
ORA
C
E8
PCHL
C5 PUSH
B
MO
VE
61 MOV
H,C
8A
ADC
D
B2
ORA
D
MOV
ACC
LOAD
D5 PUSH
D
40 MOV
B,B
62 MOV
H,D
8B
ADC
E
B3
ORA
E
IMMEDIATE IMMEDIATE*
IMMEDIATE
E5 PUSH
H
41 MOV
B,C
63 MOV
H,E
8C
ADC
H
B4
ORA
H
06 MOV
B,D8
C6
ADI
D8
01 L
X
I
B,
D16
F5 PUSH
PSW
42 MOV
B,D
64 MOV
H,H
8D
ADC
L
B5
ORA
L
0E MOV
C,D8
CE
ACI
D8
11 L
X
I
D,
D16
C1 POP
B
43 M
OV
B,
E
65 MOV
H,L
8E
ADC
M
B6
ORA
M
16 MOV
D,D8
D6
SUI
D8
21 L
X
I
H,
D16
D1 POP
D
44 MOV
B,H
66 MOV
H,M
8F
ADC
A
B7
ORA
A
1E MOV
E,D8
DE
SBI
D8
31 L
X
I
SP,
D16
E1 POP
H
45 M
OV
B,
L
67 MOV
H,A
90
SUB
B
B8
CMP
B
26 MOV
H,D8
E6
ANI
D8
F1 POP
PSW*
46
MOV
B,M
68 MOV
L,B
91
SUB
C
B9
CMP
C
2E MOV
L,D8
EE
XRI
D8
DOUBLE ADD+
E3 XTHL
47 MOV
B,A
69 MOV
L,C
92
SUB
D
BA
CMP
D
36 MOV
M,D8
F6
ORI
D8
09 DAD
B
F9 SPHL
48 MOV
C,B
6A MOV
L,D
93
SUB
E
BB
CMP
E
3E MOV
A,D8
FE
CPI
D8
19 DAD
D
49 MOV
C,C
6B MOV
L,E
94
SUB
H
BC
CMP
H
INCREMENT DECREMENT
29 DAD
H
SPECIALS
4A MOV
C,D
6C MOV
L,H
95
SUB
L
BD
CMP
L
04 I
N
R**
B
05
DCR**
B
39 DAD
SP
EB XCHG
4B MOV
C,E
6D MOV
L,L
96
SUB
M
BE
CMP
M
0C I
N
R**
C
0D
DCR**
C
27 DAA*
4C MOV
C,H
6E MOV
L,M
97
SUB
A
BF
CMP
A
14 I
N
R**
D
15
DCR**
D
2F CM
A
4D MOV
C,L
6F M
OV
M
,A
98
SBB
B
1C I
N
R**
E
1D
DCR**
E
LO
AD/STO
R
E
37 ST
C+
4E
MOV
C,M
70 M
OV
M
,B
99
SBB
C
PSEUDO
24 INR**
H
25
DCR**
H
0A
LDAX
B 3F
CMC+
4F
MOV
C,A
71
MOV
M,C
9A SBB
D
2C I
N
R**
L
2D
DCR**
L
1A LDAX
D
50 MOV
D,B
72
MOV
M,D
9B SBB
E
ORG
Adr
34 I
N
R**
M
35
DCR**
M
2A
LHLD
Ad
r
51 MOV
D,C
73
MOV
M,E
9C SBB
H
END
3C I
N
R**
A
3D
DCR**
A
3A LDA
Adr
52 MOV
D,D
74
MOV
M,H
9D SBB
L
E
QU
D16
03 INX
B
0B
DCX
B
02 ST
AX
B
53 MOV
D,E
75
MOV
M,L
9E
SBB
M
SE
T
D16
INX D
1B
DCX
D
12 STAX
D
INTPUT/OUTPUT
54 MOV
D,H
77
MOV
M,A
9F SBB
A
DS.
D16
23 INX
H
2B
DCX
H
22 SHL
D
Adr
D3 OUT
D8
55 MOV
D,L
78 MOV
A,B
A0 ANA
B
DB
D8
33 INX
SP
3B
DCX
SP
32 STA
Adr
DB IN
D8
56 MOV
D,M
79 MOV
A,C
A1 ANA
C
DW
D16
57 MOV
D,A
7A MOV
A,D
A2 ANA
D
IF
D16
Hex
Decim
al
Binar
y
7B MOV
A,E
A3 ANA
E
ELSE
0BDH
189
10111101B
7 6 5 4 3 2 1 0
7C
MOV
A,H
A4
ANA
H
ENDIF
S
Z
0
AC
0
P
1
C
7D
MOV
A,L
A5
ANA
L
* = zm
ienia wszystkie f
lagi (C.Z.S.P.AC)
+ = zm
ienia tylko f
lag
ę CARRY
7E MOV
A,M
A6
ANA
M
PROC
** = zm
ienia wszystkie f
lagi z wyj
ątkiem
CARRY
7F MOV
A,A
A7
ANA
A
ENDP
System
y m
ikroprocesorowe
117
5.10 Lista roz
kaz
ów
mik
roprocesora 8080 – z
estaw
ienie w
ed
ług k
odów
00 NOP
25 DCR
H
4A
MOV
C,
D
6F
MOV
L,
A
94
SUB
H
B9
CMP
C
DE
SBI
D8
01 LXI
B,D16
26 MVI
H,D8
4B
MOV
C,E
70
MOV
M,B
95
SUB
L
BA
CMP
D
DF
RST
3
02 STAX
B
27 DAA
H
4C
MOV
C,
H
71
MOV
M,
C
96
SUB
M
BB
CMP
E
E0
RPO
03 INX
B
28
4D
MOV
C,
L
72
MOV
M,
D
97
SUB
A
BC
CMP
H
E1
POP
H
04 INR
B
29 DAD
H
4E
MOV
C,
M
73
MOV
M,
E
98
SBB
B
BD
CMP
L
E2
JPO
Adr.
05
DCR
B
2A
LHLD
H
4F
MOV
C,
A
74
MOV
M,
H
99
SBB C
BE
CMP
M
E3
XTHL
06 MVI
B,
D8
2B
DCX
H
50 MOV
D,
B
75
MOV
M,
L
9A
SBB
D
BF
CMP
A
E4
CPO
Adr.
07 RLC
2C
INR
L
51 MOV
D,C
76
HLT
9B
SBB
E
C0
RNZ
E5
PUSH
H
08
2D
DCR
L
52 MOV
D,
D
77
MOV
M,
A
9C
SBB
H
C1
POP
B
E6
ANI
D8
09 DAD
B
2E
MVI
L,
D8
53 MOV
D,
E
78
MOV
A,
B
9D
SBB
L
C2
JNZ
Adr.
E7
RST
4
0A
LDAX
B
2F
CMA
54
MOV
D,
H 79
MOV
A,
C
9E
SBB
M
C3
JMP
Adr.
E8
RPE
0B
DCX
B
30
55 MOV
D,
L
7A
MOV
A,
D
9F
SBB
A
C4
CNZ
Adr.
E9
PCHL
0C
INR
C
31 LXI
SP,
D16
56 MOV
D,
M
7B
MOV
A,
E
A0
ANA
B
C5
PUSH
B
EA
JPE
Adr.
0D
DCR
C
32 STA
Adr.
57 MOV
D,
A
7C
MOV
A,
H
A1
ANA
C
C6
ADI
D8
EB
XCHG
0E
MVI
C,
D8
33 INX
SP
58 MOV
E,
B
7D
MOV
A,
L
A2
ANA
D
C7
RST
0
EC
CPE
Adr.
0F
RRC
34
INR
M 59
MOV
E,C
7E
MOV
A,M
A3
ANA
E
C8
RZ
ED
10
35 DCR
M
5A
MOV
E,
D
7F
MOV
A,
A
A4
ANA
H
C9
RET
EE
XRI
D8
11 LXI
D,
D16
36 MVI
M,
D8
5B
MOV
E,
E
80
ADD
B
A5
ANA
L
CA
JZ
Adr.
EF
RST
5
12 STAX
D
37 STC
5C
MOV
E,
H
81
ADD
C
A6
ANA
M
CB
F0
RP
13 INX
D
38
5D
MOV
E,
L
82
ADD
D
A7
ANA
A
CC
CZ
F1
POP
PSW
14 INR
D
39 DAD
SP
5E
MOV
E,
M
83
ADD
E
A8
XRA
B
CD
CALL
Adr.
F2
JP
Adr.
15
DCR D
3A
LDA Adr.
5F
MOV
E,
A
84
ADD
H
A9
XRA
C
CE
ACI
D8
F3
DI
16 MVI
D,
D8
3B
DCX
SP
60 MOV
H,
B
85
ADD
L
AA
XRA
D
CF
RST
1
F4
CP
17 RAL
3C
INR
A
61 MOV
H,
C
86
ADD
M
AB
XRA
E
D0
RNC
F5
PUSH
PSW
18
3D
DCR
A
62 MOV
H,
D
87
ADD
A
AC
XRA
H
D1
POP
D
F6
ORI
D8
19 DAD
D
3E
MVI
A,
D8
63 MOV
H,
E
88
ADC
B
AD
XRA
L
D2
JNC
Adr.
F7
RST
6
1A
LDAX
D
3F
CMC
64
MOV
H,
H
89
ADC C
AE
XRA
M
D3 OUT
D8
F8
RM
1B
DCX
D
40 MOV
B,
B
65 MOV
H,
L
8A
ADC
D
AF
XRA
A
D4
CNC
Adr.
F9
SPHL
1C
INR
E
41 MOV
B,
C
66 MOV
H,
M
8B
ADC
E
B0
ORA
B
D5
PUSH
D
FA
JM
Adr.
1D
DCR
E
42 MOV
B,
D
67 MOV
H,
A
8C
ADC
H
B1
ORA
C
D6
SUI
D8
FB
EI
1E
MVI
E,
D8
43 MOV
B,
E
68 MOV
L,
B
8D
ADC
L
B2
ORA
D
D7
RST
2
FC
CM
1F
RAR
44 MOV
B,
H
69 MOV
L,
C
8E
ADC
M
B3
ORA
E
D8
RC
FD
20
45 MOV
B,
L
6A
MOV
L,
D
8F
ADC
A
B4
ORA
H
D9
FE
CPI
D8
21 LXI
H,
D16
46 MOV
B,
M
6B
MOV
L,
E
90
SUB
B
B5
ORA
L
DA
JC
Adr.
FF
RSI
7
22 SHLD
Adr.
47 MOV
B,
A
6C
MOV
L,
H
91
SUB
C
B6
ORA
M
DB
IN
D8
23 INX
H
48 MOV
C,
B
6D
MOV
LL,
92
SUB
D
B7
ORA
A
DC
CC
Adr.
24 INR
H
49 MOV
C,C
6E
MOV
L,M
93
SUB
A
B8
CMP
B
DD
Systemy mikroprocesorowe
118