BADANIE UKŁADU TRANSMISJI RÓWNOLEGŁOEJ 8255, Elektronika


2006-02-22

Temat ćwiczenia:

BADANIE UKŁADU TRANSMISJI RÓWNOLEGŁEJ - 8255

Autorzy:

Krzysztof Lorenc 

Piotr Płoszaj 

  1. Opis układu 8255:

Układ 8255 jest programowalnym, równoległym portem wejścia/wyjścia.

Zawiera on trzy uniwersalne 8-bitowe porty (PA, PB, PC), z których każdy morze być skonfigurowany jako wejście, wyjście, a w pewnych trybach spełniać rolę mieszaną, nawet z możliwością generowania przerwań do procesora. Dodatkowo, oprócz wspomnianych rejestrów portów PA, PB, PC układ 8255 zawiera tzw. Czwarty rejestr - konfiguracyjny, dzięki niemu możliwa jest konfiguracja całego układu.

Nietypowym portem w tym układzie jest port PC. Może on pracować zarówno jako port 8-bitowy jak również jako 2 niezależne porty 4-bitowe. Wyboru rodzaju pracy tego portu dokonuje się za pomocą rejestru konfiguracyjnego. Jeżeli port ten jest podzielony to cztery starsze bity PC7-PC4 będą oznaczone jako PCa, natomiast cztery młodsze bity będą oznaczone jako PCb. W naszym przypadku rejestr ten jest nieużywany.

Opis wyprowadzeń układu:

D0 -D7- Linie dołączone do szyny danych systemu mikroprocesorowego. Dzięki nim, możliwa jest transmisja danych z procesora nadzorującego do i z układu 8255.

/CS- sygnał wejściowy wyboru - selekcji układu przez procesor. Podanie logicznego zera na to wejście

umożliwia transmisję danych poprzez linie D0-D7.

/WR- Sygnał zapisu danych do układu 8255 przez procesor zewnętrzny. Podanie stanu niskiego na to wejście powoduje zapisanie danych z szyny D0-D7 do wewnętrznych rejestrów układu 8255.

/RD- Sygnał odczytu danych z układu 8255. Podanie stanu niskiego na to wejście spowoduje odczytanie informacji z wewnętrznych rejestrów układy 8255.

A1,A0- Linie sterujące wyborem jednego z czterech rejestrów wewnętrznych układu 8255. W zależności od poziomów na tych liniach podczas cyklu odczytu/ zapisu przez procesor wybrany zostaje jeden z trzech rejestrów wyjściowych PA, PB, PC bądź rejestr konfiguracyjny.

RESET- wejście zerowania układu 8255. Podanie stanu wysokiego na to wejście spowoduje wyzerowanie rejestrów wewnętrznych (rejestru sterującego) układu 8255 i ustawienie portów PA, PB, PC jako wejściowych. Taki sam stan układu 8255 ustawiany jest automatycznie po każdorazowym włączeniu zasilania.

PA0-PA7- Linie 8-bitowego uniwersalnego portu PA (pierwszego portu).

PB0-PB7- Linie 8-bitowego uniwersalnego portu PB (drugiego portu)

PC0-PC7- Linie 8-bitowego uniwersalnego portu PC (trzeciego portu)

  1. Zastosowanie układu 8255 w klawiaturze matrycowej i przy sterowaniu diod.

Badany układ oparty na 8255 jest przystosowany do współpracy z systemem DSM-51.

Schemat wyprowadzeń układu jest na str. 6

Schemat ideowy badanego układu jest na str. 7

Wykorzystanie portu PA:

Port PA skonfigurowany jako wyjście.

Pierwsze cztery bity portu PA służą do sterowania czterema diodami. Wystawienie „1” na którymś z tych bitów powoduje zapalenie odpowiadającej temu bitowi diody.

PA0 → dioda pomarańczowa

PA1 → dioda zielona

PA2 → dioda biała

PA3 → dioda niebieska

Cztery ostatnie bity portu PA służą do sterowania obsługą klawiatury i decydują o możliwości występowania przerwania. Dokładny opis działania klawiatury znajduje się w pkt. 5

Aby możliwa była prawidłowa obsługa przerwania bity te muszą być równe „1”. W badanym układzie przerwanie generowane jest przez klawiaturę, a nie przez układ 8255, gdyż upraszcza to obsługę całego układu, ponieważ przerwanie generowane jest nie zależnie od konfiguracji układu.

Wykorzystanie portu PB:

Port PB skonfigurowany jako wejście.

W badanym układzie wykorzystane zostały cztery ostatnie bity portu PB. Służą one do odczytu stanu przycisków w wybranym rzędzie, co dokładnie zostało opisane w pkt. 5

  1. Konfiguracja układu:

Układ konfiguruje się przez wpisanie odpowiedniej danej konfiguracyjnej pod adres układu ( a dokładniej rejestru sterującego 8255 - rejestru CTRL).

Znaczenie pozostałych bitów rejestru CTRL jest następujące:

W trybie 2 pracy układu 8255, bit ten nie ma znaczenia.

TRYB 0

Wspomniane tryby pracy (0, 1 lub 2) umożliwiają wybór sposobu działania całego układu. Dla W trybie „0” każdy z rejestrów PA, PB oraz dwóch połówek PC (PCa i PCb) może pracować jako wejście lub wyjście cyfrowe. Dane przesyłane są z szyny danych D0...D7 systemu mikroprocesorowego do rejestrów portu (ustawionych jako wyjścia) lub odczytywane poprzez tą szynę do procesora w sposób niezsynchronizowany. Wszystkie możliwe ustawienia bitu konfiguracyjnego ( CTRL ) zawiera poniższa tabela:

0x01 graphic

TRYB 1

W tym trybie pracy dane mogą być przesyłane do i z innych urządzeń poprzez porty PA lub PB. W tym trybie transmisja jest jednokierunkowa, tzn. dane mogą być odczytywane przez cały czas do kolejnej rekonfiguracji układu 8255 lub wyłącznie zapisywane. Niektóre z linii portu PC są w tym trybie przyporządkowane rejestrowi PA lub PB, a służą do przesyłania sygnałów synchronizujących transmisję, między rejestrami PA lub PB a urządzeniem zewnętrznym.

TRYB 2

W trybie tym układ 8255 potrafi transmitować dane w dwóch kierunkach jednocześnie wraz z potwierdzeniem transmisji. Rejestr PA wykorzystywany jest wtedy do transmisji danych między 8255 a urządzeniem zewnętrznym. Jako sygnały synchronizujące wykorzystywane są linie PC3...PC7. Pozostałe linie PC0...PC2 oraz rejestr PB mogą pracować niezależnie w trybie 0 lub 1.

KONFIGURACJA BADANEGO UKŁADU:

Badany układ pracuje w trybie „0”, adresem rejestru kontrolnego ( CTRL )w tym przypadku będzie: 11000011, a daną konfiguracyjną będzie: 10100011. Adres ten zawiera w sobie adres urządzenia zewnętrznego (badanego układu 8255), oraz adres rejestru kontrolnego (służącego do konfiguracji układu; dwa pierwsze bity). Zatem prawidłowa konfiguracja układu będzie wyglądała następująco:

MOV R0,# 11000011B ;WPISZ ADRES BAJTU KONFIGURACJI DO R0

MOV A,# 10100011B ;WPISZ DO AKUMULATORA DANĄ KONFIGURAYJNĄ UKLADU

MOVX @R0,A

Układ musi być w trakcie działania programu skonfigurowany co najmniej raz, przed wykonaniem poleceń związanych z działaniem układu.

Wybór odpowiedniego rejestru układu 8255:

W układzie 8255 każdy z 4 rejestrów ma przypisany odpowiedni adres. Przykładowo adres dla rejestru konfiguracyjnego adresem takim będzie: 11000011B. Gdzie dwa najmłodsze bity D1 i D0 oznaczać będą linie adresowe A1 i A0. Pozostałe bity adresu wynikają zarówno z budowy badanego układu, jak również z budowy układu DSM51-PPL.

Kombinacje linii A1 i A0 dla rejestrów poszczególnych portów:

  1. Sterowanie diodami:

Diody sterowane są za pomocą pierwszych 4 bitów portu PA, zatem to do nich trzeba wpisać odpowiednią wartość.

Adres rejestru portu PA to: 11000000B.

Przykładowo, aby zapalić diodę pomarańczową i białą musimy wykonać następuje instrukcje:

MOV R0,# 11000000B

MOV A,# 11110101B

MOVX @R0,A

  1. Obsługa klawiatury:

Aby prawidłowo obsługiwać klawiaturę należy wykonać następujące czynności:

Dzięki tym czynnością możliwe jest „zlokalizowanie” naciśnietego klawisza i tym samym uzyskanie jego kodu.

Przykład sprawdzenia jednego rzędu klawiszy:

MOV R0,# 11000000B ;\

MOV A,#1110XXXXB ;|} wybór rzędu pierwszego klawiszy

MOVX @R0,A ;/

MOV R0,# 11000001B ; wybór rejestru portu PB

MOVX @R0,A ; zapisanie wartości rejestru portu PB do akumulatora

Po tych instrukcjach należy dokonać sprawdzenia zawartości czterech ostatnich bitów akumulatora, i w przypadku, gdy są one różne od „1” oznacza to, że naciśnięty klawisz znajduje się w aktualnie badanym rzędzie a jego kod w danym rzędzie odpowiada czterem ostatnim bitom akumulatora.

  1. Przykłady programów:

  1. PŁYWAJĄCA „1” :

AD_CONFIG EQU 11000011B ;ADRES BAJTU REJESTRU KONFIGURACJI UKŁADU

AD_PA EQU 11000000B ;ADRES BAJTU REJESTRU PORTU PA

DATA_CONFIG EQU 10100000B ;DANA KONFIGURACYJNA UKLADU

LJMP START

ORG 100H

START:

MOV R0, #AD_CONFIG ;WPISZ ADRES REJESTRU BAJTU KONFIGURACJI DO R0

MOV A, #DATA_CONFIG ;WPISZ DO AKUMULATORA DANA KONFIGURAYJNĄ UKLADU

MOVX @R0, A ;WYŚLIJ POD ADRES REJESTRU BAJTU KONFIGURACYJNI UKLADU TĄ DANĄ

;(USTAL KONFIGURACJE UKŁADU)

MOV R0, #AD_PA ;WPISZ ADRES REJESTRU PORTU PA DO R0

LOOP:

MOV R4, #3 ;ILOŚĆ OBROTÓW AKUMULATORA W LEWO

MOV A,#00000001B ;DANA ZAPALAJĄCA PIERWSZĄ DIODĘ

LEWO:

MOVX @R0, A ;WYŚLIJ DANĄ POD ADRES PORTU PA

PUSH ACC ;UMIEŚĆ ZAWARTOŚĆ AKUMULATORA NA STOSIE

MOV A, #1 ;OPÓŹNIENIE O 1 SEKUNDĘ

LCALL DELAY_100MS

POP ACC ;ZDEJMIJ ZAWARTOŚĆ AKUMULATORA ZE STOSU

RL A ;OBRÓT AKUMULATORA W LEWO

DJNZ R4, LEWO ;ZMNIEJSZ R4 I SKOCZ JEŚLI RÓŻNE OD 0

MOV R4, #3 ;ILOŚĆ OBROTÓW AKUMULATORA W PRAWO

PRAWO:

MOVX @R0, A ;WYŚLIJ DANĄ POD ADRES PORTU PA

PUSH ACC ;UMIEŚĆ ZAWARTOŚĆ AKUMULATORA NA STOSIE

MOV A, #1 ;OPÓŹNIENIE O 1 SEKUNDĘ

LCALL DELAY_100MS

POP ACC ;ZDEJMIJ ZAWARTOŚĆ AKUMULATORA ZE STOSU

RR A ;OBRÓT AKUMULATORA W PRAWO

DJNZ R4, PRAWO ;ZMNIEJSZ R4 I SKOCZ JEŚLI RÓŻNE OD 0

LJMP LOOP

  1. OBSŁUGA KLAWIATURY :

;PROGRAM WYSPISUJE NA WYŚWIETLACZU KOD NACISNIETEGO KLAWISZA I W TRAKCIE NACISKANIA KLAWISZA

;ZAPALA DIODĘ ODPOWIADAJĄCĄ RZĘDOWI NACIŚNIĘTEGO KLAWISZA

AD_CONFIG EQU 11000011B ;ADRES BAJTU REJESTRU KONFIGURACJI UKŁADU

AD_PA EQU 11000000B ;ADRES BAJTU REJESTRU PORTU PA

AD_PB EQU 11000001B ;ADRES BAJTU REJESTRU PORTU PB

DATA_CONFIG EQU 10100011B ;DANA KONFIGURACYJNA UKLADU

LJMP START

ORG 100H

START:

MOV R0,#AD_CONFIG ;WPISZ ADRES REJESTRU BAJTU KONFIGURACJI DO R0

MOV A,#DATA_CONFIG ;WPISZ DO AKUMULATORA DANA KONFIGURAYJNĄ UKLADU

MOVX @R0,A ;WYŚLIJ POD ADRES REJESTRU BAJTU KONFIGURACYJNI UKLADU TĄ DANĄ

;(USTAL KONFIGURACJE UKŁADU)

WYZERUJ_PORT_PA:

MOV R0,#AD_PA

MOV A,#0

MOVX @R0,A ;WYZERUJ PORT PA (UMOŻLIWIENIE WYKRYCIE NACISNIECIA KLAWISZA,

;WYNIKAJĄCE Z KONSTRUKCJI UKŁADU)

OCZEKUJ_NACISNIECIA:

MOV A,#10

LCALL DELAY_MS

JB P3.3,OCZEKUJ_NACISNIECIA

SPRAWDZ_KOD_RZEDU_JEDEN:

MOV R1,#1 ;WPISZ DO R1 AKTUALNIE SPRAWDZANY NUMER RZĘDU

MOV R0,#AD_PA

MOV A,#11100001B ;USTAW WARTOŚĆ WYJŚCIOWĄ DO SPRAWDZENIA KODU KLAWISZA W

;DANYM RZĘDIE I ZAPALENIA DIODY ODPOWIADAJĄCEJ NUMEROWI RZĘDU

;NA PORT PA

MOVX @R0,A

MOV R0,#AD_PB

MOVX A,@R0 ;ODCZYTAJ KOD KLAWISZA W DANYM RZĘDZIE, CZYLI STAN PORTU PB

CJNE A,#11111111B,SPRAWDZ_KOD_KLAW_RZEDU ;SKOCZ DALEJ, POMIŃ SPRAWDZENIE

;NASTENYCH RZĘDÓW, JEŻELI W

;AKTUALNIE SPRAWDZANYM RZĘDZIE

;NACIŚNIĘTY JEST KLAWISZ

SPRAWDZ_KOD_RZEDU_DWA:

MOV R1,#2

MOV R0,#AD_PA

MOV A,#11010010B

MOVX @R0,A

MOV R0,#AD_PB

MOVX A,@R0

CJNE A,#11111111B,SPRAWDZ_KOD_KLAW_RZEDU

SPRAWDZ_KOD_RZEDU_TRZY:

MOV R1,#3

MOV R0,#AD_PA

MOV A,#10110100B

MOVX @R0,A

MOV R0,#AD_PB

MOVX A,@R0

CJNE A,#11111111B,SPRAWDZ_KOD_KLAW_RZEDU

SPRAWDZ_KOD_RZEDU_CZTERY:

MOV R1,#4

MOV R0,#AD_PA

MOV A,#01111000B

MOVX @R0,A

MOV R0,#AD_PB

MOVX A,@R0

CJNE A,#11111111B,SPRAWDZ_KOD_KLAW_RZEDU

LJMP WYZERUJ_PORT_PA

SPRAWDZ_KOD_KLAW_RZEDU:

CJNE A,#01111111B,SPRAWDZ_KOD_KLAW_RZEDU_DWA ;SPRAWDZ CZY NACISNIETO PIERWSZY KLAWISZ W DANYM RZEDZIE

MOV R2,#1

LJMP WYSWIETL

SPRAWDZ_KOD_KLAW_RZEDU_DWA:

CJNE A,#10111111B,SPRAWDZ_KOD_KLAW_RZEDU_TRZY ;SPRAWDZ CZY NACISNIETO DRUGI

;KLAWISZ W DANYM RZEDZIE

MOV R2,#2

LJMP WYSWIETL

SPRAWDZ_KOD_KLAW_RZEDU_TRZY:

CJNE A,#11011111B,SPRAWDZ_KOD_KLAW_RZEDU_CZTERY

MOV R2,#3

LJMP WYSWIETL

SPRAWDZ_KOD_KLAW_RZEDU_CZTERY:

MOV R2,#4

WYSWIETL: ;WYSWIETL PEŁNY KOD KLAWISZA NA WYSWIETLACZU

LCALL LCD_CLR

MOV A,R1

LCALL WRITE_HEX

MOV A,R2

LCALL WRITE_HEX

LJMP WYZERUJ_PORT_PA

  1. OBSŁUGA KLAWIATURY Z ZASTOSOWANIEM PRZERWANIA :

AD_CONFIG EQU 11000011B ;ADRES BAJTU REJESTRU KONFIGURACJI UKŁADU

AD_PA EQU 11000000B ;ADRES BAJTU REJESTRU PORTU PA

AD_PB EQU 11000001B ;ADRES BAJTU REJESTRU PORTU PB

DATA_CONFIG EQU 10100011B ;DANA KONFIGURACYJNA UKLADU

LJMP START

ORG 13 H ;ADRES PRZERWANIA INT1

LJMP POP ;SKOCZ DO PROGRAMU OBSŁUGI PRZERWAŃ

ORG 100H

START:

MOV IE, #84H ;ZEZWALAJ NA PRZERWANIE OD INT1

MOV IP, #04H ;USTAW PRIORYTET PRZERWANIA

MOV R0, #AD_CONFIG ;WPISZ ADRES REJESTRU BAJTU KONFIGURACJI DO R0

MOV A,# DATA_CONFIG ;WPISZ DO AKUMULATORA DANA KONFIGURAYJNĄ UKLADU

MOVX @R0, A ;WYŚLIJ POD ADRES REJESTRU BAJTU KONFIGURACYJNI UKLADU TĄ DANĄ

MOV R0,#AD_PA ;WPISZ ADRES REJESTRU PORTU PA DO R0

LOOP: ;(USTAL KONFIGURACJE UKŁADU)

MOV A, #00000101B ;\

MOVX @R0,A ; \

MOV A, #5 ; \

LCALL DELAY_100MS ; \

MOV A, #00001010B ; PROGRAM GŁÓWNY

MOVX @R0, A ; /

MOV A,#5 ; /

LCALL DELAY_100MS ; /

LJMP LOOP ;/

POP:

PUSH ACC ;UMIEŚĆ ZAWARTOŚĆ AKUMULATORA NA STOSIE

WYZERUJ_PORT_PA:

MOV R0,#AD_PA

MOV A,#0

MOVX @R0,A ;WYZERUJ PORT PA (UMOŻLIWIENIE WYKRYCIE NACISNIECIA KLAWISZA,

;WYNIKAJĄCE Z KONSTRUKCJI UKŁADU)

SPRAWDZ_KOD_RZEDU_JEDEN:

MOV R1,#1 ;WPISZ DO R1 AKTUALNIE SPRAWDZANY NUMER RZĘDU

MOV R0,#AD_PA

MOV A,#11100001B ;USTAW WARTOŚĆ WYJŚCIOWĄ DO SPRAWDZENIA KODU KLAWISZA W

;DANYM RZĘDIE I ZAPALENIA DIODY ODPOWIADAJĄCEJ NUMEROWI RZĘDU

;NA PORT PA

MOVX @R0,A

MOV R0,#AD_PB

MOVX A,@R0 ;ODCZYTAJ KOD KLAWISZA W DANYM RZĘDZIE, CZYLI STAN PORTU PB

CJNE A,#11111111B,SPRAWDZ_KOD_KLAW_RZEDU ;SKOCZ DALEJ, POMIŃ SPRAWDZENIE

;NASTENYCH RZĘDÓW, JEŻELI W

;AKTUALNIE SPRAWDZANYM RZĘDZIE

;NACIŚNIĘTY JEST KLAWISZ

SPRAWDZ_KOD_RZEDU_DWA:

MOV R1,#2

MOV R0,#AD_PA

MOV A,#11010010B

MOVX @R0,A

MOV R0,#AD_PB

MOVX A,@R0

CJNE A,#11111111B,SPRAWDZ_KOD_KLAW_RZEDU

SPRAWDZ_KOD_RZEDU_TRZY:

MOV R1,#3

MOV R0,#AD_PA

MOV A,#10110100B

MOVX @R0,A

MOV R0,#AD_PB

MOVX A,@R0

CJNE A,#11111111B,SPRAWDZ_KOD_KLAW_RZEDU

SPRAWDZ_KOD_RZEDU_CZTERY:

MOV R1,#4

MOV R0,#AD_PA

MOV A,#01111000B

MOVX @R0,A

MOV R0,#AD_PB

MOVX A,@R0

CJNE A,#11111111B,SPRAWDZ_KOD_KLAW_RZEDU

LJMP WYZERUJ_PORT_PA

SPRAWDZ_KOD_KLAW_RZEDU:

CJNE A,#01111111B,SPRAWDZ_KOD_KLAW_RZEDU_DWA ;SPRAWDZ CZY NACISNIETO PIERWSZY KLAWISZ W DANYM RZEDZIE

MOV R2,#1

LJMP WYSWIETL

SPRAWDZ_KOD_KLAW_RZEDU_DWA:

CJNE A,#10111111B,SPRAWDZ_KOD_KLAW_RZEDU_TRZY ;SPRAWDZ CZY NACISNIETO DRUGI

;KLAWISZ W DANYM RZEDZIE

MOV R2,#2

LJMP WYSWIETL

SPRAWDZ_KOD_KLAW_RZEDU_TRZY:

CJNE A,#11011111B,SPRAWDZ_KOD_KLAW_RZEDU_CZTERY

MOV R2,#3

LJMP WYSWIETL

SPRAWDZ_KOD_KLAW_RZEDU_CZTERY:

MOV R2,#4

WYSWIETL: ;WYSWIETL PEŁNY KOD KLAWISZA NA WYSWIETLACZU

LCALL LCD_CLR

MOV A,R1

LCALL WRITE_HEX

MOV A,R2

LCALL WRITE_HEX

MOV R0,#AD_PA

POP ACC

RETI ;POWRÓT Z PROGRAMU OBSŁUGI PRZERWAŃ

Schemat wyprowadzeń układu 8255:

0x01 graphic

Schemat ideowy badanego układu:

0x01 graphic

8/11



Wyszukiwarka

Podobne podstrony:
ćw.6.Badanie układu samocz.załącz.rezerwy, Elektrotechnika - notatki, sprawozdania, Urządzenia elekt
Badanie układu z diodą gazowaną(1), Laboratorium elektrotechniki
Badanie układu szeregowego RLC, studia UR, rok 1, elektrotechnika
ćw.1.Badanie układu do kompensacji mocy biernej, Elektrotechnika - notatki, sprawozdania, Urządzenia
ćw.24.Badanie układu napędowego ze sprzęgłem indukcyjnym, Elektrotechnika - notatki, sprawozdania, N
Napęd elektryczny badanie układu napędowego z przetwornicą częstotliwości zeszyt obliczeń
Badanie układu kostno stawowego i mięśniowego (1)
Ananatomia i fizjologia badania ukladu oddechowego u dzieci
BADANIE UKLADU REGULACJI CIAGLE Nieznany (2)
METODY BADANIA UKŁADU LIMFATYCZNEGO
Badanie układu napędowego z silnikiem bezszczotkowym z magnesami trwałymi
ćw.10.Badanie właściwości łuku prądu stałego, Elektrotechnika - notatki, sprawozdania, Urządzenia el
METODY BADANIA UKŁADU LIMFATYCZNEGO, Mieszanka Mareckiego
Badanie układu sterowania z regulatorem PID
Badanie układu z elementami nieliniowymy
Ćw 4 - Badanie twardości i udarności wybranych materiałów elektroizolacyjnych, Politechnika Poznańsk
FIZYKA ćw.56 badanie wpływu temp. na opór elektryczny, Sprawozdania ATH

więcej podobnych podstron