Ler Dados da Porta Paralela
Olá a todos.
Gostaria de poder ler todos os pinos da porta paralela (LPT1)
Vi um exemplo no Rogercom.Com, onde ele mnostra como ler os primeiros oitos pinos ( conforme abaixo )
Const
Base = $378; //Endereço base da porta LPT;
Dados = Base+0; //Endereço para escrita dos dados;
Status = Base+1; //Endereço para leitura dos dados;
Controle = Base+2; //Endereço para escrita;
DadosEPP = Base+4; //ou Base+0, lê e escreve no modo EPP.
BIT0 = $01; // 0000-0001
BIT1 = $02; // 0000-0010
BIT2 = $04; // 0000-0100
BIT3 = $08; // 0000-1000
BIT4 = $10; // 0001-0000
BIT5 = $20; // 0010-0000
BIT6 = $40; // 0100-0000
BIT7 = $80; // 1000-0000
BIT8
BIT09
....
type
TPorta = class(TForm)
Function Recebe(PortaLpt:word):Byte; //Recebe byte da P.Paralela.
Procedure Envia(PortaLpt:word; Valor:byte); //Envia byte p/ a P.Paralela.
end;
var Form1: TForm1;
var Lpt: TPorta;
implementation
{$R *.DFM}
//-----------------------------------------------------------
Procedure TPorta.Envia(PortaLpt:word; Valor:byte);
begin
asm
mov dx,PortaLpt
mov al,Valor
out dx,al end;
end;
//-----------------------------------------------------------
Function TPorta.Recebe(PortaLpt:word):Byte;
Var ret:byte;
begin
asm
mov dx, PortaLpt
in al,dx
mov ret,al
end;
Recebe := ret;
end;
==================================
Gostaria de completar a rotina para ler todos os 32 pinos
Será alguém pode me ajudar (acho que preciso determinar os proximos endereços Hexadecimais da sequecia...
Abraços
Neto
Gostaria de poder ler todos os pinos da porta paralela (LPT1)
Vi um exemplo no Rogercom.Com, onde ele mnostra como ler os primeiros oitos pinos ( conforme abaixo )
Const
Base = $378; //Endereço base da porta LPT;
Dados = Base+0; //Endereço para escrita dos dados;
Status = Base+1; //Endereço para leitura dos dados;
Controle = Base+2; //Endereço para escrita;
DadosEPP = Base+4; //ou Base+0, lê e escreve no modo EPP.
BIT0 = $01; // 0000-0001
BIT1 = $02; // 0000-0010
BIT2 = $04; // 0000-0100
BIT3 = $08; // 0000-1000
BIT4 = $10; // 0001-0000
BIT5 = $20; // 0010-0000
BIT6 = $40; // 0100-0000
BIT7 = $80; // 1000-0000
BIT8
BIT09
....
type
TPorta = class(TForm)
Function Recebe(PortaLpt:word):Byte; //Recebe byte da P.Paralela.
Procedure Envia(PortaLpt:word; Valor:byte); //Envia byte p/ a P.Paralela.
end;
var Form1: TForm1;
var Lpt: TPorta;
implementation
{$R *.DFM}
//-----------------------------------------------------------
Procedure TPorta.Envia(PortaLpt:word; Valor:byte);
begin
asm
mov dx,PortaLpt
mov al,Valor
out dx,al end;
end;
//-----------------------------------------------------------
Function TPorta.Recebe(PortaLpt:word):Byte;
Var ret:byte;
begin
asm
mov dx, PortaLpt
in al,dx
mov ret,al
end;
Recebe := ret;
end;
==================================
Gostaria de completar a rotina para ler todos os 32 pinos
Será alguém pode me ajudar (acho que preciso determinar os proximos endereços Hexadecimais da sequecia...
Abraços
Neto
Neto
Curtidas 0
Respostas
Massuda
29/05/2005
Nem todos os pinos da porta paralela estão de fato conectados... se não me engano, apenas 24 dos 32 pinos são usados, sendo que alguns são somente leitura e outros são somente escrita (devido ao modo como o 8255 é usado no PC). Procure limitar a corrente drenada da porta paralela a 500mA (não estou certo desse valor, talvez seja menos). Uma fonte de informação geral sobre a porta paralela é [url=http://www.lvr.com/parport.htm]esta página[/url] (em inglês).
GOSTEI 0