Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
(interfaccia parallela)
Generalit
L'Intel 8255 implementa uninterfaccia di I/O parallela per sistemi delle famiglie 8085 e 8086 realizzato tramite un chip LSI di tipo DIP a 40 pin Permette di eseguire input/output di bit, nibble e byte in modo completamente programmabile via software Gestisce fino a 3 porte di Input/Output indipendenti da 1 byte ciascuna.
Il Chip
PA3 PA2 PA1 PA4 PA5 PA6 PA7
PA0
RD CS GND A1 A0 PC7 PC6 PC5 PC4 PC0 PC1 PC2 PC3 PB0 PB1
WR
RESET D0 D1 D2
D3
D4 D5 D6 D7
VCC
PB7 PB6 PB5 PB4 PB3
PB2
PB0-7:
PC0-7: RD: WR: CS: VCC: GND: A0-1: 4
PORT B
PORT C Read Control Write Control Chip Select System Power System Ground Address
RESET: Reset
Diagramma a Blocchi
Power supplies
Vcc GND Data Bus D7-D0 Buffer Group Group A
I/O PA7-PA0
A
Control
Bus
Data
PC7-PC4
I/O PC3-PC0
Internal
Group B Port C
lower
B
Control
Reset Logic CS
Modello Logico
Dal punto di vista del programmatore l'8255 si presenta come un insieme di 4 registri da 8 bit, corrispondenti alle 3 porte ed al Registro di Controllo. Accedendo ai registri associati alle 3 porte si esegue il trasferimento dati. Accedendo al Registro di Controllo si definisce il modo di funzionamento per ciascuna porta. Il Registro di Controllo pu essere solo scritto. I 4 registri sono accessibili tramite i pin D0-7, selezionando quello desiderato tramite i pin A0 e A1.
Segnali di Controllo
CS: un segnale basso sul comunicazioni tra CPU e 8255 pin CS abilita le
RD: un segnale basso sul pin RD abilita l8255 ad inviare il dato o linformazione di stato sul data bus per la CPU WR: un segnale basso sul pin WR abilita la CPU a scrivere il dato o il registro di controllo in un registro interno all8255
RESET: un valore logico alto sul segnale di RESET reinizializza il dispositivo. Tutte le porte sono riprogrammate in modo 0 in direzione Input.
7
0
1 1 8
1
0 1
Porta B
Porta C Registro di Controllo
A0
0 1
RD
0 0
WR
1 1
CS
0 0 Port A Data Bus Port B Data Bus
1
0 0
0
0 1
0
1 1
1
0 0
0
0 0
1
1 X
0
1 X
1
1 X
0
0 X
0
0 1
X
1 X 9
X
1 X
1
0 0
1
1 0
0
0 X
Modi di Funzionamento
Le porte dell8255 possono essere programmate in 3 modi operativi Modo 0: Basic Input/Output Modo 1: Strobed Input/Output
10
Gruppi
I 24 pin di I/O sono suddivisi in 2 Gruppi di 12 pin.
11
Parola di Controllo
La parola di controllo viene scritta dalla CPU nel registro di controllo dell8255. Pu avere due funzioni: programmazione del modo di funzionamento delle porte dell8255; scrittura di un valore logico in un singolo bit della porta C.
12
Programmazione 8255
1 GROUP A
PORT C (lower) Modo 00 = Modo 0 01 = Modo 1 1X = Modo 2 PORT A 1 = Input 0 = Output PORT C (upper) 1 = Input 0 = Output 1 = Input 0 = Output PORT B 1 = Input 0 = Output
D6
D5
D4
D3
D2
D1
D0 GROUP B
Modo
0 = Modo 0 1 = Modo 1
13
14
Bit Set/Reset
1 = Set 0 = Reset 01234567 00001111 00110011 01010101
15
Interrupt Control
In modo 1 e 2 alcuni segnali di controllo, provenienti dalla porta C, possono essere utilizzati per la richiesta di interrupt per la CPU. Tali segnali possono essere disabilitati o abilitati settando o resettando il flip-flop interno di interrupt enable (INTE) attraverso loperazione di bit set/reset della Porta C. INTE abilita linterrupt quando lopportuno bit della Porta C forzato ad 1.
16
17
Modo 0
2 Porte da 8 bit e 2 porte da 4 bit.
18
Esempio
D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 1 0 0 1 0
8
2 5 5
PA7-0
PC7-4
PC3-0 PB7-0
19
Modo 0 - Input
RD
Input
CS,A1,A0
DATA
Data Valid
Data Floating
20
Modo 0 - Output
WR
Data CS,A1,A0
Output
21
22
Modo 1
2 Gruppi.
Ogni gruppo composto da una porta di dato di 8 bit e da una porta di controllo di 4 bit.
I bit di dato possono essere di Input o di Output.
23
Temporizzazioni
STB
Funzionamento
IBF settato quando STB va basso, ed resettato dal fronte di salita di RD. INTR settato quando STB va alto, IBF alto, e INTE settato; resettato sul fronte di discesa di RD.
26
Modo 1: Input
D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0
1 0 1 1 1/0 X X X
PC 6,7 1=Input 0=Output PA7-0 INTEA PC4 PC5 PC3 RD PC6,7
2
1 X X X X 1 1 X
IBFA
INTRA
I/O
27
Temporizzazioni
WR OBF INTR
ACK
Data
29
Funzionamento
OBF settato sul fronte di salita di WR ed resettato quando ACK diventa basso. INTR resettato sul fronte di discesa di WR, ed settato quando ACK alto, OBF alto e INTE settato.
30
Modo 1: Output
D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0
1 0 1 0 1/0 X X X
PC 4,5 1=Input 0=Output PA7-0 INTEA PC6 PC7 PC3 WR PC4,5
2
1 X X X X 1 0 X
OBFA
INTRA
OBFB
INTRB
I/O
31
32
Modo 2
Disponibile solo per il Gruppo A.
33
Segnali di controllo
INTR: un valore alto pu essere usato per una richiesta di interrupt per la CPU.
OBF: un valore basso indica che la CPU ha scritto un dato sulla porta A. ACK: un valore basso abilita ad inviare il dato. STB: un valore basso carica il dato nellinput latch. IBF: un valore alto indica che il dato stato caricato sullinput latch. INTE1 (Interrupt Enable): controllato dal bit set/reset di PC6. INTE2 (Interrupt Enable): controllato dal bit set/reset di PC4. 34
Modo 2
D7 D6 D5 D4 D3 D2 D1 D0
INTE1
I/O
35
Data Bus
CPU
2
Address Bus Controllo
Stampante
Stato
36
STROBE: un impulso basso di durata superiore ad 1 microsecondo scrive sulla stampante un byte di dati;
ACK: la stampante invia un impulso basso per segnalare lavvenuta ricezione dei dati; BUSY: un livello logico alto indica che la stampante non pu ricevere dati; AUTOFDX: comanda alla stampante di andare alla pagina successiva;
37
ERRORE: un livello logico basso indica che la stampante si trova in stato di errore.
38
Protocollo di comunicazione
Dati
Dati validi
STR
Busy
ACK
39
Interfaccia 8255-Centronics
Porta A: Parola di Dato
Porta B: Stato della stampante Porta C: Controllo della stampante.
40
41
42
Programma
prDATA prSTAT prCTRL DELAY sERR sSEL sPE sACK sBUSYEQU cSTB EQU EQU EQU EQU EQU EQU EQU EQU 80h EQU 01h 0378h prDATA+1 prDATA+2 100 08h 10h 20h 40h ; indirizzo LPT1 ; porta B ; porta C ; ritardo ; attivo BASSO ; attivo ALTO ; attivo ALTO ; attivo BASSO ; attivo BASSO ; attivo ALTO
cAUTOEQU
cINITEQU 43 cSEL
02h
04h EQU 08h
; attivo ALTO
; attivo BASSO ; attivo ALTO
.MODEL small .STACK .DATA msg DB 'Ciao a tutti',0Dh,0Ah,0 .CODE .STARTUP MOV BX, OFFSET msg XOR SI, SI next: MOV AL, [BX][SI] CMP AL, 0 JE done CALL pr_al ;stampa un carattere INC SI JMP next done:.EXIT
44
pr_al
pr_n_ready:
DX AX AH, AL ; salva AL in AH DX, prSTAT AL, DX ; legge lo stato ; della stampante TEST AL, sERR JZ pr_error ; errore TEST AL, sBUSY JZ pr_n_ready ; busy TEST AL, sSEL JZ pr_n_ready ; on line
45
ciclo1:
ciclo2:
ciclo3: 46
MOV MOV OUT MOV LOOP MOV IN OR OUT MOV LOOP AND OUT MOV LOOP
AL, AH DX, prDATA DX, AL ; invia il dato CX, DELAY ciclo1 DX, prCTRL AL, DX AL, cSTB ; setta il bit di strobe DX, AL CX, 2*DELAY ciclo2 AL, not cSTB ; resetta lo strobe DX, AL CX, DELAY ciclo3
pr_done:
47