; PROGRAMA PING-PONG PARA BOLT 18F2550
; SI SW3=ON (0) CORRIMIENTOS DE LOS LEDS HACIA LA DERECHA
; SI SW3=OFF(1) CORRIMIENTOS DE LOS LEDS HACIA LA IZQUIERDA
; PARA HACER LA SIMULACION EN MPLAB, ORG=0
; PARA CORRER EL PROGRAMA EN BOLT, ORG=800

	processor 18F2550
	include	  <p18F2550.inc>
	include	 "KEYBOLT2.inc"	;ARCHIVO AUXILIAR CONTIENE MACROS Y DEFINE

J	equ	H'80'	  
K	equ	H'81'
L	equ H'82'
	 
			org 	0x800		;MODIFIQUE A ORG=0 PARA SIMULAR EN MPLAB
			PUERTOS				;INICIALIZA PUERTOS
INICIO 		bsf 	LED0
INIC1   	bcf 	STATUS,C
	   		btfsc 	SW3
	   		goto 	TRES 
DOS			btfss 	LED7
    		goto 	TRES   			   		 	
DERECHA 	rrcf 	PORTB		;CORRIMIENTO DE LOS LEDS HACIA LA DERECHA
			call 	retrobolt 
			btfss 	LED0
			goto 	DERECHA
			goto 	INIC1	
TRES 		btfss 	SW3
			goto 	INIC1
CINCO 		btfss 	LED0
			goto 	INIC1
IZQUIERDA 	rlcf 	PORTB 		;CORRIMIENTO DE LOS LEDS HACIA LA IZQUIERDA
			call 	retrobolt	
		  	btfss 	LED7
	   		goto 	IZQUIERDA
			goto 	INIC1   	

;SUBRUTINA DE RETRASO APROX DE 100 MILISEGUNDOS.SE PUEDE MODIFICAR A (16.4 x L) MILISEGUNDOS

retrobolt:	movlw	D'6'	;valor de L. Modifique para cambiar el valor del retraso.
			movwf	L
lloop		movlw	D'255'	; w := 255 decimal
			movwf	J	; J := w
jloop:		movwf	K	; K := w
kloop:		decfsz	K,f	; K = K-1, skip next if zero
			goto 	kloop
			decfsz	J,f	; J = J-1, skip next if zero
			goto	jloop
			decfsz	L,f
			goto	lloop
			return
end	

