Consulta. El programa hace que un display de 7 segmentos, valla contando de manera ascendente, cada un segundo, y al llegar al numero 9 se pone a dormir, la idea de este programa es amigarme con el uso de las tablas, el problema esta que comienza a contar a partir de 1 y no de cero, si alguien sabe a que se debe esto les agradecería la ayuda. Saludos...
Aquí el programa:
;-----------------------------------------------------------------------------------
#include "p16f84a.inc"
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _CP_OFF
varA EQU 0x0c
varB EQU 0x0d
varC EQU 0x0e
varD EQU 0x0f
cont1 EQU 0x10
cont2 EQU 0x11
ORG 0 ; inicio del programa
CLRF PORTB ; limpio el puerto b
BSF STATUS, RP0 ; configuro el puerto b como salida
MOVLW B'00000000'
MOVWF TRISB
BCF STATUS, RP0
clrf cont1
clrf PORTB
movlw D'9'
movwf cont2
cambia:
incf cont1,1
movf cont1,0
call tabla
movwf PORTB
call retardo1s
decfsz cont2,F
goto cambia
sleep
tabla:
addwf PCL,1
retlw 0x3f
retlw 0x06
retlw 0x5b
retlw 0x4f
retlw 0x66
retlw 0x6d
retlw 0x7d
retlw 0x07
retlw 0x7f
retlw 0x6f
retardo1s:
MOVLW D'4'
MOVWF varC
bucleext2:
MOVLW D'252'
MOVWF varB
bucleext:
MOVLW D'247'
MOVWF varA
bucleint:
NOP
DECFSZ varA,F
GOTO bucleint
DECFSZ varB,F
GOTO bucleext
DECFSZ varC,F
GOTO bucleext2
MOVLW D'13'
MOVWF varD
regfina:
DECFSZ varD,F
GOTO regfina
NOP
NOP
RETURN
END
;-----------------------------------------------------------------------------------------