TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: martos_iii en 04 de Diciembre de 2004, 03:04:00
-
hola a todos, estoy haciendo mi segundo programa para el pic 16f84. El programa consiste en hacer un retardo de un tiempo determinado. El problema lo tengo en que creo que no entiendo bien la instrucción decfsz, bueno el trozo de codigo es muy simple y es el siguiente:
lista de variables utilizadas
var1 EQU 0ch
var2 EQU 0eh
;fin de definición de variables
list p=PIC16f84
include "p16f84.inc"
org 00h
reset
goto inicio
org 10h
inicio
movlw 02h
movwf var1
movwf var2
salto1
decfsz var1,1
goto salto1
decfsz var2,1
goto salto1
end
Yo creo que por ejemplo en la primerra instruccion "decfsz" según he leido en el manual, se debería decrementar la var1 una vez y almacenar el resultado en ellay luego saltar de nuevo a uno, después decrementar la var1 de nuevo y como el resultado es cero saltar la instrucción "goto salto1" y pasar directamente a decfsz var2 y en este caso se consumirian dos ciclos de reloj.
Mi problema es que la primera vez lo hace todo bien pero luego cuando lo simulo en MPLAB el programa ya se "atasca en decfsz var1,1" y no pasa de ahi. Bueno supongo que todo esto será una duda bastante tonta. Muchas gracias a todos
-
Por que no lo haces así:
LIST P=PIC16F84
#INCLUDE <P16F874.INC>
var1 EQU 0ch
var2 EQU 0eh
ORG 0
GOTO INICIO
ORG 10
INICIO
movlw 02h
movwf var1
movwf var2
salto1
decfsz var1,1
goto salto1
salto2
decfsz var2,1
goto salto2
goto INICIO
END
gfp :-)