; ARCHIVO CONTADOR.ASM
; CODIGO FUENTE PARA EL MICROCONTROLADOR PIC16F84 

; LEE LOS MICROSWITCHES, Y ESCRIBE EL VALOR BINARIO EN LEDS B4...B1
; SI EL VALOR DE LOS SWITCHES ES DE '1001', ENCIENDE Y APAGA EL RELE.
; VERSION PARA OSCILADOR CRISTAL 4 MHZ

; CPU configuration
; 	(It's a 16F628, XT OSCILADOR
; 	watchdog timer off, power-up timer on)

	processor 16f628
	include	  <p16f628.inc>
	__config _XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF 



			ORG	0
			movlw           0x7
			movwf           CMCON        ;EN BANCO 0			
	  
PUERTOA		BSF		STATUS,RP0		;ELIJE EL BANCO DE REGISTROS ESPECIALES 1
			BCF		STATUS,RP1
			movlw   0x0
			movwf   VRCON			;EN BANCO 1
			MOVLW	1EH				;RA0=SALIDA, RA1..RA4=ENTRADAS
			MOVWF	TRISA			;PROGRAMA LA DIRECCIÓN DE LOS BITS
			MOVLW	00H				;RB0..RB7=SALIDAS
			MOVWF	TRISB
			BCF		STATUS,RP0		;ELIGE EL BANCO 0
			BCF		STATUS,RP1
LOOP		MOVF	PORTA,W			;leer el puerto A
			ANDLW	1EH
			MOVWF	PORTB			;escribe en leds
			SUBLW	12H				;resta 1E para comparar
			BTFSC	STATUS,Z
			GOTO	RELE
			GOTO	LOOP
RELE		BSF		PORTA,0			;activa relevador
			CALL	RETRASO
			BCF		PORTA,0			;desactiva relevador
			CALL 	RETRASO
			GOTO	LOOP
RETRASO		MOVLW	D'250'			;retraso de 200 ms.
			MOVWF	20H
			MOVLW	D'250'
LOOP1		MOVWF	21H
LOOP2		DECFSZ	21H
			GOTO	LOOP2
			DECFSZ	20H
			GOTO	LOOP1
			RETURN
			END

				
