Autor Tema: pregunta sobre el cero en un contador  (Leído 1411 veces)

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

Desconectado ger_va

  • PIC10
  • *
  • Mensajes: 8
pregunta sobre el cero en un contador
« en: 25 de Octubre de 2010, 23:44:01 »
hola que tal.
quisiera saber que instrucción o que tengo que tener en cuenta. para en un decrementador de 9 a 0.
indicarle al pic que vuelva a la parte de inicio del programa donde,
espera si se pulsa la tecla o no, en ese momento el contador estara en  0.despues de haber decrementado.
para empezar nuevamente desde 9 a decrementar hasta el 0.
el programa es en ensamblador.
muchas gracias.-

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: pregunta sobre el cero en un contador
« Respuesta #1 en: 25 de Octubre de 2010, 23:53:15 »
Las "decisiones" del PIC se toman con las instrucciones: DECFSZ, INCFSZ, BTFSS, BTFSC, ADDWF  PCL,F.
Esas son las que se me ocurren ahora. Estoy hablando para un pic de la familia con instrucciones RISC.

En tu caso debería ser algo así:

Código: ASM
  1. contador  equ        0x20
  2.  
  3. inicio    movlw      0x09
  4.           movwf      contador
  5. repito    decfsz     contador
  6.           goto       repito
  7.           goto       pulsador.

La etiqueta pulsador, es una rutina para escanear el teclado. Una decisión parecida se toma ahí para volver a la etiqueta repito o a otra parte del programa.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado martincnc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 352
Re: pregunta sobre el cero en un contador
« Respuesta #2 en: 26 de Octubre de 2010, 02:18:14 »
Hola ger_va.

Ademas de las instrucciones que menciona Leon Pic, también son muy importantes los bits Z (Zero) y C (Carry) del registro STATUS, los cuales cambian de estado según el resultado de una operación matemática u operaciones booleanas (AND, XOR, IOR, etc).

Las siguientes lineas de código llegan al mismo resultado del ejemplo anterior pero utilizando operaciones booleanas y el bit Z (Zero) del registro STATUS, en este caso contador varia de 18 a 9 para hacerlo mas interesante  :mrgreen:

Código: ASM
  1. contador        equ     0x20
  2.  
  3. inicio    
  4.         movlw   0x12
  5.         movwf   contador
  6. repito  
  7.         decf    contador
  8.         movlw   0x09
  9.         xorwf   contador, 0
  10.         btfss   STATUS, Z
  11.         goto    repito
  12.         goto    pulsador

Para aprender estas y muchas mas instrucciones te recomiendo que tengas a mano el Set de Intrucciones" de los PIC de gama media, como así también la hoja de datos correspondiente al microcontrolador que quieras utilizar.

Saludos!