    list p=16f627a; list directive to define processor
      #include <p16f627a.INC> ; processor specific variable definitions


_XT_OSC               equ  0x3FED
_WDT_OFF              equ  0x3FFB
_PWRTE_ON             equ  0x3FF7
_MCLRE_ON             equ  0x3FFF
_BODEN_OFF            equ  0x3FBF
_LVP_OFF              equ  0x3F7F
_CPD_OFF              equ  0x3F7F
_CP_OFF               equ  0x3FFF

      __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF
    	
		CBLOCK 0x25
	R_ContA						; Contadores para los retardos.
	R_ContB
	R_ContC
	ENDC


      org 0x00
	  GOTO    INICIO 

                                                       
 		ORG 0x05
INICIO  bsf 0x03,5  ;cambiar a banco 1
		movlw 0xff
		movwf 0x05
		movlw 0x00
		movwf 0x06
		bcf 0x03,5     


bucle	btfsc 0x05,0   ; brinco si es 0
		call derecha
	    btfsc 0x05,1   ; brinco si es 0
		call izquierda
		bsf  0x06,7
		call Retardo_1s
		bcf  0x06,7
		call Retardo_1s
		goto bucle

derecha
	    bsf 0x06,0			;bobina 1
		call Retardo_500ms
		bcf 0x06,0
		call Retardo_10ms
		bsf 0x06,1			;bobina 2
		call Retardo_500ms
		bcf 0x06,1
		call Retardo_10ms
		bsf 0x06,2			;bobina 3
		call Retardo_500ms
		bcf 0x06,2
		call Retardo_10ms
		bsf 0x06,3			;bobina 4
		call Retardo_500ms
		bcf 0x06,3
		call Retardo_10ms
		return


izquierda
		bsf 0x06,3			;bobina 4
		call Retardo_500ms
		bcf 0x06,3
		call Retardo_10ms
		bsf 0x06,2			;bobina 3
		call Retardo_500ms
		bcf 0x06,2
		call Retardo_10ms
		bsf 0x06,1			;bobina 2
		call Retardo_500ms
		bcf 0x06,1
		call Retardo_10ms
		bsf 0x06,0			;bobina 1
		call Retardo_500ms
		bcf 0x06,0
		call Retardo_10ms
		return

		include<RETARDOS.INC>
end