Ver Mensaje Individual
  #2  
Antiguo 29-12-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Reputación: 27
egostar Va camino a la fama
Hola amigo [JoseFco], bienvenido al foro abierto, como acostumbramos te invito a que leas nuestra guia de estilo, por otro lado, necesitamos mas datos para una respuesta adecuada, por ejemplo, que errores te muestra al compilar el programa.

Otra de las cosas que te sugiero es que uses las etiquetas delphi para que el código se vea mejor.

Código Delphi [-]
 
unit Unit1;
 
interface
 
uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
     Button1: TButton;
     Timer1: TTimer;
     Edit1: TEdit;
     procedure Button1Click(Sender: TObject);
     procedure Timer1Timer(Sender: TObject);
     procedure Edit1Change(Sender: TObject);
     private
     { Private declarations }
       public
     { Public declarations }
  end;
 
var
  Form1: TForm1;
  data,status:byte;
 
const
  base = $3f8;{base address port serial}
  lcr = 3; {line control register}
  dll = 0; {divisor lacht low byte}
  dlh = 1; {divisor lacht high byte}
  lsr = 5; {line status register}
 
implementation
 
{$R *.dfm}
 
Procedure Initserial;
begin
  asm
    mov dx,base+lcr; {address line control register}
    mov al,$80 ; {10000000b = access bit divisor lacht}
    out dx,al;
    mov dx,base+dll; {address divisor lacht low byte}
    mov al,$30 ; {DLLB = 30h}
    out dx,al;
    mov dx,base+dlh; {address divisor lacht high byte}
    mov al,$00 ; {DLLH = 00h}
    out dx,al;
    {In this case Port Serial have};
    { baud rate = 2400 bps}
    mov dx,base+lcr;{address line control register}
    mov al,$03 ; {00000011b =}
    out dx,al ; {bit 7=0, access to Rx buffer & Tx;
    {bit 6=0, set break disable;
    {bit 5-4-3=000, no parity;
    {bit 2=0, one stop bit;
    {bit 1-0=11,data lenght 8 bit}
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  initserial;
  timer1.enabled:=true;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Repeat
    asm
      mov dx,base+lsr; { address line status register }
      in al,dx
      and al,$01 ; {LSR = 00000001b, deteksi bit 0}
      mov status,al ; {bit 0 = data ready}
    end;
  until status = $01 ;{ jika bit 0 = 1 then data ready}
  Receive_Data_Serial;
  edit1.text:=inttostr(data);
end;
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
  edit1.text:=inttostr(data);
end;
 
end.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita