Ver Mensaje Individual
  #3  
Antiguo 09-03-2007
[jesusomarsanche] jesusomarsanche is offline
Miembro Premium
 
Registrado: may 2006
Posts: 11
Reputación: 0
jesusomarsanche Va por buen camino
espero te sirva

Código Delphi [-]
{*********************************************************
* Función......: Escribepuerto
* Descripción...: Escribe en un puerto un valor dado de 8 bits 0 a 255
* Parámetros....: direccion.- la direccion del puerto a escribir
* : valor.- valor a escribir en el puerto 0-255 (8 bits)
* Devuelve......:
* Fecha.........: 10-Marzo-2006
* Autor.........: basado en doc. de internet Juan Axelson's Parallel port FAQ
*********************************************************
* Resumen de modificaciones
* 15-03-2006 cambia parametro de smallint a word
*********************************************************}
Procedure TForm1.Escribepuerto(Direccion:Word;Valor:byte);
var
  lbvalor : byte  ;
begin
  lbvalor := byte(valor);
  asm                     {Empieza codigo en ensamblador}
    push dx               {graba el contenido del registro en DX}
    mov dx,direccion      {Grava el valor en el puerto}
    mov al,lbvalor
    out dx,al
    pop dx                {regresa el valor inicial al puerto}
  end;                    {termina codigo ensamblador}
end;
{*********************************************************
* Función......: Leepuerto
* Descripción...: Lee el valor que hay en un puerto
* Parámetros....: direccion.- la direccion del puerto a leer
* Devuelve......: smallin(lbvalor) and $00ff
* Fecha.........: 10-Marzo-2006
* Autor.........: basado en doc. de internet Juan Axelson's Parallel port FAQ
*********************************************************
* Resumen de modificaciones
* 15-03-2006 cambia parametro de smallint a word
*********************************************************}
Function TForm1.leepuerto(direccion:word):byte;
var
  lbvalor:byte;
begin
  asm                     {inicia codigo ensamblador}
    push dx               {conserva el valor del registro en dx}
    mov dx,direccion      {lee el valor que tiene el puerto}
    in al,dx
    mov lbvalor,al
    pop dx                {restaura el contenido de dx}
  end;
  leepuerto := byte(lbvalor) and $00FF;
end;
Responder Con Cita