Ir para conteúdo
Fórum Script Brasil
  • 0

Contador com Porta Paralela


Heitor Glöckner

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0
Aí gente, quero fazer um contador que receba um bit através de um sensor e o transmita a porta paralela, e quero que dentro do meu programa em delphi exista um contador responsável pela contagem do nº de bits recebidos, espero que possam me ajudar

Endereço do projeto quase completo

http://www2.eletronica.org/apostilas-e-ebo...la-paralela.pdf

//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.

Outras informações

http://www.linhadecodigo.com.br/Artigo.aspx?id=1057

http://www.rogercom.com/pparalela/ExemploImpOut32.htm

Acho que com isso voce já tera uma ideia inicial para o seu projeto

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...