Informações sobre o curso.
Funções em Delphi
Para controle da Porta Paralela
Por: Antônio Rogério Messias
Página 1 de 1     Home  Índice  
FUNÇÕES ESCRITAS EM DELPHI PARA ENVIAR E RECEBER DADOS ATRAVÉS DA PORTA PARALELA
Para uso particular ou educacional.
Copyright(c) 1999-2006 ROGERCOM.COM
Todos os direitos reservados.

//Funções para leitura e escrita na Porta Paralela usando o DELPHI.
//Por: Antonio Rogério Messias
//Compile no DELPHI.
//www.rogercom.com
//rogercom@rogercom.com
//--------------------------------------------------------

unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;

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
type
     TForm1 = class(TForm)
        Timer1: TTimer;
        Label1: TLabel;
        ButtonSair: TButton;
        procedure Timer1Timer(Sender: TObject);
        procedure ButtonSairClick(Sender: TObject);
        private { Private declarations }
        public { Public declarations }
end;

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;
//-----------------------------------------------------------
procedure TForm1.Timer1Timer(Sender: TObject);
var Valor:Byte;
begin
     Lpt.Envia(Controle,32); //Habilita leitura EPP.
     Valor := not Lpt.Recebe(DadosEPP); //Lê o valor.
      if (Valor and BIT0) = BIT0 then //Verifica estado do primeiro bit;
      begin
            Form1.Caption := 'Bit na posição 0 OK!';
            beep();
      end
      else if
(Valor and BIT1) = BIT1 then //Verifica estado do segundo bit;
      begin
            Form1.Caption := 'Bit na posição 1 OK!';
            beep();
       end
       else if
(Valor and BIT2) = BIT2 then //Verifica estado do terceiro bit;
       begin
            Form1.Caption := 'Bit na posição 2 OK!';
            beep();
       end
       else if (Valor and BIT3) = BIT3 then //Verifica estado do quarto bit;
       begin
            Form1.Caption := 'Bit na posição 3 OK!';
            beep();
       end
       else if
(Valor and BIT4) = BIT4 then //Verifica estado do quinto bit;
       begin
            Form1.Caption := 'Bit na posição 4 OK!';
            beep();
       end
       else if (Valor and BIT5) = BIT5 then //Verifica estado do sexto bit;
       begin
            Form1.Caption := 'Bit na posição 5 OK!';
            beep();
       end
       else if
(Valor and BIT6) = BIT6 then //Verifica estado do sétimo bit;
       begin
            Form1.Caption := 'Bit na posição 6 OK!';
            beep();
       end
       else if
(Valor and BIT7) = BIT7 then //Verifica estado do oitavo bit;
       begin
            Form1.Caption := 'Bit na posição 7 OK!';
            beep( );
       end;
end;
//-----------------------------------------------------------
procedure TForm1.ButtonSairClick(Sender: TObject);
begin
    Lpt.Envia(Controle,0); //Desabilita leitura EPP.
    Close; //Finaliza o programa.
end;
end.

 

    


Volta à página principal. 
 

Índice dos artigos.
http://www.rogercom.com
© Copyright, 1999-2006 ROGERCOM - Antonio Rogério Messias - rogercom@rogercom.com
Todos os Direitos Reservados - All Rights Reserved.