background image

Systemy mikroprocesorowe 

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 

 
 

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 

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 

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 

procedury 

INIT  

ENDP   

 

 

 

;Zakończenie definicji procedury 

 
 
CZYWYJ 

PROC 

    ;Definicja 

procedury 

  ... 

    ;Treść procedury 

  ... 
  ... 
  RET 

    ;Powrót 

procedury 

CZYWYJ 

ENDP   

 

 

 

;Zakończenie definicji procedury 

 
 
ZAKON  

PROC 

    ;Definicja 

procedury 

  ... 

    ;Treść procedury 

  ... 
  ... 
  RET 

    ;Powrót 

procedury 

ZAKON  

ENDP   

 

 

 

;Zakończenie definicji procedury 

 
PROGR  

ENDS 

    ;Koniec 

definicji 

segmentu 

programu 

 

 

END 

 

 

 

 

;Koniec źródła programu 

background image

Systemy mikroprocesorowe 

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

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 

procedury 

 

 

ENDP   

 

 

 

;Zakończenie definicji procedury 

CZYWYJ 

PROC 

    ;Definicja 

procedury 

  ... 

    ;Treść procedury 

__ETK00: ... 

    ;Etykieta 

lokalna 

procedurze 

  ... 
  RET 

    ;Powrót 

procedury 

 

ENDP   

 

 

 

;Zakończenie definicji procedury 

 
 
ZAKON  

PROC 

    ;Definicja 

procedury 

  ... 

    ;Treść procedury 

__ETK00: ... 

    ;Etykieta 

lokalna 

procedurze 

 ... 

  ... 
  RET 

    ;Powrót 

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 

 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 

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 

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 

 
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 

Zapis bufora nadajnika, odczyt bufora odbiornika 

BAZOWY+0 1 

Mniej 

znaczący bajt dzielnika 

BAZOWY+1 

Rejestr aktywacji przerwań 

BAZOWY+1 1 

Bardziej 

znaczący bajt dzielnika 

BAZOWY+2 X 

Rejestr 

identyfikacji przerwań (tylko odczyt) 

BAZOWY+3 

Rejestr parametrów transmisji 

BAZOWY+4 

Rejestr sterowania modemu 

BAZOWY+5 

Rejestr stanu transmisji 

BAZOWY+6 

Rejestr stanu modemu 

BAZOWY+7 

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 

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 

 

Uwagawpisanie "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 

 

0 blokada 

zliczania 

− 

odblokowanie zliczania 

− 

inicjacja zliczania 

− 

blokada zliczania, 

ustawienie wyjścia w stan "1" 

inicjacja zliczania 

odblokowanie zliczania 

blokada zliczania, 

ustawienie wyjścia w stan "1" 

inicjacja zliczania 

odblokowanie zliczania 

blokada zliczania 

 

odblokowanie zliczania 

− 

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 

 

 

odczyt rejestrów IRR i IRS 

BAZOWY+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 DRrejestr 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 

 

= "1" 

matryca znaków 5*10 punktów 

= "0" 

matryca znaków 5*7 punktów 

 

I/D  

= "1" 

operacja inkrementacji (+1)  

I/D  

= "0" 

operacja dekrementacji (-1) 

 

= "1" 

dwie linie znakowe 

= "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 

 

10 

D0 

INTA 

D1 

WO 

D2 

STACK 

D3 

HLTA 

D4 

OUT 

D5 

M1 

D6 

INP 

D7 

MEMR 

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/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 

 

← 

→ 

SDL1 

 

↓ 

↑ 

SDL2 

 

SDL3 

 

c   

 

 

 

 

 

 

 

 

 

 

 

 

RL0  RL1  RL2  RL3  RL4  RL5  RL6  RL7 

 

Rys. 1 Schemat matrycy klawiatury. 

 
 
 

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 

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 

 

DDD = 0 1 2 3 4  5 

 

7

r2 = B C D E H 

 

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 

 

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 

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 

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 

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 

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 

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

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   

 

(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 

   adres = 0 

RST 

 1  NNN 

   adres = 8 

RST 

 2  NNN 

   adres = 10H 

RST 

 3  NNN 

   adres = 18H 

RST 

 4  NNN 

   adres = 20H 

RST 

 5  NNN 

   adres = 28H 

RST 

 6  NNN 

   adres = 30H 

RST 

 7  NNN 

   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 zmia

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 

A8 

XRA 

C3 JMP 

Adr 

CD 

CALL 

Adr 

C9 

 

RET 

C7 RST 

 

07  

RLC 

58 MOV 

E,B 

81 

ADD 

A9 

XRA 

C2 JNZ 

Adr 

C4 

CNZ 

Adr 

C0 

 

RNZ 

CF 

RST 

 

0F  

RRC 

59 

MOV 

E,C 

82 ADD 

AA XRA 

CA JZ 

Adr 

CC 

CZ 

Adr 

C8 

 

RZ 

D7 

RST 

 

17  

RAL

 

5A MOV 

E,D 

83 

ADD 

AB 

XRA 

D2 JNC 

Adr 

D4 

CNC 

Adr 

D0 

 

RNC 

DF 

RST 

 

1F  

RAR 

5B MOV 

E,E 

84 

ADD 

AC 

XRA 

DA JC 

Adr 

DC 

CC 

Adr 

D8 

 

RC 

E7 

RST 

 CONTROL 

5C 

MOV 

E,H 

85 ADD 

AD XRA 

E2 JPO 

Adr 

E4 

CPO 

Adr 

E0 

 

RPO 

EF 

RST 

 

00  

NOP 

5D MOV 

E,L 

86 

ADD 

AE 

XRA 

EA 

JPE Ad

EC 

CPE 

Ad

r E8

 

 

RPE 

F7

 

RST 

 

76  

HL

T

 

5E MOV 

E,M 

87 

ADD 

AF 

XRA 

F2 JP 

Adr 

F4 

CP 

Adr 

F0 

 

RP 

FF 

RST 

 

F3  

DI 

5F MOV 

E,A 

88 

ADC 

B0 

ORA 

FA JM 

Adr 

FC CM 

Adr 

F8 

 

RM 

STACK OPS 

 

FB  

EI 

60 MOV 

H,B 

89 

ADC 

B1 

ORA 

E8

 PCHL 

 

  

 

 

 

 

C5 PUSH 

 MO

VE 

61 MOV 

H,C 

8A 

ADC 

B2 

ORA 

MOV  

ACC 

 

LOAD 

D5 PUSH 

 

40 MOV 

B,B 

62 MOV 

H,D 

8B 

ADC 

B3 

ORA 

IMMEDIATE IMMEDIATE* 

IMMEDIATE 

E5 PUSH 

 

41 MOV 

B,C 

63 MOV 

H,E 

8C 

ADC 

B4 

ORA 

06 MOV 

B,D8 

C6 

ADI 

D8 

01 L

X

B,

D16 

F5 PUSH 

PSW 

 

42 MOV 

B,D 

64 MOV 

H,H 

8D 

ADC 

B5 

ORA 

0E MOV 

C,D8 

CE 

ACI 

D8 

11 L

X

D,

D16 

C1 POP 

 

43 M

OV 

B,

E

 

65 MOV 

H,L 

8E 

ADC 

B6 

ORA 

16 MOV 

D,D8 

D6 

SUI 

D8 

21 L

X

H,

D16 

D1 POP 

 

44 MOV 

B,H 

66 MOV 

H,M 

8F 

ADC 

B7 

ORA 

1E MOV 

E,D8 

DE 

SBI 

D8 

31 L

X

SP,

D16 

E1 POP 

 

45 M

OV 

B,

L

 

67 MOV 

H,A 

90 

SUB 

B8 

CMP 

26 MOV 

H,D8 

E6 

ANI 

D8 

  

 

F1 POP 

PSW* 

 

46

 MOV 

B,M 

68 MOV 

L,B 

91 

SUB 

B9 

CMP 

2E MOV 

L,D8 

EE 

XRI 

D8 

DOUBLE ADD+ 

E3 XTHL 

 

 

47 MOV 

B,A 

69 MOV 

L,C 

92 

SUB 

BA 

CMP 

36 MOV 

M,D8 

F6 

ORI 

D8 

09 DAD 

F9 SPHL 

 

 

48 MOV 

C,B 

6A MOV 

L,D 

93 

SUB 

BB 

CMP 

3E MOV 

A,D8 

FE 

CPI 

D8 

19 DAD 

  

 

 

49 MOV 

C,C 

6B MOV 

L,E 

94 

SUB 

BC 

CMP 

INCREMENT DECREMENT 

29 DAD 

SPECIALS  

4A MOV 

C,D 

6C MOV 

L,H 

95 

SUB 

BD 

CMP 

04 I

N

R** 

05 

DCR** 

39 DAD 

SP 

EB XCHG 

  

4B MOV 

C,E 

6D MOV 

L,L 

96 

SUB 

BE 

CMP 

0C I

N

R** 

0D 

DCR** 

  

 

27 DAA* 

  

4C MOV 

C,H 

6E MOV 

L,M 

97 

SUB 

BF 

CMP 

14 I

N

R** 

15 

DCR** 

  

 

2F CM

  

4D MOV 

C,L 

6F M

OV 

M

,A

 

98 

SBB 

  

 

1C I

N

R** 

E

 

1D 

DCR** 

E

 

LO

AD/STO

R

37 ST

C+ 

  

4E

 MOV 

C,M 

70 M

OV 

M

,B

 

99 

SBB 

PSEUDO 

24 INR** 

25 

DCR** 

0A 

LDAX 

B 3F 

CMC+ 

 

 

4F 

MOV 

C,A 

71

 MOV 

M,C 

9A SBB 

 

2C I

N

R** 

L

 

2D 

DCR** 

L

 

1A LDAX 

  

 

 

50 MOV 

D,B 

72

 MOV 

M,D 

9B SBB 

 

ORG 

Adr 

34 I

N

R** 

M

 

35 

DCR** 

M

 

2A

 LHLD 

Ad

  

 

 

51 MOV 

D,C 

73

 MOV 

M,E 

9C SBB 

 

END 

 

3C I

N

R** 

3D 

DCR** 

3A LDA 

Adr 

  

 

 

52 MOV 

D,D 

74

 MOV 

M,H 

9D SBB 

L

 

 

E

QU 

D16 

03 INX 

0B 

DCX 

02 ST

AX 

  

 

 

53 MOV 

D,E 

75

 MOV 

M,L 

9E

 SBB 

M

 

 

SE

T

 

D16 

INX D 

1B 

DCX 

12 STAX 

INTPUT/OUTPUT  

54 MOV 

D,H 

77

 MOV 

M,A 

9F SBB 

 

DS. 

D16 

23 INX 

2B 

DCX 

22 SHL

D

 

Adr

 

D3 OUT 

D8 

 

55 MOV 

D,L 

78 MOV 

A,B 

A0 ANA 

 

DB 

D8 

33 INX 

SP 

3B 

DCX 

SP 

32 STA 

Adr 

DB IN 

D8 

 

56 MOV 

D,M 

79 MOV 

A,C 

A1 ANA 

 

DW 

D16 

 

  

 

 

 

 

  

 

 

 

 

57 MOV 

D,A 

7A MOV 

A,D 

A2 ANA 

 

IF 

D16 

 

Hex  

 

Decim

al 

 

 

Binar

  

 

 

 

 

  

 

7B MOV 

A,E 

A3 ANA 

 

ELSE 

 

 

0BDH 

 

 

 

189 

 

 

10111101B 

 

7 6 5 4 3 2 1 0 

7C 

MOV 

A,H 

A4 

ANA 

 

ENDIF 

 

 

  

 

  

 

 

 

  

 

AC 

7D 

MOV 

A,L 

A5 

ANA 

 

 

 

* = zm

ienia wszystkie f

lagi (C.Z.S.P.AC) 

  

 

+ = zm

ienia tylko f

lag

ę CARRY  

7E MOV 

A,M 

A6 

ANA 

 

PROC 

 

** = zm

ienia wszystkie f

lagi z wyj

ątkiem

 CARRY  

  

 

 

 

 

7F MOV 

A,A 

A7 

ANA 

 

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 

4A 

MOV 

C,

6F 

MOV 

L,

94 

SUB 

B9 

CMP 

DE 

SBI 

D8 

01 LXI 

B,D16 

 

26 MVI 

H,D8 

4B 

MOV 

C,E 

70 

MOV 

M,B 

95 

SUB 

BA 

CMP 

DF 

RST 

02 STAX 

 

27 DAA 

4C 

MOV 

C,

71 

MOV 

M,

96 

SUB 

BB 

CMP 

E0 

RPO 

 

03 INX 

 

28  

 

4D 

MOV 

C,

72 

MOV 

M,

97 

SUB 

BC 

CMP 

E1 

POP 

04 INR 

 

29 DAD 

4E 

MOV 

C,

73 

MOV 

M,

98 

SBB 

BD 

CMP 

E2 

JPO 

Adr.

 

05 

DCR 

 

2A 

LHLD 

4F 

MOV 

C,

74 

MOV 

M,

99 

SBB C 

BE 

CMP 

E3 

XTHL  

06 MVI 

B,

D8 

 

2B 

DCX 

50 MOV 

D,

75 

MOV 

M,

9A 

SBB 

BF 

CMP 

E4 

CPO 

Adr.

 

07 RLC 

 

 

2C 

INR 

51 MOV 

D,C 

76 

HLT 

 

9B 

SBB 

C0 

RNZ 

 

E5 

PUSH 

08  

 

 

2D 

DCR 

52 MOV 

D,

77 

MOV 

M,

9C 

SBB 

C1 

POP 

E6 

ANI 

D8 

09 DAD 

 

2E 

MVI 

L,

D8 

53 MOV 

D,

78 

MOV 

A,

9D 

SBB 

C2 

JNZ 

Adr.

 

E7 

RST 

0A 

LDAX 

 

2F 

CMA  

54 

MOV 

D,

H 79 

MOV 

A,

9E 

SBB 

C3 

JMP 

Adr.

 

E8 

RPE 

 

0B 

DCX 

 

30  

 

55 MOV 

D,

7A 

MOV 

A,

9F 

SBB 

C4 

CNZ 

Adr.

 

E9 

PCHL 

 

0C 

INR 

 

31 LXI 

SP,

D16 

56 MOV 

D,

7B 

MOV 

A,

A0 

ANA 

C5 

PUSH 

EA 

JPE 

Adr.

 

0D 

DCR 

 

32 STA 

Adr.

 

57 MOV 

D,

7C 

MOV 

A,

A1 

ANA 

C6 

ADI 

D8 

EB 

XCHG 

 

0E 

MVI 

C,

D8 

 

33 INX 

SP 

58 MOV 

E,

7D 

MOV 

A,

A2 

ANA 

C7 

RST 

EC 

CPE 

Adr.

 

0F 

RRC 

  

34 

INR 

M 59 

MOV 

E,C 

7E 

MOV 

A,M 

A3 

ANA 

C8 

RZ 

 

ED 

 

 

10  

 

 

35 DCR 

5A 

MOV 

E,

7F 

MOV 

A,

A4 

ANA 

C9 

RET 

 

EE 

XRI 

D8 

11 LXI 

D,

D16 

 

36 MVI 

M,

D8 

5B 

MOV 

E,

80 

ADD 

A5 

ANA 

CA 

JZ 

Adr.

 

EF 

RST 

12 STAX 

 

37 STC 

 

5C 

MOV 

E,

81 

ADD 

A6 

ANA 

CB 

 

 

F0 

RP 

 

13 INX 

 

38  

 

5D 

MOV 

E,

82 

ADD 

A7 

ANA 

CC 

CZ 

 

F1 

POP 

PSW 

14 INR 

 

39 DAD 

SP 

5E 

MOV 

E,

83 

ADD 

A8 

XRA 

CD 

CALL 

Adr.

 

F2 

JP 

Adr.

 

15 

DCR D 

 

3A 

LDA Adr.

 

5F 

MOV 

E,

84 

ADD 

A9 

XRA 

CE 

ACI 

D8 

F3 

DI 

 

16 MVI 

D,

D8 

 

3B 

DCX 

SP 

60 MOV 

H,

85 

ADD 

AA 

XRA 

CF 

RST 

F4 

CP 

 

17 RAL 

 

 

3C 

INR 

61 MOV 

H,

86 

ADD 

AB 

XRA 

D0 

RNC 

 

F5 

PUSH 

PSW 

18  

 

 

3D 

DCR 

62 MOV 

H,

87 

ADD 

AC 

XRA 

D1 

POP 

F6 

ORI 

D8 

19 DAD 

 

3E 

MVI 

A,

D8 

63 MOV 

H,

88 

ADC 

AD 

XRA 

D2 

JNC 

Adr.

 

F7 

RST 

1A 

LDAX 

 

3F 

CMC 

 

64 

MOV 

H,

89 

ADC C 

AE 

XRA 

D3 OUT 

D8 

F8 

RM 

 

1B 

DCX 

 

40 MOV 

B,

65 MOV 

H,

8A 

ADC 

AF 

XRA 

D4 

CNC 

Adr.

 

F9 

SPHL 

 

1C 

INR 

 

41 MOV 

B,

66 MOV 

H,

8B 

ADC 

B0 

ORA 

D5 

PUSH 

FA 

JM 

Adr.

 

1D 

DCR 

 

42 MOV 

B,

67 MOV 

H,

8C 

ADC 

B1 

ORA 

D6 

SUI 

D8 

FB 

EI 

 

1E 

MVI 

E,

D8 

 

43 MOV 

B,

68 MOV 

L,

8D 

ADC 

B2 

ORA 

D7 

RST 

FC 

CM 

 

1F 

RAR 

 

 

44 MOV 

B,

69 MOV 

L,

8E 

ADC 

B3 

ORA 

D8 

RC 

 

FD 

 

 

20  

 

 

45 MOV 

B,

6A 

MOV 

L,

8F 

ADC 

B4 

ORA 

D9 

 

 

FE 

CPI 

D8 

21 LXI 

H,

D16 

 

46 MOV 

B,

6B 

MOV 

L,

90 

SUB 

B5 

ORA 

DA 

JC 

Adr.

 

FF 

RSI 

22 SHLD 

Adr.

 

 

47 MOV 

B,

6C 

MOV 

L,

91 

SUB 

B6 

ORA 

DB 

IN 

D8 

 

 

 

23 INX 

 

48 MOV 

C,

6D 

MOV 

LL,

 

92 

SUB 

B7 

ORA 

DC 

CC 

Adr.

 

 

 

 

24 INR 

 

49 MOV 

C,C 

6E 

MOV 

L,M 

93 

SUB 

B8 

CMP 

DD 

 

 

 

 

 

background image

Systemy mikroprocesorowe 

118