Intel 8255
Intel 8255 (sau i8255) este un cip periferic dezvoltat inițial de Intel in prima parte a anilor 1970 pentru microprocesorul Intel 8085 și este un membru al familiei de cipuri Intel MCS-51. Mai târziu, acest chip a fost utilizat cu Intel 8085 and Intel 8086[1] și urmașii lor.
Descriere generală
[modificare | modificare sursă]Circuitul 8255 conține 4 porturi, două de 8 biti și două de 4 biti.
Fiecare port poate fi programat prin intermediul unui registru de control, să fie port de intrare sau port de II ieșire. Fiecare port de 4 biti este folosit și pentru manevrarea unor semnale de comandă și stare în conjuncție cu porturile A si B.
Comunicarea cu magistrala de date a unitații centrale de prelucrare (microprocesor/microcontroler) se face prin intermediul bufferului magistralei de date pe liniile D0 ÷ D7. Prin acestea se transmit atât date cât și cuvinte de control sau stare.
Schema bloc internă a circuitului
[modificare | modificare sursă]Logica de comandă citire/scriere primește următoarele semnale:
- CS - selecție circuit 8255
- RD - intrare zero activă.
Microprocesorul/microcontrolerul recepționează un octet de date sau informații de stare de la circuitul 8255.
- WR - intrare zero activă. Microprocesorul/microcontrolerul înscrie un octet de date sau un cuvânt de comandă (control) în 8255.
- A0,A1 - intrări de selecție pentru resursele interne ale circuitului (porturi; registre de
control) 8255.
- RESET - Semnal de intrare “1” activ. În cazul în care este activ, are ca efect ștergerea
informației din toate registrele interne, inclusiv registrul cuvintelor de comandă și pune porturile A; B si C în “modul de intrare”.
Modul de selectare a resurselor interne este:
A1 | A0 | RD | WR | CS | .. |
0 | 0 | 0 | 1 | 0 | Citire continut PA |
0 | 1 | 0 | 1 | 0 | Citire continut PB |
1 | 0 | 0 | 1 | 0 | Citire continut PC |
1 | 1 | 0 | 1 | 0 | Combinatie ilegala |
0 | 0 | 1 | 0 | 0 | Scriere in PA |
0 | 1 | 1 | 0 | 0 | Scriere in PB |
1 | 0 | 1 | 0 | 0 | Scriere in PC |
1 | 1 | 1 | 0 | 0 | Scriere cuvant de comanda |
* | * | * | * | 1 | Circuit neselectat |
Logica de comandă grup A si B conțin, registrul cuvântului de comandă (control). În acest registru se înscrie cuvântul de comandă aferent. Citirea acestui registru nu este permisă.
Porturile circuitului 8255
[modificare | modificare sursă]Porturile circuitului 8255 au 3 moduri de funcționare, care pot fi selectate prin înscrierea cuvântului de comandă corespunzator în registrul de control.
Cele 3 moduri de lucru sunt:[9]
- Mod 0 – I/O obișnuită
- Mod 1 – I/O strobată
- Mod 2 – bidirecțională strobată I/O
Porturile A și B pot fi definite separat în timp ce părțile portului C sunt legate de definirea modului de lucru a porturilor A și B.
Cuvântul de comandă și control pentru definirea modului de lucru are urmatoarea structură:
D0 - definește partea mai puțin semnificativă a lui PC.
Daca D0 = 1 PC-L intrare. Daca D0 = 0 PC-L ieșire
D1 - definește portalul B - "0" ieșire, "1" intrare D2 - definește modul de lucru pentru portul B - "0" mod 0, "1" mod 1
D3 - definește partea mai semnificativă a lui PC.
Daca D3 = 1 *C-H intrare Daca D3 = 0 PC-H ieșire
D4 - definește portalul A - "0" ieșire, "1" intrare D6 D5 - definesc modul de lucru pentru PA 0 0 - modul 0 0 1 - modul 1 1 * - modul 2
D7 obligatoriu pe “1”
Al doilea tip de cuvânt de comandă caracterizat prin faptul că bitul D7 = “0” se utilizează pentru setarea respectiv resetarea oricarui bit din portul C. Această caracteristică este foarte utilă la implementarea automatelor secvențiale unde se cere adeseori schimbarea valorii unei singure variabile de ieșire. Cuvântul de comandă are urmatoarea configurație:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
0 | * | * | * | DPBC2 | DPBC1 | DPBC0 | SP |
- DPBC2,DPBC1,DPBC0 – conțin combinația corespunzatoare bitului din portul C care se dorește a fi controlat (000 – bitul PC0 , 111 – bitul PC7).
- SP – conține valoarea care se transmite bitului selectat prin DBPC2, DBPC1, DBPC0 (SP= “1” – bit setat, SP=“0” – bit resetat).
MODUL 0 – intrare/ieșire normală
[modificare | modificare sursă]În acest mod data este scrisă sau citită simplu la/de la portul specificat. Oricare port poate fi intrare sau ieșire. În acest mod sunt posibile 16 configurații de intrari/ieșiri.
PA | PB | PC-H | PC-L | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
I | I | I | I | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
I | I | I | E | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
I | I | E | I | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
I | E | I | I | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
... | |||||||||||
E | E | E | E | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Atunci când PC-L si PC-H sunt definite (programate) diferit (unul intrare si celalalt ieșire), operația de citire din port va transfera valorile intrarilor de la partea definită ca port de intrare și imaginea ieșirilor de la partea definita ca ieșire. Deci pe durata unui ciclu de citire sunt accesibile toate liniile, indiferent dacă au fost programate ca intrari sau ieșiri.
Pentru partea programata ca ieșire, toate liniile sunt accesibile individual, folosind al doilea cuvânt de comandă.
Modul 1 - Intrare/iesire strobata numai Portul A si Portul B
[modificare | modificare sursă]In acest mod datele se transfera la/de la portul specificat In conjunctie cu semnalele de strobare sau de stabilire a legaturii. In modul 1 porturile A si B pot fi programate fie ca intrari fie ca iesiri si In aceasta situatie o parte din liniile portului C devin semnale pentru generarea si acceptare a stabilirii legaturii cu dispozitivele periferice.
Modul 1 - Intrare strobata
[modificare | modificare sursă]In modul 1 intrare strobata semnalele de control al intrarii sunt:
STB - intrare 0 activa – cand semnalul este zero. Valoarea de la intrarea portului respectiv (A sau B) este inscrisa in registrul de intrare
IBF - semnalul de iesire “1” activ prin care se indica faptul ca data a fost inscrisa in registrul de intrare dar nu a fost inca citita de microprocesor/microcontroler.
INTR - iesire “1” activa, cerere de intrerupere. Se activeaza dupa incarcarea datelor in bufferul de intrare.
Semnalele /STB; IBF si INTR nu sunt comune pentru porturile A si B. In functie de modul de programare, semnalele se obtin prin intermediul liniilor portului C astfel:
Portul A | Portul B | ||
/STB_A | PC-4 | /STB_B | PC-2 |
IBF_A | PC-5 | IBF_B | PC-1 |
INTR_A | PC-3 | INTR_B | PC-0 |
Liniile ramase nefolosite PC6, 7 pot fi configurate ca linii generale de intrare/iesire. Pentru validarea generarii cererilor de Intrerupere INTR-A si INTR-B pentru fiecare port In parte exista un bistabil INTE (INTE-A pentru portul A si INTE-B pentru portul B) controlat prin program. Pentru INTE-A bitul asociat este PC4 iar pentru INTE-B bitul asociat este PC2. Cuvantul de comanda pentru setarea modului 1 intrare strobata pentru porturile A si B este:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 1 | 1 | 1/0 | 1 | 1 | 1/0 |
Modul 1 ieșire strobată
[modificare | modificare sursă]În modul 1 ieșire strobată semnalele de control al ieșirilor sunt:
OBF - intrare “0” activă prin care se indică faptul că UC a Înscris o dată în portul de ieșire specificat.
ACK - intrare “0” activă prin care se informează circuitul I8255 că data de la portul A sau B a fost acceptată de periferic (semnalul --ACK se primește de la periferic)
INTR - ieșire “1” activă, cerere de întrerupere. Poate fi utilizat pentru a întrerupe UCP când un dispozitiv de ieșire a acceptat datele transmise și prin urmare se poate iniția un nou transfer de ieșire.
Semnalele OBF; ACK si INTR nu sunt comune pentru porturile A si B. În funcșie de modul de programare, semnalele se obțin prin intermediul portului C astfel:
Portul A | Portul B | ||
OBF_A | PC-4 | OBF_B | PC-2 |
ACK_A | PC-5 | ACK_B | PC-1 |
INTR_A | PC-3 | INTR_B | PC-0 |
Liniile rămase nefolosite PC4,5 pot fi configurate ca linii generale de intrare/ieșire. Pentru validarea generării cererilor de Întrerupere INTR-A și INTR-B pentru fiecare port în parte există un bistabil INTE (INTE-A pentru portul A și INTE-B pentru portul B) controlat prin program. Pentru INTE-A bitul asociat este PC6 iar pentru INTE-B bitul asociat este PC2. Cuvântul de comandă pentru setarea modului 1 ieșire strobată pentru porturile A și B este:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 1 | 0 | 1/0 | 1 | 0 | 1/0 |
Modul 2 – Magistrala bidirectională
[modificare | modificare sursă]Acest mod de funcționare furnizează mijlocul de comunicare cu un dispozitiv periferic pe o singură magistrală de 8 biti în ambele sensuri (emisie și recepție). În acest mod de lucru se poate folosi numai portul A care va folosi și 5 biti ai portului C pentru semnale de control și stare:
- PC7 - OBF - indică faptul că UC a scris o dată de ieșire în portul A
- PC6 - ACK - validează “bufferul de ieșire cu trei stări” al portului A
pentru a trimite data catre periferie (activat de periferic).
- PC5 - IBF - indică faptul că data a fost încarcată în registrul de intrare.
- PC4 - STB - incarcă datele în registrul de intrare
- PC3 - INTR_A - cerere de întrerupere valabilă atât pentru operații de intrare
cât si de ieșire
- INTE1 – asociat cu --OBF este controlat de PC6 (pentru ieșire)
- INTE2 – asociat cu IBF este controlat de PC4 (pentru intrare)
În acest mod de lucru portul B poate fi programat fie în mod 0 fie in mod 1. Cuvântul de comandă va avea structura:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 1 | 1 | * | 1/0 | 1/0 | 1/0 | 1/0 |
Referințe
[modificare | modificare sursă]- ^ R Theagarajan (). Microprocessor And Its Applications. New Age International. pp. 165–. ISBN 978-81-224-1040-2. Accesat în .
Bibliografie
[modificare | modificare sursă]- Coca, Eugen; Ion Spânulescu (). Circuite integrate digitale și sisteme cu microprocesoare. București: Editura Victor. ISBN 973-973318-2.
- Burileanu, Corneliu (). Arhitectura microprocesoarelor. București: Editura Denix.
- Lupu, Cristian; Țepelea Vlad; Purice Emil (). Microprocesoare. Aplicații. București: Editura Militară.
- Căpățână, Octavian; Hasegan Dan; Cornea Marius; Pușca Mircea V. (). Proiectarea cu microprocesoare. Cluj-Napoca: Editura Dacia.
Vezi și
[modificare | modificare sursă]