;==============================================================================
; ZONA DE DIRECTIVAS =
;==============================================================================
LIST P=16F84A ;Modelo de microcontrolador a utilizar
INCLUDE <P16F84A.INC> ;Inclusión de la librería correspondiente al modelo de PIC
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;Configuración de las banderas de quemado
Cont1 EQU 0x0C
NumA EQU 0x0D
Nref EQU 0x0E
;CONFIGURACION DE PUERTOS
ORG 0
BSF STATUS,RP0
MOVLW B'00001'
MOVWF TRISA
CLRF TRISB
BCF STATUS,RP0
MOVLW B'001'
MOVWF NumA
MOVLW B'1001'
MOVWF Nref
CLRF PORTB
;PRINCIPAL
Principal1
BTFSS PORTA,0
GOTO Principal1
CALL NumRan
CALL Delay
MOVF Nref,0 ;Aqui coloco mi numero de referencia (Nref) b'1001'
SUBWF NumA,0 ;Aqui tomo NumA (que puede tener cualquier valor entre 0 y 15) y le resto Nref (9)
BTFSC STATUS,C ;Aqui pregunto si el BIT C es uno (Es decir, si la resta dio cero o positivo)
;Si el resultado es negativo (c=0) Quiero cargar un 0001 en la Variable NumA
MOVF NumA,0 ;Si el resultado es cero o positivo (c=1), dejo pasar el valor al puerto B
MOVWF PORTB
GOTO Principal1
NumRan
BTFSC NumA, 1
INCF Cont1, f
BTFSC NumA, 3
INCF Cont1, f
BTFSC NumA, 2
INCF Cont1, f
BTFSC NumA, 0
INCF Cont1, f
RRF Cont1, f
RRF NumA, f
CLRF Cont1
RETURN
Delay
NOP
NOP
NOP
NOP
NOP
RETURN
END