Mikrokomputer 8020


Mikrokomputery jednoukładowe 8020 i 8021 różnią się między sobą przede wszystkim wielkością obudowy. Układ 8020 jest wytwarzany w obudowie 20-końcowej, a układ 8021 - w 28-końcowej. Układ 8020 ma więc mniejszą liczbę linii wejścia- wyjścia.
Funkcjonalnie, mikrokomputery 8020/21 są uproszczonymi wersjami układu 8048 - bazowego w rodzinie MCS-48 - z pewnymi modyfikacjami, o czym będzie mowa w dalszej części tego rozdziału. Mikrokomputery 8020/21 nie mają systemu przerwań.

Funkcje sygnałów są następujące:
P00 - P07 - (port 0) - 8-bitowy port we-wy;
P13 - P17 - (port 1 - układ 8020) - 5-bitowy port we-wy;
P10 - P17 - (port1 - układ 8021) - 8-bitowy port we-wy;
P20 - P23 - (port 2 - układ 8021) - 4-bitowy port we-wy, pełniący funkcję 4-bitowej magistrali przy współpracy z ekspanderem 8243;
PROG - wyjście sygnału sterującego do współpracy z ekspanderem 8243 (tylko w układzie 8021), używane przy odczytywaniu wewnętrznej pamięci programu;
T1 (Test 1) - wejście pracujące jako detektor przejścia przez 0V napięcia zewnętrznego sygnału wolnozmiennego; jest to, opcjonalnie, wejście sygnału logicznego; stan wejścia może być testowany za pomocą rozkazów skoków warunkowych JT1 i JNT1; po wykonaniu rozkazu STRT CNT - wejście sygnału zegarowego dla układu czasowo-licznikowego;
RESET - wejście zerujące, aktywny poziom wysoki;
XTAL1 - pierwsza końcówka do dołączenia rezonatora zewnętrznego; wejście zewnętrznego sygnału zegarowego;
XTAL2 - druga końcówka do dołączenia rezonatora zewnętrznego;
ALE - wyjście sygnału zegarowego, wyznaczającego cykle maszynowe o częstotliwości fxtal /30;
Ucc - zasilanie (+ 5,5 V +- 1 V);
Uss - masa (0 V).

Jednostka arytmetyczno-logiczna, rejestry użytkowe

Jednostka arytmetyczno-logiczna mikrokomputerów 8020 i 8021 może wykonywać takie same operacje, jak w układzie 8048. Podstawowym rejestrem jest 8-bitowy akumulator A, uzupełniony znacznikami: przeniesienia C i przeniesienia pomocniczego AC. Znaczniki są pojedynczymi przerzutnikami - nie ma słowa stanu programu. Nie ma też znaczników programowych.

Pamięć programu, licznik rozkazów

Układy 8020 i 8021 zawierają wewnętrzną pamięć programu typu ROM, o pojemności 1024 (1 K) słów 8-bitowych, adresowaną przez konwencjonalny 10-bitowy licznik rozkazów PC. Nie ma możliwości dołączania zewnętrznej pamięci programu.

Pamięć danych, stos

Wewnętrzna pamięć danych układów 8020 i 8021 (typu RAM) ma pojemność 64 słów 8-bitowych. Jej organizację przedstawiono na rys.
 63 +-----------------+        
 .. |                 |
 .. |                 |
 .. |      Pamięć     |
 .. |   użytkownika   |
 .. |                 |
 24 |                 |
    +-----------------+
 23 |   8-poziomowy   |
 .. |      stos       |
 .. |      lub        |
 .. |     pamięć      |
  8 |   użytkownika   | 
    +-----------------+
  7 |       R7        | \
    +-----------------+ |
    |       R6        | |
    +-----------------+ |
    |       R5        | |  
    +-----------------+ |  Zbiór rejetrów 
    |       R4        |  \
    +-----------------+  / roboczych
    |       R3        | |
    +-----------------+ |
    |       R2        | |
    +-----------------+ |
    |       R1        | |
    +-----------------+ |
  0 |       R0        | /                   
    +-----------------+
Pierwszych osiem słów pamięci (o adresach 0-7) stanowi zbiór (jedyny) uniwersalnych rejestrów roboczych R0...R7. Słowa te mogą być adresowane bezpośrednio, a cała pamięć - pośrednio, poprzez rejestry R0 i R1.

Część pamięci o adresach od 8 do 23 to 8-poziomowy stos adresowany przez 3-bitowy wskaźnik stosu SP. Wskaźnik stosu jest zerowany w czasie inicjowania systemu, zwiększany o 1 przy zapisywaniu na stosie, a zmniejszany o 1 przy odczytywaniu ze stosu. Nie może on być programowo zmieniany ani odczytywany. Przy skoku do podprogramu na stosie zapisuje się wyłącznie stan licznika rozkazów (nie ma słowa stanu). Poza tymi różnicami organizacja i wykorzystanie stosu są podobne, jak w układzie 8048 (patrz punkt 2.3).

Nie ma możliwości dołączania zewnętrznej pamięci danych.

Wejście-wyjście

Porty P0, P1, P2
Wszystkie porty mikrokomputerów 8020 i 8021 mają budowę podobną do portów P1 i P2 mikrokomputera 8048 (patrz punkt 2.4.1). Każda z linii portów P0, P1 i P2 może pracować jako wejście lub wyjście, z możliwością mieszania linii wejściowych i wyjściowych w jednym porcie. Zasady wykorzystania portów są takie, jak podane w punkcie 2.4.1 z jedną tylko różnicą - mikrokomputery 8020/21 nie wykonują rozkazów realizujących operacje logiczne na zawartościach portów. W mikrokomputerze 8021 dwie linie P10 i P11 mają zwiększoną moc wyjściową. Maksymalny prąd wyjściowy w stanie niskim wynosi dla tych wyjść: Iolmax = 7 mA (przy Uol = 2,5 V).

WejŚcie T1
Wejście T1 mikrokomputerów 8020/21 ma specjalną budowę, umożliwiającą wykorzystanie go jako detektora przejścia przez 0 V (ang. zero-cross detector) napięcia sygnału wolnozmiennego, dołączonego poprzez kondensator o pojemności 1 uF rys.

Może być testowany sygnał o częstotliwości od 50 do 1000 Hz i napięciu międzyszczytowym od 1 do 3 V. Wartość logiczna sygnału T1 (wewnątrz układu) zmienia się na 1 w chwili, kiedy narastające napięcie zewnętrzne osiąga wartość 0 V. Zmiana wartości logicznej na 0 następuje po osiągnięciu przez malejące napięcie zewnętrzne wartości równej w przybliżeniu - 100mV. Histereza jest wprowadzona celem uniknięcia wielokrotnych zmian sygnału logicznego przy przełączaniu.
Struktura wejścia T1 może być zmieniona w wyniku dołączenia opornika polaryzującego.
Może ją określić użytkownik, zamawiając maskę pamięci ROM. Wejście T1 jest wówczas normalnym wejściem sygnału logicznego TTL. W obu powyższych przypadkach, podobnie jak w układzie 8048, sygnał logiczny na T1 może być testowany za pomocą rozkazów skoku JT1 i JNT1. Może być on także sygnałem zegarowym dla układu czasowo-licznikowego (po uruchomieniu licznika rozkazem STRT CNT).

Rozbudowa wejŚcia-wyjŚcia
Nie jest możliwe dołączanie do mikrokomputera 8020 zewnętrznych układów wejścia-wyjścia. Mikrokomputer 8021 może natomiast współpracować z układem ekspandera 8243. Sposoby dołączania ekspandera i komunikacji z nim są takie same, jak dla układu 8048.

UkŁad czasowo-licznikowy

Zasady działania i wykorzystywania układu czasowo-licznikowego w mikrokomputerach 8020/21 i 8048 są bardzo podobne. Układ ten zawiera 8-bitowy licznik (liczący do przodu) i może pracować jako czasomierz (po uruchomieniu rozkazem STRT T) lub jako licznik impulsów zewnętrznych z wejścia T1 (po uruchomieniu rozkazem STRT CNT). Zatrzymanie zliczania następuje w wyniku działania rozkazu STOP TCNT. Przy przepełnieniu licznika do znacznika przepełnienia TF wpisuje się jedynka. Znacznik jest testowany i zerowany rozkazem JTF. Nie jest on zerowany przy inicjowaniu systemu sygnałem RESET (inaczej niż w 8048).

Podstawowe parametry czasowe układu czasowo-licznikowego, przy częstotliwości sygnału zegarowego 3 MHz (cykl rozkazowy 10ms), są następujące:
- okres zegara taktującego licznik w trybie czasomierza - Tt = 320 us,
- maksymalny okres przerwań zegarowych - TDmax = 81,92 ms,
- maksymalna częstotliwość impulsów na T1, zliczanych w trybie licznika - fCNTmax = 33kHz.

Zegar systemowy, cykl rozkazowy

Mikrokomputery 8020/21 zawierają generator wytwarzający sygnał zegarowy, którego częstotliwość zależy od wartości elementu zewnętrznego, dołączonego do końcówek XTAL. Elementem tym może być rezonator kwarcowy
lub cewka indukcyjna.
Możliwe jest także wykorzystanie zewnętrznego sygnału zegarowego, podanego na XTAL1
Częstotliwość sygnału zegarowego fxtal powinna być nie mniejsza niż 600 kHz i nie większa niż 3,58 MHz. Przykładowo, aby fxtal = 3 MHz, należy dołączyć cewkę o indukcyjności 330 uH lub rezonator kwarcowy 3 MHz.

Na cykl maszynowy składa się 10 stanów, które trwają po trzy takty zegara każdy. Cykl jest więc wykonywany w ciągu 30 taktów. Minimalny czas cyklu tcy jest równy 8,38 us (przy fxtal = 3,58 MHz). Na wyjściu ALE jest wytwarzany sygnał zegarowy o częstotliwości fxtal/30, wyznaczający cykle maszynowe.

Inicjowanie systemu

Inicjowanie (zerowanie) mikrokomputerów 8020/21 następuje na skutek podania na wejście RESET stanu wysokiego (min. 3,8 V - odwrotnie niż w 8048). Przy włączeniu zasilania sygnał zerujący musi trwać co najmniej 10 ms od chwili ustabilizowania się napięcia zasilania. Do wyzerowania mikrokomputera podczas jego pracy wystarczy podanie sygnału zerującego przez co najmniej 3 cykle maszynowe. Dołączenie kondensatora o pojemności 10 uF między wejście RESET a napięcie +5 V
zapewnia wyzerowanie układu przy włączeniu zasilania. Zewnętrzny sygnał zerujący należy dołączyć do wejścia RESET poprzez bramkę z otwartym kolektorem
Podczas inicjowania mikrokomputera następuje:
- wyzerowanie licznika rozkazów,
- wyzerowanie wskaźnika stosu,
- ustawienie portów jako wejść,
- zatrzymanie licznika w układzie czasowo-licznikowym.

Specjalne tryby pracy

Mikrokomputery 8020/21 mogą pracować w kilku specjalnych trybach, przeznaczonych do testowania i uruchamiania układów. Umożliwiają one odczytywanie wewnętrznej pamięci programu oraz pracę z zewnętrzną pamięcią programu. Tryby te są ustawiane przez dołączenie napięcia +15 V do odpowiedniej kombinacji wejść RESET, T1 i PROG. Przedstawiono je w poniższym zestawieniu.
RESET PROG T1 Tryb Opis
5V x x Inicjowanie mikroprocesora
0V x x Normalna praca
15V 15V 0,5,0V 1a W każdym cyklu zawartość komórek wewnętrznej pamięci programu jest wysyłana do P0, kolejno po każdym opadającym zboczu ALE.
15V 15V x 1b Po każdym narastającym zboczu T1 zwiększa się licznik rozkazow..Zawartość wskazanej przez niego komórki pamięci programu jest wywyłana do P0.
0V 15V x 2 Układ pracuje z zewnętrzną pamięcią programu (jedna strona) poprzez P0. Sygnał ALE jest strobem wysłania adre4su i wczytania danych.
15V x x 3 Układ przyjmuje kody poprzez P1. możliwe jest testowanie portu P0 i ekspandera 8243.

Lista rozkazów

Lista rozkazów mikrokomputerów 8020/21 jest podzbiorem listy rozkazów mikrokomputerów 8048, z której usunięto podane poniżej rozkazy.
Przeslania Rejestry i znaczniki Skoki Wejście-wyjście Rozkazy sterujące
MOV A,PSW DEC Rr JT0 adr ANL Pp,#n EN I
MOV PSW,A CLR F0 JNT0 adr ORL Pp,#n DIS I
MOVX A,@Ri CPL F0 JF0 adr INS A,BUS* EN TCNT1
MOVX @Ri,A CLR F1 JF1 adr ANL OUTL BUS,A* DIS TCNT1
MOVP3 A,@A CPL F1 JNI adr ANL BUS,#n SEL RB0
Podprogramy JBb adr ORL BUS,#n SEL RB1
RETR SEL MB0
SEL MB1
ENT0 CLK
* - zastąpione przez IN A,P0 i OUTL P0,A

Powrót