;PLANTILLA QUE SEPARA EN EL ARCHIVO AUXILIAR "KEY.inc" 
;LA INICIALIZACION DE LOS PUERTOS
;PINGPONCITO.ASM, PROGRAMA QUE REALIZA LA SIGUIENTE FUNCION:
;SI RA4=1 (SW4=OFF), ENCIENDE RB7 Y HACE CORRIMIENTOS HACIA LA DERECHA HASTA
;QUE RB0 ESTE ENCENDIDO. ALLI, EL PROGRAMA PERMANECE EN UN LOOP HASTA QUE EL
;ESTADO DE RA4 CAMBIE.
;SI RA4=0 (SW4=ON), ENCIENDE RB0 Y HACE CORRIMIENTOS HACIA LA IZQUIERDA HASTA
;QUE RB7 ESTE ENCENDIDO. ALLI EL PROGRAMA PERMANECE EN UN LOOP HASTA QUE EL
;ESTADO DE RA4 CAMBIE.
;DESPUES DE CADA CORRIMIENTO SE REALIZA UN RETRASO DE APROXIMADAMENTE 200 MS.

	include	  <p16f88.inc>
	include	  "KEY.inc"

J		EQU 0X20			;LOCALIDADES PARA SUBRUTINA DE RETRASO
K		EQU 0X21

		ORG 	0
		CLRF 	PCLATH		;REQUERIDO POR EL BOOTLOADER TINY
		GOTO	INICIO		;AQUI DEBE HABER UN GOTO AL INICIO DEL PROGRAMA	
		ORG 	3		;REQUERIDO POR EL BOOTLOADER TINY. 						
INICIO		PUERTOS			;MACRO PARA INICIALIZAR LOS PUERTOS DE 16F88
		BTFSS	RA4
IZQ		GOTO	LEFT
DER		GOTO	RIGHT	
LEFT		BCF	STATUS,C
		BSF	RB0
SEGUIR		CALL	retro
		RLF	PORTB,f
		BTFSS	RB7
CONTI		GOTO	SEGUIR
PARA		BTFSS	RA4
		GOTO	PARA
		GOTO	RIGHT
RIGHT		BCF	STATUS,C
		BSF	RB7
SEGUIR1		CALL 	retro
		RRF	PORTB,f
		BTFSS	RB0
		GOTO	SEGUIR1
PARA1		BTFSC	RA4
		GOTO	PARA1
		GOTO	LEFT
				
;rutina de retraso de 200 milisegundos 
         
retro:	movlw	D'255'	; w = 250 decimal
		movwf	J		; J = w
jloop:	movwf	K		; K = w
kloop:	decfsz	K,f		; K = K-1, omite si es cero
	goto 	kloop
	decfsz	J,f		; J = J-1, omite si es cero
	goto	jloop
	return
	END