Intel 8255 je integrovaný obvod z rodiny procesoru Intel, navržený pro procesor Intel 8085, používán byl ale i u procesorů Intel 8086 a jeho nástupců a u procesorů Zilog Z80. Jedná se obvod poskytující tři paralelní osmibitové brány (obvykle označované jako brána A, brána B a brána C). Podobným obvodem v rodině procesoru Z80 je obvod Z80 PIO.
Obvod je použit i v počítačích Amstrad CPC. Je také základem několika interfaců používaných u počítačů Sinclair ZX Spectrum a kompatibilních.
V základním režimu může pracovat kterákoli ze tří bran, brány mohou být nezávisle na sobě nastaveny jako výstupní nebo jako vstupní. U brány C je možné nezávisle na sobě nastavovat čtveřice bitů. Jsou-li brány nastaveny jako výstupní, data, která jsou poslána na jednotlivé brány, se zde objeví, jsou-li brány nastaveny jako vstupní, je čten aktuální stav příslušné brány.
V strobovaném režimu mohou pracovat pouze brány A a B, protože v tomto režimu používají i některé bity brány C jako signály STROBE a ACK. Pokud je v tomto režimu brána nastavena jako výstupní, po odeslání dat na bránu je automaticky generován signál STROBE, který periférii signalizuje, že jsou pro ni připravena data. Periférie potvrdí příjem dat aktivací signálu ACK. Po potvrzení příjmu obvod může vygenerovat signál INTR. Pokud je brána nastavena jako vstupní, obvod čeká na aktivaci signálu STROBE. Po jeho aktivaci přečte přítomná data a nastaví signál ACK. Podle nastavení obvodu se může opět vygenerovat signál INTR.
Obousměrný strobovaný režim je kombinací vstupního a výstupního strobovaného režimu. V tomto režimu může pracovat pouze brána A.
Využití bitů brány C ve strobovaných režimech brán A a B je uvedeno v následující tabulce:
režim brány A/B
brána A
brána B
bit brány C
vstupní
výstupní
obousměrný
vstupní
výstupní
0
INTR
INTR
1
ACK
STROBE
2
STROBE
ACK
3
INTR
INTR
INTR
4
STROBE
STROBE (z periférie)
5
ACK
ACK (z 8255)
6
ACK
ACK (z periférie)
7
STROBE
STROBE (z 8255)
Ve strobovaném režimu bran A a B určuje nastavení některých bitů brány C, zda se bude generovat signál INTR či nikoliv. Pro bránu A je toto nastavováno bitem 6 pro vstupní režim a bitem 4 pro výstupní režim. V obousměrném režimu je tak možné nastavit nezávisle generování signálu pro vstupní data a výstupní data. Pro bránu B je povolování generování signálu INTR nastavováno bitem 2 brány C.
Konfigurace obvodu
Konfigurace obvodu probíhá pomocí konfigurační brány, která je společná pro všechny tři brány.
Nastavení režimu bran
bit
7
6
5
4
3
2
1
0
1
režim brány A 00 - základní režim 01 - jednosměrný strobovaný režim 1x - obousměrný strobovaný režim
brána A vstup/výstup 0 - výstup 1 - vstup (v obousměrném režimu na hodnotě nezáleží)
brána C (bity 4 - 7) vstup/výstup 0 - výstup 1 - vstup
režim brány B 0 - základní režim 1 - jednosměrný strobovaný režim
brána B vstup/výstup 0 - výstup 1 - vstup
brána C (bity 0 - 3) vstup/výstup 0 - výstup 1 - vstup
Obvod umožňuje nezávislé nastavení jednotlivých bitů brány C. To je užitečné v případě, kdy se povoluje či zakazuje generování signálu INTR ve strobovaných režimech bran A a B.
Nezávislé nastavení jednotlivých bitů brány C
bit
7
6
5
4
3
2
1
0
0
číslo nastavovaného bitu
hodnota bitu
Analogické obvody
Tesla MHB8255A (Tesla Piešťany originál)MHB 8255
MCY 7855
NEC D8255AC-2
NEC D8255AC-5
Toshiba TMP8255AP-5
Tesla MHB8255A (OEM výroba Tungsram)КР580ВВ55А
Využití obvodu
Amstrad CPC
Obvod je použit v počítačích Amstrad CPC pro ovládání zvukového generátoru AY-3-8912, ukládání dat na magnetofon a ovládání magnetofonu a tiskárny a pro čtení klávesnice a čtení dat z magnetofonu.[1] Obvod 8255 je v počítačích Amstrad CPC připojen k portům:
šestnáctkově
dekódování
význam
F4xx
xxxx0x00 xxxxxxxx
brána A
F5xx
xxxx0x01 xxxxxxxx
brána B
F6xx
xxxx0x10 xxxxxxxx
brána C
F7xx
xxxx0x11 xxxxxxxx
řídicí registr
Obvod je využit i v IDE interface k těmto počítačům, kdy je obvod 8255 připojen k portům:[2][3]
šestnáctkově
význam
F8E6, FAE6, FCE6, FEE6
brána A
F9E6, FBE6, FDE6, FFE6
brána B
F8E7, FAE7, FCE7, FEE7
brána C
F9E7, FBE7, FDE7, FFE7
řídicí registr
Brány A a B slouží pro zápis a čtení dat.
IQ 151
Vestavěný obvod 8255A v počítačích IQ 151 je využit k ovládání klávesnice, zvukového výstupu a rozhranní pro komunikaci s magnetofonem.[4] Klávesnice počítače je, co se týká elektrického zapojení, organizována do matice 8×8 kláves, řádkové vodiče klávesnice jsou připojeny k bráně A, sloupcové vodiče jsou připojeny k bráně B.[4] Klávesy SHIFT, CONTROL, FA a FB jsou připojeny na vstupy 4 - 7 brány C.[4]
MAŤO
Počítač MAŤO využívá zabudovaný obvod 8255 ke čtení klávesnice a pro ukládání a načítání dat z magnetofonu. K zápisu a čtení dat z magnetofonu se používají dva bity brány C.[5] Pro čtení stavu klávesnice se používají brány A a B. Klávesnice počítače je, co se týklá elektrického zapojení, organizována do matice 7×7. Brána A slouží k nastavení bitové masky čteného sloupce klávesnice, na 7 bitech brány B pak lze přečíst, které klávesy byly stisknuty.[5] Osmý bit brány B slouží ke čtení stavu klávesy EOL.[5] Ke čtení stavu přeřaďovačů a klávesy STOP se používají bity brány C.[5]
Sharp MZ-700
Počítač Sharp MZ-700 má zabudovaný obvod 8255 společně s obvodem 8253. Oba obvody jsou připojeny do paměťového prostoru procesoru.[6] Obvod 8255 je připojen na adresy E000 - E003 (šestnáctkově).
Obvykle je obvod 8255 k těmto počítačům připojován na porty:[8]
desítkově
šestnáctkově
dekódování
význam
31
1F
000xxxxx
brána A
63
3F
001xxxxx
brána B
95
5F
010xxxxx
brána C
127
7F
011xxxxx
řídicí registr
Existují čtyři běžně používané způsoby, jak k počítači připojit prostřednictvím obvodu 8255 tiskárnu s rozhraním Centronics.[9] Brána A může být při takovémto připojení použita pro připojení Kempston joysticku.[10]
Existuje zapojení obvodu 8255, které používá porty 33, 35, 37 a 39 (šestnáctkově 21, 23, 25, 27).[11]
Společně s obvodem 8251 je obvod 8255 použit v interface Skywave Forth, což je interface s vlastní pamětí ROM pro podporu programování v jazyce Forth.[12] Dva obvody 8255 jsou použity v některých verzích hudebního interface Soundrive.