• Viernes 26 de Abril de 2024, 16:28

Autor Tema:  Necesito Ayuda Con Lpt Y Assembler  (Leído 7721 veces)

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Necesito Ayuda Con Lpt Y Assembler
« en: Viernes 11 de Junio de 2004, 22:01 »
0
Holas, saben, necesito un codigo de fuente de assembler que maneje el puerto paralelo de la forma que sea, tengo un circuito conectado a este puerto con 6 leds ubicados desde el pin 1 al 6, y conectados con el pin 18 para que exista la posibilidad de encenderlos. Necesito manejar los led's ya sea encenderlos y apagarlos o lo que sea, pero que funcione ojalá en un pentium 3.

Gracias, nos vemos.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #1 en: Viernes 11 de Junio de 2004, 23:03 »
0
unos mensajes abajo (buscalo Tommy es el iniciador) he puesto un codigo para comunicarte con el puerto paralelo ya sea enviando y recibiendo datos, en tu caso necesitaras estar enviando los datos como son seis leds tendrias que sacar el numero binario 111111 que en hexadecimal (el que usa el ensamblador)  es  "3F"
verifica el codigo cualquier duda escribela


 :comp: adios
No basta tener buen ingenio; lo principal es aplicarlo bien.

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #2 en: Lunes 14 de Junio de 2004, 16:31 »
0
Gracias, tengo otra duda, pero la pondre en otro topico.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #3 en: Lunes 14 de Junio de 2004, 16:39 »
0
Es esta...

el puerto paralelo esta dividido en 3 direcciones
0378 salida de 8 bits de datos
0379 entrada de 5 bits
037a entrada o salida de 4 bits

En el registro DX se coloca la direccion del puerto y en el registro AL el dato que se quiere enviar (si estamos recibiendo en AL se guarda el dato recibido)"ESTO ES ASI SIEMPRE SIN EXCEPCION", asi si tu tienes los datos que quieres enviar de la direccion 0500 a la 0600
tienes que hacer lo siguiente

mov bx,0500 ;cargas en bx la direccion inicial
ot: mov al,[bx] ;guardas en AL lo que tiene adentro de la 0500 (dato a enviar)
mov dx,0378 ;pones la direccion del puerto (salida)
out dx,al ;sacas el dato por el puerto de salida
mov cx,00fff ;esto es un retraso que colocamos para darle tiempo
at loop at ; al receptor de recibir el dato
inc bx ;incrementamos bx para pasarnos a la siguiente direccion
cmp bx,0600 ;verificamos si ya enviamos todos los caracteres que estaban
; en la 0500 a la 0600
jnz ot ; si no es asi nos vamos a ot (seguimos enviando)
int 20 ;fin del programa


ahora si quieres recibir tienes que hacer lo siguiente

mov dx,0379; direccion del puerto que funciona como entrada
in al,dx ; guardas en AL el dato recibido
pero esto es si los datos que vas a recibir son solo de 4 bits, si son de ocho tienes que hacer otro paso mas
mov dx,037a
in al,dx ;con esto capturas los otros cuatro bits

CUANDO LA PRUEBE TE AVISO SI ME FUNCIONA, ADEMAS QUE HAY PROBLEMAS CON LOS PROCESADORES, ME HAN DICHO QUE LO MEJOR ES UN 486, PERO NADIE LOS TIENE. GRAX.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

Super_G

  • Miembro MUY activo
  • ***
  • Mensajes: 375
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #4 en: Martes 15 de Junio de 2004, 04:00 »
0
Aclaracion:
El puerto paralelo maneja maneja 3 registros cada uno de los bits de estos registro se "reflejan" fisicamente en el puerto DB25.
Puerto de datos (Entrada/Salida) de 8bits, dir:378h*
Puerto de Estado(Lectura) 5Bits,
Puerto de control(Escritura) 4Bits.

*No hay problema en leer o escribir datos de 8 Bits!!!!!

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #5 en: Martes 15 de Junio de 2004, 15:41 »
0
ERRORES
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #6 en: Martes 15 de Junio de 2004, 15:42 »
0
EL CODIGO QUE ESTA MAS ARRIBA NO COMPILA. LO PROBE CON MASM (AGREGANDO LO NECESARIO) Y CON CODEX QUE COMPILA TAL COMO ESTA, PERO ARROJO ALREDEDOR DE 10 ERRORES, ADEMAS QUE TUVE QUE ARREGLAR CIERTAS LINEAS, COMO:

at loop at ; al receptor de recibir el dato

QUE NUNCA HABIA VISTO EN ASSEMBLER.

PORFA, PUEDES REVISAR EL CODIGO Y REENVIARLO?

O DECIRME CON QUE LO COMPILASTE KAREN81?

GRACIAS

LO DE LAS DIRECCIONES DE LOS PUERTOS ESTA MAS QUE CLARO, MUCHAS GRACIAS.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #7 en: Martes 15 de Junio de 2004, 22:43 »
0
Me hubiera gustado que me hubieras puesto el tipo de errores que te puso que habia ya que se pueden ver en el archivo .LST si son de sintaxis o de que???
Ahora, respecto a la instruccion at: loop at (talvez no te la entendio porque no le pusiste los dos puntos ya que at es una etiqueta igual cambiala por:

etiq:  loop etiq,  si quieres o cualquier etiqueta, lo que hace esta instruccion es estar saltando a ella misma hasta que CX valga cero, es decir cada salto decrementa cx (te ahorra estar decrementando manualmente cx para el retraso)
Ahora los errores que de seguro te dio fue porque solo copiaste lo que puse en el mensaje y lo pegaste y le pusiste la estructura de un archivo.asm.
Y no era asi la cosa, ese código es una idea basica para que supieras como se envian los datos, y esta echa para un principiante que apenas sabe usar el debug, pero creo que a ustedes no les enseñan el debug si no que de una vez el ensamblador , el debug trabaja con numeros hexadecimales mientras que el ensamblador trabaja con DECIMALES por eso te dio un error en mov cx,00FF, tenias que haber puesto mov cx,00FFh o pasar 00ff a decimal
otro error es esa instruccion int 20 ; que solo es para el debug (para que acabe porque ahi no se le puede poner END)
A CONTINUACION TE PONGO EL ARCHIVO COMO DEBE SER PARA EL ENSAMBLADOR (ya corregido todo)
ES EL ARCHIVO .LST QUE OBTUVE AL COMPILAR EL ARCHIVO.ASM Y VERAS QUE NO ME PUSO NI ERROR NI ADVERTENCIA NI NADA( Ahora segun la version de tu masm asi cambia la estructura, si me das tu correo te envio mi version de masm, si no te funciona en el tuyo)
Citar
 The Microsoft MACRO Assembler , Version 1.25             Page   1-1
               06-15-:4   


1           ;PROGRAMA DE ENVIO   
2           
3           
4           
5           
6           
7  0000         datos segment
8           
9         
10           
11  0000                            datos ends
12           
13  0000         pila segment stack
14           
15  0000     80 [             db 128 dup ('pila')
16                70 69 6C 61   
17                             ]   
18           
19           
20  0200                          pila ends
21           
22  0000         codigo segment
23           
24              assume cs:codigo, ss:pila, ds:datos
25  0000  BB 0500      inicio: mov bx,0500h
26  0003  8A 07      ot:      mov al,[bx]
27  0005  BA 0378                mov dx,0378h
28  0008  EE                                out dx,al   
29  0009  B9 00FF                mov cx,00FFh 
30  000C  E2 FE      AT:     loop AT     
31  000E  43                                inc bx       
32  000F  81 FB 0600                              cmp bx,0600h 
33                             
34  0013  75 EE                 jnz ot       
35               
36                       
37                       
38  0015         codigo ends
39           
40           end

 The Microsoft MACRO Assembler , Version 1.25             Page   Symbols
         -1
               06-15-:4   


Segments and groups:

     N a m e       Size   align   combine   class

CODIGO . . . . . . . . . . . . .   0015   PARA     NONE   
DATOS. . . . . . . . . . . . . .   0000   PARA     NONE   
PILA . . . . . . . . . . . . . .   0200   PARA     STACK 

Symbols:           

     N a m e       Type   Value   Attr         

AT . . . . . . . . . . . . . . .   L NEAR  000C   CODIGO
INICIO . . . . . . . . . . . . .   L NEAR  0000   CODIGO
OT . . . . . . . . . . . . . . .   L NEAR  0003   CODIGO

Warning Severe
Errors   Errors
0   0
saludos y cualquier cosa aqui seguimos  
  :flower:
No basta tener buen ingenio; lo principal es aplicarlo bien.

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #8 en: Miércoles 16 de Junio de 2004, 23:27 »
0
Gracias por la aclaracion, te aviso si no me resulta, tengo dos versiones del MASM.

Otra, pregunta, puse otro topic, porfa buscalo un poco mas abajo y si no entiendes te envio el codigo de fuente.

Gracias.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #9 en: Viernes 18 de Junio de 2004, 18:07 »
0
Me compilo bien, no envio ningun error, le hice las modificaciones para manejar lo que yo quiero que me muestre, pero no me funciona, que recomiendas utilizarlo bajo DOS, WIN98 o WINxXP?
O que mas habria que hacer?
Muchas gracias.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #10 en: Viernes 18 de Junio de 2004, 21:28 »
0
;) explicate mejor que es lo que quieres que te muestre
informacion en pantalla o que?, si es eso obviamente tienes que usar dos y las interrrupciones de ensamblador
No basta tener buen ingenio; lo principal es aplicarlo bien.

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #11 en: Lunes 21 de Junio de 2004, 15:04 »
0
Que encienda y apague leds conectados desde el punto 2 al 9 del LPT a traves de una protoboard, basado en una determinada secuencia o a traves de la pulsacion de teclas de el teclado. Lo unico que he visto com resultado es que se apaguen 3 y me mande errores de ejecucion del programa, y al omitir (en win xp), se vuelva a otro estado con otros 3 leds apagados, partiendo de que cuando enciendo el computador todos los leds estan encendidos.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #12 en: Martes 29 de Junio de 2004, 06:19 »
0
Eso que al inicio los led esten encendidos creo que es normal ya que los pines se ponen en uno, podrias al iniciar el programa mandar un cero por el puerto, pero como te decia la rutina que te puse ahi es una guia, incluso creo que olvide ponerle algo a la estructura del masm podria ser eso, pero podrias hacer un menu si me das tu correo te mando un programa que con un menu hace diferentes cosas si le tecleas 1. hace una suma si tecleas dos saca raiz cuadrada etc, les puedes quitar esas rutinas y ponerle la de sacar los datos por el puerto paralelo.
otra cosa el numero que sacas por el puerto se queda enganchado hasta que sacas otro dato


cualquier cosa me avisas   :hola:
No basta tener buen ingenio; lo principal es aplicarlo bien.

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #13 en: Martes 29 de Junio de 2004, 15:10 »
0
Entendi como hacerlo por C++, pero necesito assembler, ya puedo setear las luces, pero no alcanzo a ver los cambios sino que hace todo en una instante, le puse que contara en binario desde 0 a 255, pero lo hace muy rapido, como puedo darle tiempo en assembler?.

Te doy mi correo ayq eu tengo que presentar una examen y quiza tu programa me ayude.

neoprogresivo@hotmail.com

Muchas gracias.

Espero tu pronta respuesta.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #14 en: Jueves 1 de Julio de 2004, 10:21 »
0
;) obviamente no puedes ver los cambios en los leds por que vas contanto en fracciones de segundo lo que debes hacer es colocarles un retraso que se yo de un segundo o mas entre cada dato que envias eso lo haces con lazos verifica en tu set de instrucciones cuanto se tarda cada instruccion y has tu lazo que se tarde un segundo en salirse de el.

este retraso que te pongo aqui se podria decir que es el maximo
lazo1  mov cx,ffffh
lazo2: loop lazo2

lo que se hace es repetirlo varias veces de la siguiente forma
         mov bx,00ffh
lazo1  mov cx,ffffh
lazo2: loop lazo2
          dec bx
          jnz lazo1
 
pruebalo si es muy grande disminuyele bx y si no ves cambio porque el retraso es muy pequeño  aumentale bx poco a poco hasta llegar a ffffh si es necesario
 
en cuanto al programa que te dije no lo tengo en la computadora lo tengo a mano tendria que digitarlo , estos dias estare ocupada si no te urge avisame asi podria digitarlo el fin de semana o cualquier dia de la otra semana pero si es urgente no te lo puedo mandar.

adios :comp:
No basta tener buen ingenio; lo principal es aplicarlo bien.

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #15 en: Martes 6 de Julio de 2004, 15:51 »
0
:kicking:  :D  :D  :D  :D  :D  B)  B)  B)  B)  B)  :smartass:  :smartass:  :smartass:  Muchisimas gracias, por fin me resulto, tenias razon, la rutina me daba el tiempoi que necesitaba para poder ver los cambios. Acabo de entregar la tarea y ahora solo espero que le guste al profesor.
Nos vemos, y de nuevo muchas gracias.-
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Necesito Ayuda Con Lpt Y Assembler
« Respuesta #16 en: Jueves 8 de Julio de 2004, 05:23 »
0
:) Espero que te pongan buena nota, cualquier otra duda aqui estamos
adios :hola:
No basta tener buen ingenio; lo principal es aplicarlo bien.