Intel 8255

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare

8255 este un circuit port general de intrare/ieșire paralel.

Circuitul port paralel de intrare/ieșire (PIO) 8255[modificare | modificare sursă]

Intel 8255 (sau i8255) este un cip periferic dezvoltat inițial pentru microprocesorul Intel 8085 și este un membru al familiei de chipuri Intel MCS-51. Mai târziu, acest chip a fost utilizat cu Intel 8086 și urmașii săi.


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

8255

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:

- Mod 0 – I/O obișnuită

- Mod 1 – I/O strobată

- Mod 2 – Mag. bidirecțională

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

Legături externe[modificare | modificare sursă]