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 <stdio.h> #include <dos.h> 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 <stdio.h> #include <dos.h> void main(void) { int p; p=0x378; outportb(p,0); }