SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: betoelectronico en Lunes 6 de Julio de 2009, 20:49

Título: duda en el puerto paralelo
Publicado por: betoelectronico en Lunes 6 de Julio de 2009, 20:49
buenas...!soy nuevo en este foro. La verdad tengo un problema con un programa que estoy armando para un trabajo de la universidad .Queria hacer un miniascensor controlado por puerto paralelo y usando el lenguaje asm.
*las teclas 1 , 2 y 3 indicara los pisos a donde se movera el ascensor.
* 3 pulsadores simularan la sensores de ubicacion del ascensor y dicha señal sera enviada a la entradas del puerto paralelo.
*el puerto paralelo  enviara señales de salida para hacer girar un motor hacia arriba o hacia abajo.
cuando aprieto la tecla uno..el puerto paralelo  me envia la señal de salida hasta el motor y lo hace funcionar hasta que el interruptor del piso 1 se activa.ahi vamos bien.
Pero, Cuando aprieto el numero 3 para llevar el ascensor hasta el tercer piso, no hace lo mismo. porquee?? alguien me podria dar una mano en el programa? y me dice en que me estoy equivocando?
desde ya gracias:!
Título: Re: duda en el puerto paralelo
Publicado por: Eternal Idol en Lunes 6 de Julio de 2009, 22:12
¿Lo depuraste?

Código: ASM
  1. inicio1:
  2.         mov     ah,08h
  3.         int     21h
  4.         cmp     al,'0'
  5.         je      fin
  6.         cmp     al,'1'
  7.         je      inicio2
  8.         jmp     inicio_1
  9.  

Si es 0 termina (salta a fin), si es uno va a inicio2 y sino va a inicio1.
Título: Re: duda en el puerto paralelo
Publicado por: Toph en Lunes 6 de Julio de 2009, 23:28
Cita de: "betoelectronico"
buenas...!soy nuevo en este foro. La verdad tengo un problema con un programa que estoy armando para un trabajo de la universidad .Queria hacer un miniascensor controlado por puerto paralelo y usando el lenguaje asm.
*las teclas 1 , 2 y 3 indicara los pisos a donde se movera el ascensor.
* 3 pulsadores simularan la sensores de ubicacion del ascensor y dicha señal sera enviada a la entradas del puerto paralelo.
*el puerto paralelo  enviara señales de salida para hacer girar un motor hacia arriba o hacia abajo.
cuando aprieto la tecla uno..el puerto paralelo  me envia la señal de salida hasta el motor y lo hace funcionar hasta que el interruptor del piso 1 se activa.ahi vamos bien.
Pero, Cuando aprieto el numero 3 para llevar el ascensor hasta el tercer piso, no hace lo mismo. porquee?? alguien me podria dar una mano en el programa? y me dice en que me estoy equivocando?
desde ya gracias:!

 :huh:  Pues si seleccionas "3" va a inicio_1 donde esta otra rutina donde se espera que el usuario presione otra tecla, ¿eso es lo que quieres que si va para el piso 3 tenga que presionar dos veces tres?, si es asi al presionar "3" de nuevo, aparentemente funcionara porque manda un dato al puerto, espera ,revisa si ya esta apaga y espera tal cual se hizo cuando se seleccionaba el piso "1".
Título: Re: duda en el puerto paralelo
Publicado por: Eternal Idol en Lunes 6 de Julio de 2009, 23:35
¿A quien se le ocurre poner etiquetas llamadas inicio1 e inicio_1? En fin, ILEGIBLE.
Título: Re: duda en el puerto paralelo
Publicado por: betoelectronico en Martes 7 de Julio de 2009, 19:51
Gracias amigos, por su pronta respuesta. Probando asi como esta el programa, cuando aprieto el 1 (desde el teclado), el puerto paralelo me envia `la corriente de salida  para hacer funcionar el motor ,hasta que el pulsador (del piso 1) se activa.En este momento el puerto paralelo deja de 'mandar'corriente y el motor deja de funcionar. hasta ahi vamos bien.
      Pero cuando aprieto el numero 3 del teclado, el puerto paralelo me envia corriente solamente si mantengo apretado dicha tecla. La idea es que apriete una sola vez y el puerto paralelo me envie a la salida el hexadecimal 22h hasta que el pulsador (del piso 3) se active.
   programa:
inicio1:
        mov     ah,08h     ;habilito el teclado
        int     21h
        cmp     al,'0'  ; compara con '0'
        je      fin  ;si la entrada en el teclado es '0' ..salgo del programa
        cmp     al,'1'  ; compara con 1
        je      inicio2 ; si es igual a 1 salta a inicio2 ,en esa etiqueta envia el 21h a la salida hasta  q se activa el pulsador1
        jmp     inicio_1 ; si no es igual a 1,va hasta etiqueta inicio_1 para preguntar si el numero ingresado fue 3.


En el caso que quiera depurarlo, como hago??Yo pienso que hay algun paso que me estoy salteando.  :(
En cuanto a los nombres de la etiquetas..lo usabamos en clases. Fue idea de mi profesor  :P
espero sus respuestass
Título: Re: duda en el puerto paralelo
Publicado por: Eternal Idol en Martes 7 de Julio de 2009, 20:36
Bueno que gran profesor ... en la etiqueta ilegible que uses no vuelvas a pedir el numero por teclado, con una vez que lo pidas tendria que ser suficiente aunque tal vez tu profesor no lo quiera asi  :lol:
Título: Re: duda en el puerto paralelo
Publicado por: betoelectronico en Martes 7 de Julio de 2009, 20:49
hola amigo..jeje..la verdad q si. bueno..pero en fin, como corrijo mi problema?? yo nose como hacerlo andar?vos q opinas? yo kiero que tocando el numero 1 ,el ascensor vaya al piso 1,si toco el 3 ,vaya al piso 3, si aprieto el dos vaya al piso 2.usare 3 pulsadores que me indicaran la ubicacion del ascensor.
Título: Re: duda en el puerto paralelo
Publicado por: Eternal Idol en Martes 7 de Julio de 2009, 21:14
Aca tenes un ejemplo simple:
Código: ASM
  1. menu:
  2. ;aca escribirias tambien las opciones en pantalla supongo
  3. mov ah, 08h
  4. int 21h
  5. cmp al, '0'
  6. je fin
  7. cmp al, '1'
  8. je piso_1
  9. cmp al, '2'
  10. je piso_2
  11. cmp al, '3'
  12. je piso_3
  13. ;no era ninguna opcion valida, leemos del tecladode nuevo
  14. jmp main
  15.  
  16. piso_1:
  17. ;codigo o llamada a funcion
  18. jmp main
  19. piso_2:
  20. ;codigo o llamada a funcion
  21. jmp main
  22. piso_3:
  23. ;codigo o llamada a funcion
  24. jmp menu
  25. fin:
  26. ret
  27.  
Título: Re: duda en el puerto paralelo
Publicado por: betoelectronico en Miércoles 8 de Julio de 2009, 00:14
gracias amigo....lo armo al programa y te cuentoo que salio :)
Título: Re: duda en el puerto paralelo
Publicado por: Eternal Idol en Miércoles 8 de Julio de 2009, 00:34
De nadas  B)
Título: Re: duda en el puerto paralelo
Publicado por: betoelectronico en Miércoles 8 de Julio de 2009, 17:50
ya lo probe y no andaba igual. Pero luego me puse a urgar el circuito y descubri que habia un inconveniente en el circuito.lo solucione y ahora anda.
Pero ahora salio otro drama  <_<  ,resulta que cuando al ascensor lo llamo del piso2 , no funciona correctamente.
me puedes ayudar en esta ultimo problema que se me presenta??
ahi va adjuntado el programa modificado y explicado
Título: Re: duda en el puerto paralelo
Publicado por: Toph en Jueves 9 de Julio de 2009, 20:30
Cita de: "betoelectronico"
ya lo probe y no andaba igual. Pero luego me puse a urgar el circuito y descubri que habia un inconveniente en el circuito.lo solucione y ahora anda.
Pero ahora salio otro drama  <_<  ,resulta que cuando al ascensor lo llamo del piso2 , no funciona correctamente.
me puedes ayudar en esta ultimo problema que se me presenta??
ahi va adjuntado el programa modificado y explicado

Sino me equivoco, el error esta en que estando en piso2 le das que queres volver a piso1, la rutina piso1 no verifica en que piso esta el usuario sino que de un solo manda el 21h al puerto para girar el motor, lo mismo el piso3, de hecho el unico que verifica en que lugar esta el usuario es el piso2, lo cual te da muchos errores ya que si estando en el 3 le vuelves a dar 3 este mueve el motor sin saber que ya esta al maximo. En todos los pisos debes de verificar en que lugar esta el usuario antes que nada.

Debes de depurar tu programa, yo te recomiendo este excelentes simulador que puedes encontrar en esta pagina http://www.emu8086.com (http://www.emu8086.com" onclick="window.open(this.href);return false;), hay una version de evaluacion gratuita, te permite correr paso a paso tu aplicacion, ver que pasa con los registros, banderas e incluso escribe y lee del teclado y puede simular puertos virtuales.
Título: Re: duda en el puerto paralelo
Publicado por: betoelectronico en Viernes 10 de Julio de 2009, 00:09
gracias.te comento que para cuando lo llamo del piso 1 o del piso3, el ascensor funciona bien.
 yo anteriormente habia hecho como vos me propones hacer ahora y los resultados que tuve fue que cuando apretaba el numero 1 del teclado( para llamarlo a ese piso)..el led de salida,se prendia y se apagaba. osea..no se mantenia prendido hasta que el sensor del piso 1 se active.
me entiendes? por eso directamente hago como esta ahora, porque ahi funciona bien.
ahora probare con ese programa que me diste y vere
muchas gracias!