• Martes 30 de Abril de 2024, 06:33

Autor Tema:  Leer y escribir en puertos paralelos  (Leído 1355 veces)

jsoldi

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Leer y escribir en puertos paralelos
« en: Viernes 3 de Octubre de 2003, 02:47 »
0
Hola a todos. ¿Alguien sabe cómo leer y escribir directamente en puertos paralelos en Windows sin que me salga una excepción? ¿Es posible hacer esto o necesito instalar algún controlador? Y si es posible, ¿se supone que cada bit de la memoria donde voy a escribir y leer es un pin del puerto o es más complicado? Lo que sucede es que quiero conectarlo a un dispositivo que todavía no existe, y que un amigo que estudia electrónica va a hacer, pero ni el ni yo sabemos bien como es el asunto de la comunicación entre la PC y el dispositivo. Espero que alguien me pueda ayudar con esto. Gracias.

Alfil de Hierro

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Leer y escribir en puertos paralelos
« Respuesta #1 en: Viernes 4 de Junio de 2004, 00:26 »
0
:hola:  Soy nuevo en el foro y veo que esta algo viejita esta pregunta me refiero a cuando  la hiciste. Espero que aún necesites esta información hay te va un ejemplo. ;)

; pto.asm: Conector Centronics leds en pin-2/pin-19 y pin-9/pin-30.
; Operación: Enciende pin-9, enter, enciende pin-2, enter, flasher.

BITS 16
ORG 0x0100
SECTION .text

Main
  mov   dx, 378h ; direccion de DATA-PORT
  mov   al, 80h  ; led-d7=on (pin-9)
  out   dx, al
  call   Getch
  mov   al, 1    ; led-d0=on (pin-2)
  out   dx, al
  call   Getch
  call   Flash
  xor   al, al   ; apagar leds
  out   dx, al
  int   20h

Flash ; Prende/Apaga "cx" veces ambos leds
  mov   cx, 14h  ; repeticiones
  mov   al, 80h  ; experimentar con "81h"
Fciclo:
  out   dx, al
  xor   al, 81h
  push   cx
  call   Delay
  pop   cx
  loop   Fciclo
  ret

Getch ; Espera tecla ENTER
  push   dx ; save port-addr
  mov   dx, Msj
  mov   ah, 9
  int   21h
  mov   ah, 10h
  int   16h
  pop   dx ; restore port-addr
  ret

Delay ; Retardo
  mov   cx, 10ffh
D10:
  push   cx
D20:
  loop   D20
  pop   cx
  loop   D10
  ret

SECTION .data

 Msj db 'Pulse enter para continuar',10,13,'$'

 :whistling: Espero sirva