mikroproce

background image

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.

background image

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

background image

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.

background image

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.

background image

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.

background image

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.

background image

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).

background image

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

background image

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.

background image

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.

background image

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

background image

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.

background image

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

background image

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

background image

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.

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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.

background image

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.

background image

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

background image

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,

background image

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).

background image

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)

background image

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ń

background image

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.

background image

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).

background image

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

background image

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,

background image

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

background image

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:

background image

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:

background image

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.

background image

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

background image

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.

background image

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

background image

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)

background image

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 -

-

background image

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

background image

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.

background image

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).

background image

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.


background image

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

background image

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.


background image

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.

background image

Systemy mikroprocesorowe

53

Rysunek 4-C Matryca generatora znaków

background image

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ń.

background image

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

background image

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

r r

e

je

st

w

Rys. 1.1 Organizacja wewnętrzna mikroprocesora 8080

background image

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

background image

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

background image

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


background image

Systemy mikroprocesorowe

60

background image

Systemy mikroprocesorowe

61

background image

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


background image

Systemy mikroprocesorowe

63

Rys. 2.2.1 Schemat blokowy pakietu.

background image

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

background image

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ę.

background image

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).


background image

Systemy mikroprocesorowe

67

background image

Systemy mikroprocesorowe

68

background image

Systemy mikroprocesorowe

69

background image

Systemy mikroprocesorowe

70

background image

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ć

background image

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

background image

Systemy mikroprocesorowe

73

background image

Systemy mikroprocesorowe

74

background image

Systemy mikroprocesorowe

75


background image

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.

background image

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.

background image

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].

background image

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

background image

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

background image

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


background image

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.

background image

Systemy mikroprocesorowe

83

background image

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

background image

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


background image

Systemy mikroprocesorowe

86

background image

Systemy mikroprocesorowe

87


background image

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).

background image

Systemy mikroprocesorowe

89


Rys. 6.5 Schemat pakietu do transmisji równoległej.

background image

Systemy mikroprocesorowe

90


Rys. 6.6 Schemat modułu pomocniczego

background image

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).

background image

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

background image

Systemy mikroprocesorowe

93

3.7.3 Konstrukcja kabli do transmisji szeregowej

background image

Systemy mikroprocesorowe

94


Rys. 7.3 Schemat pakietu do obsługi transmisji szeregowej.

background image

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).

background image

Systemy mikroprocesorowe

96

Rys. 4.5 Schemat pakietu sterownika przerwań 8259A.

background image

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.

background image

Systemy mikroprocesorowe

98

Rys. 3.4 Schemat pakietu licznika 8253.

background image

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.

background image

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

background image

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

background image

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

background image

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

background image

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)

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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)

background image

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)

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Systemy mikroprocesorowe

118


Wyszukiwarka

Podobne podstrony:
mikroprocesor 2
Opracowanie Zagadnień na egzamin Mikroprocki
PODSTAWY TECHNIK MIKROPROCESOROWYCH, Studia Pwr INF, Semestr IV, PTM
mim, studia Polibuda Informatyka, III semestr, mikroprocesory i mikrokontrolery (mim)
C1 Techniki mikroprocesorowe sprawozdanie
Anteny mikropaskowe cz3
04 system mikroprocesorowy i peryferia
mikroprocesorowy system sterowania skladem mieszanki silnika zasilanego gazem plynnym typ al700
Podstawy techniki mikroprocesor Nieznany
zadania egzaminacyjne dzienne (PTM), elektro, 1, Podstawy Techniki Mikroprocesorowej
80C51 pytania i odpowiedzi, elektro, 1, Podstawy Techniki Mikroprocesorowej
Mondeo mk3 wymiana mikroprzelacznika klapy bagaznika
mikroprocesory sprawko 1
zadania egzaminacyjne zaoczne 2006 07 (PTM), elektro, 1, Podstawy Techniki Mikroprocesorowej
Egzamin z PTC podst kombinacyjne, elektro, 1, Podstawy Techniki Mikroprocesorowej
Zablokowana Atmega1, elektronika, mikroprocesory, Różne

więcej podobnych podstron