LIST p=PIC16F84A
INCLUDE <p16f84a.inc>
__CONFIG _WDT_OFF & _CP_OFF & _PWRTE_ON & _XT_OSC
ERRORLEVEL -302
#DEFINE BANK0 bcf STATUS,RP0
#DEFINE BANK1 bsf STATUS,RP0
CBLOCK 0x0C
unidades
decenas
centenas
ENDC
ORG 0x000
goto Main
ORG 0x004
retfie
Main
BANK1
movlw b'11111'
movwf TRISA ;TRISA es entrada
movlw b'00000000'
movwf TRISB ;TRISB es salida
BANK0
goto Unidades
Unidades
movlw .10
subwf unidades,W ;restamos 10 a unidades y guardamos en W
btfss STATUS,C ;checkeamos si da negativo
goto Decenas ;si unidades es menor que 10, salimos
movwf unidades ;si unidades es mayor a 10, guardamos el resultado de la resta
movlw .1
addwf decenas ;sumamos 1 a decenas
goto Unidades
Decenas
movlw .10
subwf decenas,W ;restamos 10 a unidades y guardamos en W
btfss STATUS,C ;checkeamos si da negativo
goto Mostrar ;si unidades es menor que 10, salimos
movwf decenas ;si unidades es mayor a 10, guardamos el resultado de la resta
movlw .1
addwf centenas ;sumamos 1 a decenas
goto Decenas
Mostrar
swapf decenas,W
addwf unidades,W
movwf PORTB
sleep
END ;fin del programa