	LIST		p=16F887			;Tipo de microcontrolador
	INCLUDE 	P16F887.INC			;Define los SFRs y bits del 
											;P16F887

	__CONFIG _CONFIG1, _CP_OFF&_WDT_OFF&_EC_OSC	
																		;Setea parámetros de 
																		;configuración

	errorlevel	 -302				;Deshabilita mensajes de error
								

CBLOCK 0X20
AUXA,AUXB,AUXC,INT1,INT2
ENDC

;*******************************************************************************************
ORG 0X00
GOTO PRINCIPAL

;Configuración de registros del PIC16F887
CONFIG_PIC
;BANCO 4
BANKSEL ANSEL
CLRF ANSEL
CLRF ANSELH
;BANCO 1
BANKSEL TRISA
MOVLW B'00000000'
MOVWF TRISA
MOVLW B'00000011'
MOVWF TRISB
MOVLW B'11111111'
MOVWF TRISC
MOVLW B'00000000'
MOVWF TRISD
MOVLW B'01101001'
MOVWF OSCCON
MOVLW .0
MOVWF INT1
MOVLW .0
MOVWF INT2

;BANCO 0
BANKSEL PORTA
CLRF PORTC
CLRF PORTB
CLRF PORTD
CLRF PORTA
RETURN

;********************************************************************************
;Rutina de retardo para visualización
RETARDO
MOVLW .1
MOVWF AUXA
RETAR3 MOVLW .2
	   MOVWF AUXB
RETAR2 MOVLW .100
	   MOVWF AUXC
RETAR1 DECFSZ AUXC,F
	   GOTO RETAR1
	   DECFSZ AUXB,F
	   GOTO RETAR2
	   DECFSZ AUXA,F
       GOTO RETAR3
       RETURN
;***************************************************************************************
;Tabla para activación de segmentos en display de cátodo común
TABLA_DISPLAY_CC
	ADDWF   PCL,F
    RETLW   0x3F     	; Retorna con el código del 0
	RETLW	0x06		; Retorna con el código del 1
	RETLW	0x5B		; Retorna con el código del 2
	RETLW	0x4F		; Retorna con el código del 3
	RETLW	0x66		; Retorna con el código del 4
	RETLW	0x6D		; Retorna con el código del 5
	RETLW	0x7D		; Retorna con el código del 6
	RETLW	0x07		; Retorna con el código del 7
	RETLW	0x7F		; Retorna con el código del 8
	RETLW	0x67		; Retorna con el código del 9



;**************************************************************************
;Rutina para visualización de valor en display
VISUAL_CC
MOVF INT1,W
CALL TABLA_DISPLAY_CC
MOVWF PORTA
CALL RETARDO

MOVF INT2,W
CALL TABLA_DISPLAY_CC
MOVWF PORTD
CALL RETARDO
RETURN

VISUAL_C1
MOVF INT2,W
CALL TABLA_DISPLAY_CC
MOVWF PORTA
CALL RETARDO

MOVF INT1,W
CALL TABLA_DISPLAY_CC
MOVWF PORTD
CALL RETARDO
RETURN

;Copia el valor temp1
COPIAR_1
MOVF PORTC,W
MOVWF INT1
RETURN

;Copia el valor al temp2
COPIAR_2
MOVF PORTC,W
MOVWF INT2
RETURN

;********************************************************************************
;Programa principal
PRINCIPAL  CALL CONFIG_PIC
		   
LOOP1	   BTFSS PORTB,0
		   GOTO LOOP1
		   CALL COPIAR_1
LOOP2	   BTFSC PORTB,0
		   GOTO LOOP2

LOOP3	   BTFSS PORTB,0
		   GOTO LOOP3
		   CALL COPIAR_2
LOOP4	   BTFSC PORTB,0
		   GOTO LOOP4
		
BUCLE 	   MOVF INT1,W
	 	   SUBWF INT2,W
	 	   BTFSS STATUS,0
	       CALL VISUAL_CC
		   BTFSC STATUS,0
		   CALL VISUAL_C1
		   GOTO BUCLE
	  	   END