Autor Tema: Decrementar y comparar variable de 16 bit.  (Leído 4705 veces)

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

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Decrementar y comparar variable de 16 bit.
« en: 21 de Julio de 2012, 17:15:53 »
Ando traduciendo un 'if' en 'c', a asm, para que sea rápido, y no consigo hacerlo funcionar bien, el código es este, espero una ayuda:

en C:
Código: [Seleccionar]
ContBaseTiempo --;
if(ContBaseTiempo.tot == 0)
{
         output_bit(LED ,!input_state(LED));
         ContBaseTiempo.tot = BASE_TIEMPO;
}

En asm:
Código: [Seleccionar]
        movlw    1
         subwf    ContBaseTiempo.bt[0],f  ;parte baja de la variable
         btfss    STATUS,C
         goto     Sigue
         subwf    ContBaseTiempo.bt[1],f  ;parte alta de la variable
         btfss    STATUS,Z
         goto     Sigue
         goto     Dentro_if


         Dentro_if
              ;cuerpo del if

         Sigue
           ;fuera del if

Saludos.
« Última modificación: 21 de Julio de 2012, 17:28:50 por micro_pepe »
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #1 en: 21 de Julio de 2012, 17:32:15 »
el goto es incondicional creo, para un goto condicional deberias usar BRA

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #2 en: 21 de Julio de 2012, 17:43:51 »
el salto condicional que uso es btfss, los goto son para escribir el código más abajo.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #3 en: 21 de Julio de 2012, 19:06:12 »
lo que te quiero decir es que en el primer GOTO el codigo saltara y no se comparara la parte alta, ademas el salto lo hara si o si independientemente del resultado del BTFSS

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #4 en: 21 de Julio de 2012, 20:31:55 »
Que pic usas? Si es un 18f.hay otras instrucciones que ahorran ciclos de reloj.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #5 en: 21 de Julio de 2012, 21:48:03 »
Hola!

Lo más sencillo:

Código: ASM
  1. decfsz  ContBaseTiempo.bt[0],F
  2.         goto    Sigue
  3.  
  4.         decfsz  ContBaseTiempo.bt[1],F
  5.         goto    Sigue
  6.  
  7.         ;dentro del If
  8.  
  9. Sigue   ;fuera del if
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #6 en: 22 de Julio de 2012, 13:31:07 »
OK, BrunoF ese codigo funciona bien  :-/ :-/ muchas gracias a todos.

Tenia bastante olvidado el asm, los primeros programas los hice en asm, pero me pasé al lado oscuro del C.

Saludos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #7 en: 22 de Julio de 2012, 14:02:48 »
Hola micro. Mi código está mal! A ver...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #8 en: 22 de Julio de 2012, 14:13:05 »
Código: ASM
  1. movlw   .1
  2.         subwf   ContBaseTiempo.bt[0],F
  3.         btfss   STATUS,C
  4.         decf    ContBaseTiempo.bt[1],F
  5.  
  6.         movf    ContBaseTiempo.bt[0],W
  7.         iorwf   ContBaseTiempo.bt[1],W
  8.         btfss   STATUS,Z
  9.         goto    Sigue
  10.        
  11.         ;Dentro
  12.  
  13. Sigue:
« Última modificación: 22 de Julio de 2012, 14:18:29 por BrunoF »
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #9 en: 22 de Julio de 2012, 17:11:53 »
Hola micro. Mi código está mal! A ver...

Pues sí, estaba mal, pero el error era pequeño y a simple vista creí que estaba bien. Gracias de nuevo.

Saludos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #10 en: 23 de Julio de 2012, 03:03:15 »
Si, perdón por eso!

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Decrementar y comparar variable de 16 bit.
« Respuesta #11 en: 23 de Julio de 2012, 14:39:35 »
Si, perdón por eso!

Saludos.

Tranquilo, gracias por todo.

Saludos!
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡


 

anything