; ejercicio 4.2 nuevo


	list p=16f877a
	include "p16f877a.inc"
	__CONFIG _XT_OSC &_WDT_OFF &_LVP_OFF

CICLO20				EQU		0x20
SEGUNDOS			EQU		0x21
repeticiones_50		EQU		0x22
pausa2				EQU		0x23
reanudar4			EQU		0x24
NUEVE				EQU		0X26
OCHO				EQU		0X27
SIETE				EQU		0X28
SEIS				EQU		0X29
CINCO				EQU		0X2A
CUATRO				EQU		0X2B
TRES				EQU		0X2C
DOS					EQU		0X2D
UNO					EQU		0X2E
CERO				EQU		0X2F

	ORG	0
	goto	inicio
	ORG	4
	GOTO	ISR
	ORG	5

inicio

	bcf		STATUS,RP1
	bsf		STATUS,RP0		;configuramos banco1
	
	movlw	b'10000111'		;prescaler 1:2, reloj interno
	movwf	OPTION_REG
	clrf	TRISC	
	movlw	b'11000001'
	movwf	TRISB
	movlw	b'10111000'
	movwf	INTCON

	bcf		STATUS,RP0		;configuramos banco0
	movlw	.178
	movwf	TMR0
	movlw	b'01100111'
	movwf	NUEVE
	movlw	b'01111111'
	movwf	OCHO
	movlw	b'00000111'
	movwf	SIETE
	movlw	b'01111100'
	movwf	SEIS
	movlw	b'01101101'
	movwf	CINCO
	movlw	b'01100110'
	movwf	CUATRO
	movlw	b'01001111'
	movwf	TRES
	movlw	b'01011011'
	movwf	DOS
	movlw	b'00000110'
	movwf	UNO
	movlw	b'00111111'
	movwf	CERO	
	movlw	.50
	movwf	repeticiones_50
	clrf	PORTC
	movlw	.2
	movwf	pausa2
	movlw	.4
	movwf	reanudar4


main
	goto	main

ISR
		btfsc	INTCON,2
	goto	rutina_espera
	btfsc	INTCON,0
	goto	que_bit_salta
	btfsc	INTCON,1
	goto	CUENTA

	

que_bit_salta
	btfsc	PORTB,6
	goto	resetea_porbit
	goto	pausa

resetea_porbit
	clrf	PORTC
	movlw 	.178
	movwf	TMR0
	bcf		INTCON,0
	clrf	FSR
	goto	rutina_espera

	
pausa
	bcf		INTCON,0
	btfsc	PORTB,7
	goto	rutina_espera
	goto	pausa
	retfie

CUENTA
	bcf		INTCON,4
	bcf		INTCON,1
	movlw 	.178
	movwf	TMR0
	movlw	0x25
	movwf	FSR	

	retfie


rutina_espera	
	bcf		INTCON,2
	movlw	0x00
	subwf	FSR,0
	btfsc	STATUS,Z
	goto	nomostrar
	
	movlw	.178
	movwf	TMR0
	decfsz	repeticiones_50
	retfie
	goto	recargar
recargar

	movlw	.50
	movwf	repeticiones_50
	goto	siguiente

siguiente
	movfw	INDF
	INCF	FSR
	btfss	FSR,4
	goto	mover
	goto	reseteo
mover
	movlw	0x00
	subwf	FSR,0
	btfsc	STATUS,Z
	goto	nomostrar
	goto	mover2
mover2	
	movfw	INDF
	movwf	PORTC
	retfie	
nomostrar
	clrf	PORTC
	retfie
reseteo
	
	clrf	PORTC
	bsf		INTCON,4
	bcf		INTCON,1
	bcf		INTCON,0
	retfie

	end
	