Autor Tema: alguien me puede ayudar con respuestas exactas ?  (Leído 8095 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Mind-field

  • PIC12
  • **
  • Mensajes: 60
alguien me puede ayudar con respuestas exactas ?
« en: 21 de Mayo de 2009, 13:14:21 »
Hola buen dia ! tengo una pregunta ! , por que no funciona este codigo ? , esta libre de errores , al momento de simularlo en isis el programa no hace nada o hace algo erroneo ! , el codigo es este !


;SISTEMA DE GOBIERNO DESDE ORDENADOR Desde el teclado de un ordenador se desea comandar
;el movimiento de una estructura mavil, segun la siguiente tabla:
;
;      TECLA (Por ejemplo)       MOVIMIENTO
;      -------------------       ----------
;              t                 Adelante
;              b                 Atrás
;              a                 Izquierda
;              l                 Derecha
;            Espacio             Parada
;
;El programa debe permitir modificar facilmente en posteriores revisiones en el harware de
;la salida, Es decir, para activar las salidas conviene utilizar el direccionamiento por bit
;en lugar de por byte(utilizar instrucciones "bsf" y "bcf", en lugar de "mov")
;
;ZONA DE DATOS***********************************************************************************
;
      LIST    p=16f84A
      INCLUDE <P16f84A.INC>

 __config _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC

      CBLOCK 0x0c
      TeclaPulsada                  ;va a guardar el contenido de la tecla pulsada.
      MensajeApuntado                  ;Va a guardar la dirección del mensaje apuntado.
      ENDC

#DEFINE SalidaAdelante         PORTB,3            ;Define dómde se situan las salidas.
#DEFINE SalidaAtras         PORTB,2
#DEFINE SalidaIzquierda         PORTB,1
#DEFINE SalidaDerecha         PORTB,0

TeclaAdelante   EQU   't'                  ;Código de las teclas utilizadas
TeclaAtras   EQU   'b'
TeclaIzquierda   EQU   'a'
TeclaDerecha   EQU   'l'
TeclaParada   EQU   ' '                  ;Código de la tecla espaciadora, (hay un espacio,
                           ;tener cuidado al teclear el programa).
;ZONA DE cÓDIGOS*************************************************************************
      
      ORG   0
Inicio
      ;call      LCD_Inicializa
      call      RS232_Inicializa
      bsf      STATUS,RP0               ;Configura como salida las 4 lineas del
      bcf      SalidaAdelante               ;puerto B respetando la configuracion del
      bcf      SalidaAtras               ;resto de las líneas.
      bcf      SalidaIzquierda
      bcf      SalidaDerecha
      bcf      STATUS,RP0
      call      Parado                  ;En principio todas las salidas deben estar
Principal                           ;apagadas.
      call      RS232_LeeDato               ;Espera a recibir un carácter.
      call      TesteaTeclado
      goto      Principal

;"Mensajes"------------------------------------------------------
;
Mensajes
      addwf   PCL,F
MensajeParado
      DT"Sistema PARADO",0x00
MensajeAdelante
      DT"Marcha ADELANTE",0x00
MensajeAtras
      DT"Marcha ATRAS",0x00
MensajeIzquierda
      DT"Hacia IZQUIERDA",0x00
MensajeDerecha
      DT"Hacia DERECHA",0x00

;Subrutina"TesteaTeclado"----------------------------------------------
;
;Testea el teclado y actúa en consecuencia.

TesteaTeclado
      movwf   TeclaPulsada      ;Guarda el contenido de la tecla pulsada
      xorlw   TeclaAdelante      ;¿Es la tecla de movimiento hacia adelante?
      btfsc   STATUS,Z
      goto   Adelante      ;Si, se desea movimiento hacia adelante
;
      movf   TeclaPulsada,w      ;Recupera el contenido de la tecla pulsada
      xorlw   TeclaAtras      ;¿Es la tecla de movimiento hacia atras?
      btfsc   STATUS,Z
      goto   Atras         ;Sí, se decea movimiento hacia atras
;
      movf   TeclaPulsada,W      ;Recupera el contenido de la tecla pulsada
      xorlw   TeclaIzquierda      ;¿Es la tecla del movimiento hacia la Izquierda
      btfsc   STATUS,Z
      goto   Izquierda      ;Sí, se decea movimiento hacia atras
;
      movf   TeclaPulsada,w      ;Recupera el contenido de la tecla pulsada
      xorlw   TeclaDerecha      ;¿Es la tecla del movimiento hacia la Derecha?
      btfsc   STATUS,Z
      goto   Derecha         ;Sí, se decea movimiento hacia la derecha
;
      movf   TeclaPulsada,W      ;Recupera el contenido de la tecla pulsada
      xorlw   TeclaParada      ;¿Es la tecla de parada?
      btfss   STATUS,Z

      goto   FIN         ;No es ninguna tecla de movimiento sale
Parado
      bcf   SalidaAdelante      ;Como se a pulsado la tecla de parada se
      bcf   SalidaAtras      ;desactivan todas las salidas
      bcf   SalidaIzquierda
      bcf   SalidaDerecha
      movlw   MensajeParado
      goto  Visualiza
Adelante
      bcf   SalidaAtras
      bsf   SalidaAdelante
      bcf   SalidaIzquierda
      bcf   SalidaDerecha
      movlw   MensajeAdelante
      goto  Visualiza
Atras
      bcf   SalidaAdelante
      bsf   SalidaAtras
      bcf   SalidaIzquierda
      bcf   SalidaDerecha
      movlw   MensajeAtras
      goto  Visualiza
Izquierda
      bcf   SalidaAdelante
      bcf   SalidaAtras
      bsf   SalidaIzquierda
      bcf   SalidaDerecha
      movlw   MensajeIzquierda
      goto  Visualiza
Derecha
      bcf   SalidaAdelante
      bcf   SalidaAtras
      bcf   SalidaIzquierda
      bsf   SalidaDerecha
      movlw   MensajeDerecha

;Según el estado de las salidas visualiza el estado del sistema en el visualizador LCD y en
;el monitor del ordenador.

Visualiza
;      movwf   MensajeApuntado      ;Guarda la posición del mensaje.
;      call   LCD_Borra      ;Borra la pantalla del modulo LCD.
;      movf   MensajeApuntado,W   ;Visualiza el mensaje en la pantalla
;      call   LCD_Mensaje      ;del visualizador LCD.
;      call   RS232_LineasBlanco   ;Borra la pantalla del modulo LCD.
;      movf   MensajeApuntado,W   
;      call   RS232_Mensaje      ;Lo visualiza en el hiperTerminal
;      call   RS232_LineasBlanco
FIN   return
   
      INCLUDE <RS232.INC>
      INCLUDE <RS232MEN.INC>
      ;INCLUDE <LCD_4BIT.INC>
      ;INCLUDE <LCD_MENS_INC>
      INCLUDE <RETARDOS.INC>

      END

como puedo solucionar esta situacin ??  Gracias por sus aportes !!.
« Última modificación: 22 de Mayo de 2009, 10:17:35 por un Moderador »

Desconectado Mind-field

  • PIC12
  • **
  • Mensajes: 60
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #1 en: 21 de Mayo de 2009, 14:02:26 »
 :-/  Bien ! les comento que hice una modificacion en estas lineas y anda levemente mejor ! si aportan les voy a agradecer enormemente !

      movwf   TeclaPulsada      ;Guarda el contenido de la tecla pulsada
      xorlw   TeclaAdelante      ;¿Es la tecla de movimiento hacia adelante?
      btfsc   STATUS,Z
      goto   Adelante      ;Si, se desea movimiento hacia adelante
;
      movwf   TeclaPulsada            ;movf   TeclaPulsada,w      ;Recupera el contenido de la tecla pulsada
      xorlw   TeclaAtras      ;¿Es la tecla de movimiento hacia atras?
      btfsc   STATUS,Z
      goto   Atras         ;Sí, se decea movimiento hacia atras
;
      movwf   TeclaPulsada      ;Recupera el contenido de la tecla pulsada
      xorlw   TeclaIzquierda      ;¿Es la tecla del movimiento hacia la Izquierda
      btfsc   STATUS,Z
      goto   Izquierda      ;Sí, se decea movimiento hacia atras
;
      movwf   TeclaPulsada      ;Recupera el contenido de la tecla pulsada
      xorlw   TeclaDerecha      ;¿Es la tecla del movimiento hacia la Derecha?
      btfsc   STATUS,Z
      goto   Derecha         ;Sí, se decea movimiento hacia la derecha
;
      movwf   TeclaPulsada      ;Recupera el contenido de la tecla pulsada
      xorlw   TeclaParada      ;¿Es la tecla de parada?
      btfss   STATUS,Z

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #2 en: 21 de Mayo de 2009, 15:25:10 »
Mira aquí, te va a ser muy útil.

No puedes postar dos veces el mismo mensaje! Lee las reglas del foro :wink:
No contesto mensajes privados, las consultas en el foro

Desconectado Mind-field

  • PIC12
  • **
  • Mensajes: 60
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #3 en: 21 de Mayo de 2009, 16:20:51 »
Gracias por avisarme amigo ! pero a menos que me digan lo contrario , yo considero que son dos cosas distintas ! una pregunta no es el duplicado de otra ! , tambien antes de postear esto lo avia pensado ! y gracias por tu aporte !! lo voy a revisar !.

Desconectado Mind-field

  • PIC12
  • **
  • Mensajes: 60
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #4 en: 21 de Mayo de 2009, 16:24:58 »
Citar
Publicado por: Suky

Mira aquí, te va a ser muy útil.

jajaja pense que era info de algun tipo ! , recuerdas el titulo de este post ?.

saludos !

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #5 en: 21 de Mayo de 2009, 16:36:06 »
En este hilo no indicaste cuales son los problemas que te surgieron y así es complicado ayudarte con respuestas exactas :mrgreen:
« Última modificación: 21 de Mayo de 2009, 16:39:15 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #6 en: 21 de Mayo de 2009, 16:41:01 »
y que se supone que debe hacer el programa???? mueve un carrito? que es lo que no funciona?? las teclas? las ordenes? que cuando le das adelante se te va para atras? que cuando ..... saldrian muchas mas interrogantes.

Se un poco mas claro al pedir ayuda para poder dar una respuesta exacta ...

Saludos
El papel lo aguanta todo

Desconectado Mind-field

  • PIC12
  • **
  • Mensajes: 60
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #7 en: 21 de Mayo de 2009, 17:15:50 »
ok ! mi problema es que este programa tendria que controlar 4 led's desde el teclado de mi pc ! pasando por el serie y conectandose a un pic , si no quedo claro entonces la secuencia seria : teclado (teclas : l,a,t,b,"espaciadora") > pc > puerto serie > pic > led's , el programa anda muy mal pero al compilar no trae errores !.

PD: no se nada de assembler , y es la segunda o tercera vez que posteo ! sean compasivos jejeje .

saludos !

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #8 en: 21 de Mayo de 2009, 17:31:56 »
Mmm ... esta un poco dificil ... pero en este hilo vi la respuesta a tu problema:

http://www.todopic.com.ar/foros/index.php?topic=23623.0

Suerte!  :D
Control Automático, DSP & Microcontroladores

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #9 en: 21 de Mayo de 2009, 17:32:09 »
Adjunta las librerías, no las coloques en el mensaje! Sino mas abajo de donde se escribe el mensaje hay una opción que dice "Opciones adicionales", ahí puedes cargar varios archivos o reúnelos todos en un *.rar. Así miramos eso también.

Y para leer algo de asm mira aquí.
No contesto mensajes privados, las consultas en el foro

Desconectado Mind-field

  • PIC12
  • **
  • Mensajes: 60
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #10 en: 21 de Mayo de 2009, 17:43:36 »
Buenisimooooo ! gracias amigos !! son buena onda  :-/ ahora adjunto todo !! ya los adjunte !! creo que no falta nada !!

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #11 en: 21 de Mayo de 2009, 19:00:28 »
Bien, ahora funciona. Tenia mal un return, dado que para llamar a rutina usabas en un caso call y en otro goto. Después cambie la forma de testear la tecla pulsada.

Código: ASM
  1. ;SISTEMA DE GOBIERNO DESDE ORDENADOR Desde el teclado de un ordenador se desea comandar
  2. ;el movimiento de una estructura mavil, segun la siguiente tabla:
  3. ;
  4. ;      TECLA (Por ejemplo)       MOVIMIENTO
  5. ;      -------------------       ----------
  6. ;              t                 Adelante
  7. ;              b                 Atrás
  8. ;              a                 Izquierda
  9. ;              l                 Derecha
  10. ;            Espacio             Parada
  11. ;
  12. ;El programa debe permitir modificar facilmente en posteriores revisiones en el harware de
  13. ;la salida, Es decir, para activar las salidas conviene utilizar el direccionamiento por bit
  14. ;en lugar de por byte(utilizar instrucciones "bsf" y "bcf", en lugar de "mov")
  15. ;
  16. ;ZONA DE DATOS***********************************************************************************
  17. ;
  18.                 LIST    p=16f84A
  19.                 #INCLUDE <P16f84A.INC>
  20.  
  21.  __config _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC
  22.  
  23.                 CBLOCK 0x0c
  24.                 TeclaPulsada                                            ;va a guardar el contenido de la tecla pulsada.
  25.                 MensajeApuntado                                         ;Va a guardar la dirección del mensaje apuntado.
  26.                 ENDC
  27.  
  28. #DEFINE SalidaAdelante                  PORTB,3                         ;Define dómde se situan las salidas.
  29. #DEFINE SalidaAtras                             PORTB,2
  30. #DEFINE SalidaIzquierda                 PORTB,1
  31. #DEFINE SalidaDerecha                   PORTB,0
  32.  
  33. TeclaAdelante   EQU     't'                                             ;Código de las teclas utilizadas
  34. TeclaAtras              EQU     'b'
  35. TeclaIzquierda  EQU     'a'
  36. TeclaDerecha    EQU     'l'
  37. TeclaParada             EQU     ' '                                             ;Código de la tecla espaciadora, (hay un espacio,
  38.                                                                         ;tener cuidado al teclear el programa).
  39. ;ZONA DE cÓDIGOS*************************************************************************
  40.                
  41.                 ORG     0
  42. Inicio
  43.                 ;call           LCD_Inicializa
  44.                 call            RS232_Inicializa
  45.                 bsf             STATUS,RP0                                      ;Configura como salida las 4 lineas del
  46.                 bcf             SalidaAdelante                                  ;puerto B respetando la configuracion del
  47.                 bcf             SalidaAtras                                     ;resto de las líneas.
  48.                 bcf             SalidaIzquierda
  49.                 bcf             SalidaDerecha
  50.                 bcf             STATUS,RP0
  51.                 goto            Parado                                          ;En principio todas las salidas deben estar
  52.                                                                                                 ;apagadas.
  53. Principal      
  54.                 call            RS232_LeeDato                                   ;Espera a recibir un carácter.
  55.                 movwf           TeclaPulsada
  56.                 call            TesteaTeclado
  57.                 goto            Principal
  58.  
  59. ;"Mensajes"------------------------------------------------------
  60. ;
  61. Mensajes
  62.                 addwf   PCL,F
  63. MensajeParado
  64.                 DT"Sistema PARADO",0x00
  65. MensajeAdelante
  66.                 DT"Marcha ADELANTE",0x00
  67. MensajeAtras
  68.                 DT"Marcha ATRAS",0x00
  69. MensajeIzquierda
  70.                 DT"Hacia IZQUIERDA",0x00
  71. MensajeDerecha
  72.                 DT"Hacia DERECHA",0x00
  73.  
  74. ;Subrutina"TesteaTeclado"----------------------------------------------
  75. ;
  76. ;Testea el teclado y actúa en consecuencia.
  77. TesteaTeclado
  78.                         movlw   TeclaAdelante      ;Guarda el contenido de la tecla adelante
  79.                         subwf   TeclaPulsada,0      ;¿Es la tecla de movimiento hacia adelante?
  80.                         btfsc   STATUS,Z
  81.                         goto    Adelante      ;Si, se desea movimiento hacia adelante
  82. ;
  83.                         movlw   TeclaAtras      ;Guarda el contenido de la tecla atras
  84.                         subwf   TeclaPulsada,0      ;¿Es la tecla de movimiento hacia atras?
  85.                         btfsc   STATUS,Z
  86.                         goto    Atras         ;Sí, se decea movimiento hacia atras
  87. ;
  88.                         movlw   TeclaIzquierda    ;Guarda el contenido de la tecla Izquierda
  89.                         subwf   TeclaPulsada,0      ;¿Es la tecla de movimiento hacia Izquierda?
  90.                         btfsc   STATUS,Z
  91.                         goto    Izquierda      ;Sí, se decea movimiento hacia Izquierda
  92. ;
  93.                         movlw   TeclaDerecha      ;Guarda el contenido de la tecla Derecha
  94.                         subwf   TeclaPulsada,0      ;¿Es la tecla de movimiento hacia Derecha?
  95.                         btfsc   STATUS,Z
  96.                         goto    Derecha         ;Sí, se decea movimiento hacia la derecha
  97. ;
  98.                         movlw   TeclaParada      ;Guarda el contenido de la tecla Parado
  99.                         subwf   TeclaPulsada,0      ;¿Es la tecla de movimiento hacia parado?
  100.                         btfsc   STATUS,Z
  101.                         goto    Parado         ;Sí, se decea movimiento hacia la Parado
  102.  
  103.                                 goto    FIN                     ;No es ninguna tecla de movimiento sale
  104.  
  105. Parado
  106.                 bcf     SalidaAdelante          ;Como se a pulsado la tecla de parada se
  107.                 bcf     SalidaAtras             ;desactivan todas las salidas
  108.                 bcf     SalidaIzquierda
  109.                 bcf     SalidaDerecha
  110.                 movlw   MensajeParado
  111.                 goto  Visualiza
  112. Adelante
  113.                 bcf     SalidaAtras
  114.                 bsf     SalidaAdelante
  115.                 bcf     SalidaIzquierda
  116.                 bcf     SalidaDerecha
  117.                 movlw   MensajeAdelante
  118.                 goto  Visualiza
  119. Atras
  120.                 bcf     SalidaAdelante
  121.                 bsf     SalidaAtras
  122.                 bcf     SalidaIzquierda
  123.                 bcf     SalidaDerecha
  124.                 movlw   MensajeAtras
  125.                 goto  Visualiza
  126. Izquierda
  127.                 bcf     SalidaAdelante
  128.                 bcf     SalidaAtras
  129.                 bsf     SalidaIzquierda
  130.                 bcf     SalidaDerecha
  131.                 movlw   MensajeIzquierda
  132.                 goto  Visualiza
  133. Derecha
  134.                 bcf     SalidaAdelante
  135.                 bcf     SalidaAtras
  136.                 bcf     SalidaIzquierda
  137.                 bsf     SalidaDerecha
  138.                 movlw   MensajeDerecha
  139.  
  140. ;Según el estado de las salidas visualiza el estado del sistema en el visualizador LCD y en
  141. ;el monitor del ordenador.
  142.  
  143. Visualiza
  144. ;               movwf   MensajeApuntado         ;Guarda la posición del mensaje.
  145. ;               call    LCD_Borra               ;Borra la pantalla del modulo LCD.
  146. ;               movf    MensajeApuntado,W       ;Visualiza el mensaje en la pantalla
  147. ;               call    LCD_Mensaje             ;del visualizador LCD.
  148. ;               call    RS232_LineasBlanco      ;Borra la pantalla del modulo LCD.
  149. ;               movf    MensajeApuntado,W      
  150. ;               call    RS232_Mensaje           ;Lo visualiza en el hiperTerminal
  151. ;               call    RS232_LineasBlanco
  152. FIN     goto Principal
  153.        
  154.                 #INCLUDE <RS232.INC>
  155.                 #INCLUDE <RS232MEN.INC>
  156.                 ;#INCLUDE <LCD_4BIT.INC>
  157.                 ;#INCLUDE <LCD_MENS_INC>
  158.                 #INCLUDE <RETARDOS.INC>
  159.  
  160.                 END

Lo adjunto también. Lo que estaba deshabilitado no lo revise.
No contesto mensajes privados, las consultas en el foro

Desconectado Mind-field

  • PIC12
  • **
  • Mensajes: 60
Re: alguien me puede ayudar con respuestas esactas ?
« Respuesta #12 en: 21 de Mayo de 2009, 19:13:05 »
Sos un capo !! !! !! Me saco el sombrero !! !! !! muy muchas gracias !! te debo el fernet !! o bueno si sos de cordoba te lo pago y listo ! ! muchas gracias por tu tiempo y por tu ayuda !!

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: alguien me puede ayudar con respuestas exactas ?
« Respuesta #13 en: 22 de Mayo de 2009, 10:18:34 »
He cambiado esactas por Exactas en el título.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Mind-field

  • PIC12
  • **
  • Mensajes: 60
Re: alguien me puede ayudar con respuestas exactas ?
« Respuesta #14 en: 22 de Mayo de 2009, 16:43:03 »
Gracias RedPic ! , siguiendo con el tema , no funciono el proyecto ! , Suky hace falta que te pase el circuito ?? lo tengo en proteus ! , lo que hace ahora es prender un solo led ! lo hace de forma mas rapida y sin errores como antes ! , pero solo prende un led ! , si puedes contestar Suky te agradecere ! estare viendo este post !