Autor Tema: Contador digital de 0 a 255  (Leído 13676 veces)

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

Desconectado Goodfrey

  • PIC12
  • **
  • Mensajes: 87
Re: Contador digital de 0 a 255
« Respuesta #15 en: 05 de Junio de 2010, 11:39:09 »
Claro que se desborda por el valor en W, la tabla tiene 9 posiciones de 0 a 8 y tu lo comparas con 9 y despues lo incrementas y se desborda, en las tablas se suma el PCL+W+1, el 1 es porque el programa para que corra el PIC internamente hace esta operacion PCL+1 para pasar a la siguiente instruccion, fijate cuando haces la primera suma, lleva en W el 0, seria PCL+0=PCL se quedaria ahi, sin embargo no se queda te da el primer valor de la tabla. Tambien tienes otros problemas, comparas con el valor que te devuelve la tabla y no con CUENTA2 que es el que se va incrementando, es CUENTA2 el que no debe exceder de 8. Esta comparacion la debes de hacer despues de INCF CUENTA2,1 ya que si miras que CUENTA2 no sea mayor de 8 y despues lo incremantas tambien se desbordara.
Prueba con este que modifique para SENOI1, pon en INICIO  "CLRF CUENTA2" para que cada vez que empieza empiece de 0, asi te deberia funcionar.



SENOI1   

   MOVF   CUENTA2,W            ;MUEVO A W EL VALOR DE CUENTA (0 INICIALMENTE)
   CALL   TABLA1               ;Llamamos a TABLA
   MOVWF   AUX3      
   INCF   CUENTA2,1               ;SUMO 1 A CUENTA PARA INCREME
   MOVF   CUENTA2,W                                                    ;MUEVO CUENTA2 A W Y LO DEJO EN W            
   XORWF   FACTOR3,0            ;COMPARO CON FACTOR EL VALOR DE CUENTA2
   BTFSC   STATUS,Z            ;PREGUNTO POR LA BANDERA Z   
   GOTO    SENOI2               ;SI SE LEVANTO VOY A TRIANG2
   MOVF   AUX3,0               ;MUEVO LO QUE TIENE AUX A W
   MOVWF   PORTB               ; cargamos W en el puerto B

   CALL   DEMORA               ;LLAMO AL RETARDO
   GOTO   SENOI1               ;va a TRIANG1


Gracias por tu respuesta amigo, sinceramente ya no se que pasa xq no logro hacer funcionar eso, simplemente se sigue desbordando la tabla... la secuencia esta bien los registros esta bien pero a la hora de hacer la comparacion con la xor y con el registro de la bandera z simplemente se sigue de largo y hay es cuando empieza el problema, no sabria decir si es que tengo que borrar la bandera z o algo asi... xq sinceramente ya no se que hacer el problema reca en estas lineas de codigo...

   XORWF   FACTOR3,0            ;COMPARO CON FACTOR EL VALOR DE CUENTA2
   BTFSC   STATUS,Z            ;PREGUNTO POR LA BANDERA Z   

simplemente no se levanta la bandera y por eso se desborda la tabla si alguien me puede ayudar con eso se lo agradeceria...

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Contador digital de 0 a 255
« Respuesta #16 en: 05 de Junio de 2010, 13:03:11 »
Ahora no se desborda en SENOI1 ahi va perfecto, se desborda la primera vez que llama a la tabla desde SENOI2 porque tiene un 9 en CUENTA2, te hice un arreglo de urgencia decrementandolo antes de entrar en SENOI2, Y YA TE VA, PRUEBALO, tuve que cambiar el GOTO SENOI2 por GOTO $+5, sino hacia dos decrementos, y se saltaba uno si uno no en la tabla, ahora creo que va.


SENOI1   

   MOVF   CUENTA2,W            ;MUEVO A W EL VALOR DE CUENTA (0 INICIALMENTE)
   CALL   TABLA1               ;Llamamos a TABLA
   MOVWF   AUX3      
   INCF   CUENTA2,1               ;SUMO 1 A CUENTA PARA INCREME
   MOVF   CUENTA2,W               ;MUEVO EL VALOR DE W A AUX

   XORWF   FACTOR3,0            ;COMPARO CON FACTOR EL VALOR DE W
   BTFSC   STATUS,Z            ;PREGUNTO POR LA BANDERA Z   
   GOTO    $+5               ;SI SE LEVANTO VOY A TRIANG2
   MOVF   AUX3,0               ;MUEVO LO QUE TIENE AUX A W
   MOVWF   PORTB               ; cargamos W en el puerto BCUENTA2,F

   CALL   DEMORA               ;LLAMO AL RETARDO
   GOTO   SENOI1               ;va a TRIANG1


   DECF   CUENTA2,1   
SENOI2
                     ;AHORA CUENTA TIENE EL VALOR 1F QUE ES EL MAXIMO QUE SE CARGO EN EL PASO ANTERIOR
   MOVF   CUENTA2,W            ;IGUAL QUE LO ANTERIOR SOLO QUE AHORA DECIENDE EL VALOR DE CUENTA
   CALL   TABLA1               ; llamamos a TABLA
   MOVWF   AUX4
   XORWF   FACTOR2,0
   BTFSC   STATUS,Z   
   GOTO    FIN
   MOVF   AUX4,0
   MOVWF   PORTB               ; cargamos W en el puerto B
   DECF   CUENTA2,F            ; DECREMENTO EL VALOR DE CUENTA Y POR ESO LA GRAFICA DEFIENDE
   CALL   DEMORA
   GOTO   SENOI2

Desconectado Goodfrey

  • PIC12
  • **
  • Mensajes: 87
Re: Contador digital de 0 a 255
« Respuesta #17 en: 05 de Junio de 2010, 14:46:16 »
Ahora no se desborda en SENOI1 ahi va perfecto, se desborda la primera vez que llama a la tabla desde SENOI2 porque tiene un 9 en CUENTA2, te hice un arreglo de urgencia decrementandolo antes de entrar en SENOI2, Y YA TE VA, PRUEBALO, tuve que cambiar el GOTO SENOI2 por GOTO $+5, sino hacia dos decrementos, y se saltaba uno si uno no en la tabla, ahora creo que va.


SENOI1   

   MOVF   CUENTA2,W            ;MUEVO A W EL VALOR DE CUENTA (0 INICIALMENTE)
   CALL   TABLA1               ;Llamamos a TABLA
   MOVWF   AUX3      
   INCF   CUENTA2,1               ;SUMO 1 A CUENTA PARA INCREME
   MOVF   CUENTA2,W               ;MUEVO EL VALOR DE W A AUX

   XORWF   FACTOR3,0            ;COMPARO CON FACTOR EL VALOR DE W
   BTFSC   STATUS,Z            ;PREGUNTO POR LA BANDERA Z   
   GOTO    $+5               ;SI SE LEVANTO VOY A TRIANG2
   MOVF   AUX3,0               ;MUEVO LO QUE TIENE AUX A W
   MOVWF   PORTB               ; cargamos W en el puerto BCUENTA2,F

   CALL   DEMORA               ;LLAMO AL RETARDO
   GOTO   SENOI1               ;va a TRIANG1


   DECF   CUENTA2,1   
SENOI2
                     ;AHORA CUENTA TIENE EL VALOR 1F QUE ES EL MAXIMO QUE SE CARGO EN EL PASO ANTERIOR
   MOVF   CUENTA2,W            ;IGUAL QUE LO ANTERIOR SOLO QUE AHORA DECIENDE EL VALOR DE CUENTA
   CALL   TABLA1               ; llamamos a TABLA
   MOVWF   AUX4
   XORWF   FACTOR2,0
   BTFSC   STATUS,Z   
   GOTO    FIN
   MOVF   AUX4,0
   MOVWF   PORTB               ; cargamos W en el puerto B
   DECF   CUENTA2,F            ; DECREMENTO EL VALOR DE CUENTA Y POR ESO LA GRAFICA DEFIENDE
   CALL   DEMORA
   GOTO   SENOI2


gracias mi pana por tu ayuda, me a servido demasiado aqui te pongo las imagenes del resultado de las ondas...


 
     

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Contador digital de 0 a 255
« Respuesta #18 en: 05 de Junio de 2010, 15:16:21 »
Me alegro que te haya servido.   :-/ :-/

Las ondas es posible que se puedan mejorar cambiando algunos valores, aunque estan bastante bien.

Desconectado Goodfrey

  • PIC12
  • **
  • Mensajes: 87
Re: Contador digital de 0 a 255
« Respuesta #19 en: 05 de Junio de 2010, 15:48:36 »
Me alegro que te haya servido.   :-/ :-/

Las ondas es posible que se puedan mejorar cambiando algunos valores, aunque estan bastante bien.

si por eso ya termine de hacer lo facil... ahora viene lo dificil es algo complicado de decir.. xq tengo que modificar las frecuencias de las señales pero la cosa es que tengo que tomar en cuenta todo los otros pasos para sacar los retardos entre pasos y paso de la tabla... algo de explicar por aqui...

pero gracias por la ayuda de todas maneras cualquier cosa te consulto ok