TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: ger_va en 25 de Octubre de 2010, 23:44:01

Título: pregunta sobre el cero en un contador
Publicado por: ger_va 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.-
Título: Re: pregunta sobre el cero en un contador
Publicado por: Leon Pic 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.
Título: Re: pregunta sobre el cero en un contador
Publicado por: martincnc 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" (http://ww1.microchip.com/downloads/en/DeviceDoc/31029a.pdf) de los PIC de gama media, como así también la hoja de datos correspondiente al microcontrolador que quieras utilizar.

Saludos!