PORTA PARALLELA
Schema elettrico per la gestione dell'input / output :

Mappatura completa dei pin :
S : STATUS PORT D : DATA PORT C : CONTROL PORT
(*) : ATTIVO BASSO
C 1 IN (DATA #0) : STROBE*, RESERVED (*)
D 2 OUT (DATA #0)
D 3 OUT (DATA #1)
D 4 OUT (DATA #2)
D 5 OUT (DATA #3)
D 6 OUT (DATA #4)
D 7 OUT (DATA #5)
D 8 OUT (DATA #6)
D 9 OUT (DATA #7)
S 10 IN (DATA #6) : ACK
S 11 IN (DATA #7) : BUSY* (appaiato al pin16)
S 12 IN (DATA #5) : PAPER OUT, PAPER END
S 13 IN (DATA #4) : SELECT IN
C 14 IN (DATA #1) : AUTOLINEFEED*, RESERVED (*)
S 15 NC : ERROR*
C 16 IN (DATA #2) : INIT, IRQ* (*) (appaiato al pin11)
C 17 IN (DATA #3) : SELECTPRINTER*, ERROR (*)
18 GROUND : per i pin2..9 cioé OUT(DATA #0..7)
19 GROUND : per il pin1 cioé IN(DATA #0)
20 GROUND : per il pin10 cioé IN(DATA #6)
21 GROUND : per il pin12 cioé IN(DATA #5)
22 GROUND : per il pin13 cioé IN(DATA #4)
23 GROUND : per il pin14 cioé IN(DATA #1)
24 GROUND : per il pin15
25 GROUND : per il pin17 cioé IN(DATA #3)
BASE=378H @ LPT1
BASE+0 : "D" : OUT
BASE+1 : "S" : IN
BASE+2 : "C" : IN/OUT
realizzazione della parte output su una scheda millefori :

PROGRAMMI PER ACCENDERE/SPEGNERE UN LED COLLEGATO ALLA PORTA PARALLELA DEL PC :
Per rendere più agevole la comprensione del codice sorgente,
nei programmi che seguono si dà per scontato che la porta
utilizzata sia la LPT1 (mappata nel bios all'indirizzo 378H)
linguaggio : ASSEMBLER, scopo : accensione del led
il led in questione corrisponde al DATO #0 in uscita ( che é collegato al pin #0 )
Attenzione : il led é acceso di default
title porta parallela
stack segment para stack 'stack'
; istruzioni
stack ends
data segment para public 'data'
; inserimento dati
data ends
code segment para public 'code'
main proc far
assume cs:code
push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
assume ds:data
; **** inizio del programma ****
mov dx,378h
mov al,1h
out dx,al
; **** fine del programma ****
ret
main endp
code ends
end main
|
linguaggio : ASSEMBLER, scopo : spegnimento del led
il led in questione corrisponde al DATO #0 in uscita ( che é collegato al pin #0 )
Attenzione : generalmente, dopo qualche secondo il led si riaccenderà
title porta parallela
stack segment para stack 'stack'
; istruzioni
stack ends
data segment para public 'data'
; inserimento dati
data ends
code segment para public 'code'
main proc far
assume cs:code
push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
assume ds:data
; **** inizio del programma ****
mov dx,378h
mov al,0h
out dx,al
; **** fine del programma ****
ret
main endp
code ends
end main
|
linguaggio : C (Borland), scopo : accensione del led
il led in questione corrisponde al DATO #0 in uscita ( che é collegato al pin #0 )
Attenzione : il led é acceso di default
#include
#include
void main(void)
{
int p;
p=0x378;
outportb(p,1);
}
|
linguaggio : C (Borland), scopo : spegnimento del led
il led in questione corrisponde al DATO #0 in uscita ( che é collegato al pin #0 )
Attenzione : generalmente, dopo qualche secondo il led si riaccenderà
#include
#include
void main(void)
{
int p;
p=0x378;
outportb(p,0);
}
|