Hola. Estoy haciendo un programa muy sencuillo para encender y apagar 5 leds conectados al port B. La primera vez los leds se encienden y luego se apagan como debe ser, pero despues pareciera ser que la pausa fuese mas corta cuando los leds se apagan, porque apenas se apagan se vuelven a encender.
A continuacion adjunto el codigo para que me ayuden y me digan que esta mal. Estoy usando un 16F84A con un cristal de 4 MHZ.
Gracias por la ayuda.
;********************************************
;* Este programa prende y apaga 5 leds
;* el PORTA se configura como entrada y
;* el PORTB como salida
;********************************************
;BANCO 0 y BANCO 1
STATUS EQU 03H
;BANCO 0
PORTB EQU 06H
EEDATA EQU 08H
EECON1 EQU 08H
;BANCO 1
TRISA EQU 05H
TRISB EQU 06H
;Registros
COUNT EQU 0CH
ADDRESS EQU 0DH
CUENTA1 EQU 0EH
CUENTA2 EQU 0FH
CUENTA3 EQU 010H
W_AUX EQU 011H ;para salvar el valor del registro W
F EQU 1
W EQU 0
#DEFINE BANCO0 BCF STATUS,5
#DEFINE BANCO1 BSF STATUS,5
ORG 00H
BANCO1 ;Paso al banco 1
MOVLW 0FFH ;Todos los bits del acumulador a "1"
MOVWF TRISB ;configuro el puerto A como entrada (son 5)
MOVLW 00H ;Todos los bits del acumulador a "0"
MOVWF TRISB ;configuro el puerto B como salida (son
BANCO0 ;Vuelvo al banco 0
CLRF PORTB ;pongo todas las salidas a 0
BANCO0
CLRW ;W=0
MOVWF COUNT
LOOP1
INCF COUNT,F
MOVF COUNT, W
MOVLW 07H
MOVWF PORTB
CALL PAUSA
MOVLW 00H
MOVWF PORTB
CALL PAUSA
GOTO LOOP1
;============================================
;= Hago una pausa para que se vean los leds =
;============================================
PAUSA
MOVWF W_AUX ;salvo el valor del registro W
MOVLW 078H ;120D
MOVWF CUENTA1
BUCLE1
MOVLW 019H ;25D
MOVWF CUENTA2
BUCLE2
MOVLW 040H
MOVWF CUENTA3
BUCLE3
DECFSZ CUENTA3,F
GOTO BUCLE3
DECFSZ CUENTA2,F
GOTO BUCLE2
DECFSZ CUENTA1,F
GOTO BUCLE1
MOVF W_AUX,W ;recupero el valor de W
RETURN
END