ZESPÓŁ SZKÓŁ ELEKTRONICZNYCH -TECHNIKUM ELEKTRONICZNE
w Zielonej Górze
Veo - Pracownia układów mikroprocesorowych i mikrokomputerów
Vsk - Pracownia systemów mikroprocesorowych
Przewodnik do ćwiczeń
Nr ćwiczenia - S7_2
Temat ćwiczenia:
Funkcje binarne i pamięciowe
1. Instrukcje binarne c.d.
Operator |
Argument |
Opis |
Przykład |
ALD |
--- |
Iloczyn logiczny dwóch górnych bitów stosu. Wynik wpisany na szczyt stosu. |
|
OLD |
--- |
Suma logiczna dwóch górnych bitów stosu. Wynik wpisany na szczyt stosu. |
|
LPS, LPP, LRD |
--- |
Instrukcje kontrolne stosu |
|
S |
bit n, N |
Ustawianie w stan 1 N bitów począwszy od adresu bitu n. Ustawianie jest wykonywane, gdy wynik operacji logicznej poprzedzającej instrukcję S jest równy 1. |
S M0.1,3 ustawienie bitu M0.1, M0.2, M0.3. (Łącznie 3 bity) |
R |
bit n |
Zerowanie N bitów począwszy od adresu bitu n. Zerowanie jest wykonywane, gdy wynik operacji logicznej poprzedzającej instrukcję R jest równy 1. |
R Q0.0, 1 zerowanie bitu Q0.0. |
EU |
--- |
Detekcja zbocza narastającego |
|
ED |
--- |
Detekcja zbocza opadającego |
|
|
|
|
|
2. Wykorzystanie instrukcji ALD i OLD
Instrukcje logiczne dotyczące sumy i iloczynu nie wystarczą do realizacji wszystkich układów kombinacyjnych.
Przykład:
Funkcja logiczna
Q0.0 = I0.0 x I0.1 + I0.2 x I0.3
Program STL dla tego układu kombinacyjnego:
Przed wykonaniem sumy logicznej trzeba wykonać osobno obie funkcje iloczynu.
LDN I0.2 |
Ładuj na szczyt stosu stan zanegowanego bitu I0.2 |
|
A I0.3 |
Wynik pierwszego iloczynu znajdzie się na szczycie stosu |
|
LD I0.0 |
Realizacja drugiej funkcji iloczynu rozpoczyna się ponownie od instrukcji ładowania na szczyt stosu (wynik poprzedni zagłębia się na stosie o jeden bit niżej). |
|
A I0.1 |
Wynik drugiego iloczynu znajdzie się na szczycie stosu. Wynik pierwszego iloczynu jest na stosie niżej. |
|
OLD |
Suma logiczna dwóch górnych bitów stosu (zawierających wyniki obu iloczynów logicznych). Wynik znajdzie się na szczycie stosu. |
|
= Q0.0 |
Przepisanie wyniku ze szczytu stosu do bitu Q0.0. |
Przykład:
Funkcja logiczna
Q0.1 = (I0.0 + I0.1) x (I0.4 + I0.5)
w realizacji programowej wymaga najpierw wykonania wyrażeń nawiasowych.
LD I0.0 |
Ładuj na szczyt stosu stan bitu I0.0 |
|
O I0.1 |
Wynik pierwszej sumy logicznej znajdzie się na szczycie stosu |
|
LD I0.4 |
Realizacja drugiej funkcji sumy rozpoczyna się ponownie od instrukcji ładowania na szczyt stosu (wynik poprzedni zagłębia się na stosie o jeden bit niżej). |
|
O I0.5 |
Wynik drugiej sumy znajdzie się na szczycie stosu. |
|
ALD |
Iloczyn logiczny dwóch górnych bitów stosu (zawierających wyniki obu sum). Wynik znajdzie się na szczycie stosu. |
|
= Q0.1 |
Przepisanie wyniku ze szczytu stosu do bitu Q0.1. |
3. Realizacja układów pamięciowych
3.1. Przerzutnik RS
Podstawowym elementem pamięciowym jest przerzutnik RS.
Do programowania przerzutników można się posłużyć operatorami S (set - ustawianie) i R (reset - zerowanie).
Operatory ustawiania i zerowania są wykonywane tylko wtedy, gdy wynik poprzedzających je operacji logicznych jest równy 1. Gdy wynik operacji logicznej poprzedzającej operator S jest równy 1, instrukcja zawierająca operator S zostaje wykonana i jej argument zostaje ustawiony (przyjmuje wartość 1). Gdy wynik operacji logicznej poprzedzającej operator R jest równy 1, instrukcja zawierająca operator R jest wykonywana i jej argument zostaje wyzerowany (przyjmuje wartość 0).
Przykład
LD I0.0 |
|
|
A I0.1 |
Na szczycie stosu wynik iloczynu logicznego I0.0xI0.1 |
|
S Q0.0,1 |
Ustaw bit Q0.0 jeżeli wynik na szczycie stosu jest równy 1. |
|
|
|
|
LD I0.2 |
|
|
O I0.3 |
Na szczycie stosu wynik sumy logicznej I0.2 + I0.3. |
|
R Q0.0,1 |
Zeruj bit Q0.0 jeżeli wynik na szczycie |
Rozróżnia się przerzutniki z priorytetem ustawiania i z priorytetem zerowania. Różnica między nimi dotyczy sytuacji, gdy obydwa wejścia przerzutnika S i R mają wartość 1. Jeżeli w powyższym przykładzie w tym samym cyklu spełnione będą warunki na ustawienie (I0.0 i I0.1 mają wartość 1) i warunki na zerowanie (I0.2 lub I0.3 ma wartość 1) to najpierw zostanie wykonana instrukcja ustawienia bitu Q0.1, a następnie instrukcja zerowania tego bitu. Pod wykonaniu cyklu stan wyjścia Q0.1 będzie równy 0. Przerzutnik działający według tego programu ma priorytet zerowania.
Jeżeli w powyższym programie zamienimy kolejność segmentów dotyczących ustawiania i zerowania, to uzyskamy przerzutnik działający z priorytetem ustawiania:
LD I0.2 |
O I0.3 |
R Q0.0,1 |
|
LD I0.0 |
A I0.1 |
S Q0.0,1 |
W przypadku jednoczesnego wystąpienia warunków ustawiania i zerowania ostatnią instrukcją w cyklu dotyczącą bitu Q0.1 będzie instrukcja S i na koniec cyklu stan wyjścia Q0.1 będzie równy 1. Przerzutnik działający według ostatniego programu ma priorytet ustawiania.
Dominuje to wejście przerzutnika, które zostanie zaprogramowane jako ostatnie w liście instrukcji.
3.2. Układ pamięciowy z samopodtrzymaniem.
Istnieje możliwość zaprogramowania układu z pamięcią bez wykorzystania operatorów S i R. Uzyskuje się to przez podtrzymanie, które otrzymuje się w wyniku zastosowania sprzężenia zwrotnego od ustawionego elementu. Ten sposób programowania stanowi analogię z układami przekaźnikowymi.
W tej metodzie program dla przykładu z p.3.1 w przypadku priorytetu zerowania ma postać:
LD I0.0
A I0.1
O Q0.1 sprzężenie zwrotne od elementu ustawianego
AN I0.3
AN I0.2
= Q0.1
Dla układu z priorytetem ustawiania program dla tego przykładu jest następujący:
LD I0.0
A I0.1
LD Q0.1 sprzężenie zwrotne od elementu ustawianego
AN I0.3
A I0.2
OLD
= Q0.1
4.Wykrywanie zbocza.
W języku STEP 7 MicroWin można programować układy reagujące na zbocza sygnałów opadające lub narastające. Służą do tego celu instrukcje EU (wykrywanie zmiany z „0” na „1”) i ED (wykrywanie zmiany z „1” na „0”). W każdym cyklu odbywa się sprawdzanie czy stan sygnału uległ zmianie. Jeżeli zmiana zostanie wykryta to specjalny znacznik ustawiany jest na „1” na czas jednego cyklu (tego w którym zmiana wystąpiła). Można to wykorzystać w układach pamięciowych.
Przykład:
LD I0.0
EU
S M0.0,1 znacznik M0.1 zostanie ustawiony w przypadku zmiany stanu na wejściu I0.0 z „0” na „1”
LD I0.1
ED
R M0.0,1 znacznik M0.0 zostanie wyzerowany w przypadku pojawienia się zmiany stanu na wejściu I0.1 z „1” na „0”
4
I0.2
I0.3
Q0.0
I0.0
I0.1