	LIST		P=16F628A
	INCLUDE 	<P16F628A.INC>
	__CONFIG	3F61


;----------DECLARACION DE VARIABLES------------
	CBLOCK	0X20
REG1	
REG2
CONT1
CONT2
CONT3
CONT4	
TEMP
TEMP2	
	ENDC
;----------------------------------------------

;----------ARRANQUE DEL MICRO------------------
	ORG	0X00
		MOVLW		0X07
		MOVWF		CMCON
		BSF			STATUS,RP0
		MOVLW		B'00011111'
		MOVWF		TRISA
		MOVLW		.0
		MOVWF		TRISB
		BCF			STATUS,RP0
		CLRF		PORTA
		CLRF		PORTB
		GOTO		PROGRAMA
;----------------------------------------------

;----------INICIO DEL PROGRAMA-----------------
PROGRAMA	MOVLW	.1
			MOVWF	CONT1
			MOVLW	.1
			MOVWF	CONT2
			MOVLW	.1
			MOVWF	CONT3
			MOVLW	.1
			MOVWF	CONT4
			MOVLW	.240
			MOVWF	PORTB
F1			GOTO	BOTON1

COMP		BTFSS	PORTA,2
			GOTO	$+2
			GOTO	SERVO
			BTFSS	PORTA,3
			GOTO	$+2
			GOTO	PASOS
			BTFSS	PORTA,4
			GOTO	ADEL
			GOTO	ATRAS

ADEL1		INCF	CONT3,1
			GOTO	ADEL
			
ADEL2		DECF	CONT3,1
			GOTO	ADEL

ATRAS1		INCF	CONT4,1
			GOTO	ATRAS

ATRAS2		DECF	CONT4,1
			GOTO	ATRAS
			
SERV1		INCF	CONT1,1
			GOTO	SERVO

SERV2		DECF	CONT1,1
			GOTO	SERVO

PAS1		INCF	CONT2,1
			GOTO	PASOS

PAS2		DECF	CONT2,1
			GOTO	PASOS
		
		
PASOS		MOVLW	.1
			MOVWF	CONT1
			MOVLW	.1
			MOVWF	CONT3
			MOVLW	.1
			MOVWF	CONT4			
			MOVLW	.0
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+6
			CLRF	CONT2
			MOVLW	.12
			MOVWF	CONT2
			GOTO	PASO4			
			MOVLW	.1
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO1
			MOVLW	.2
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO2
			MOVLW	.3
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO3
			MOVLW	.4
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO4
			MOVLW	.5
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO1
			MOVLW	.6
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO2
			MOVLW	.7
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO3
			MOVLW	.8
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO4
			MOVLW	.9
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO1
			MOVLW	.10
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO2
			MOVLW	.11
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO3
			MOVLW	.12
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	PASO4
			MOVLW	.13
			XORWF	CONT2,0
			BTFSS	STATUS,Z
			GOTO	$+5
			CLRF	CONT2
			MOVLW	.1
			MOVWF	CONT2
			GOTO	PASO1
			
ADEL		MOVLW	.1
			MOVWF	CONT1
			MOVLW	.1
			MOVWF	CONT2
			MOVLW	.1
			MOVWF	CONT4						
			MOVLW	.0
			XORWF	CONT3,0
			BTFSS	STATUS,Z
			GOTO	$+3
			INCF	CONT3,1
			GOTO	FRENTE6	
			MOVLW	.1
			XORWF	CONT3,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	FRENTE6
			MOVLW	.2
			XORWF	CONT3,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	FRENTE7
			MOVLW	.3
			XORWF	CONT3,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	FRENTE8
			MOVLW	.4
			XORWF	CONT3,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	FRENTE9
			MOVLW	.5
			XORWF	CONT3,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	FRENTE10
			MOVLW	.6
			XORWF	CONT3,0
			BTFSS	STATUS,Z
			GOTO	$+3
			DECF	CONT3,1
			GOTO	FRENTE10

ATRAS		MOVLW	.1
			MOVWF	CONT1
			MOVLW	.1
			MOVWF	CONT2
			MOVLW	.1
			MOVWF	CONT3			
			MOVLW	.0
			XORWF	CONT4,0
			BTFSS	STATUS,Z
			GOTO	$+3
			INCF	CONT4,1
			GOTO	ATRAS6	
			MOVLW	.1
			XORWF	CONT4,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	ATRAS6
			MOVLW	.2
			XORWF	CONT4,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	ATRAS7
			MOVLW	.3
			XORWF	CONT4,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	ATRAS8
			MOVLW	.4
			XORWF	CONT4,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	ATRAS9
			MOVLW	.5
			XORWF	CONT4,0
			BTFSS	STATUS,Z
			GOTO	$+2
			GOTO	ATRAS10
			MOVLW	.6
			XORWF	CONT4,0
			BTFSS	STATUS,Z
			GOTO	$+3
			DECF	CONT4,1
			GOTO	ATRAS10
			
SERVO		MOVLW	.1
			MOVWF	CONT2
			MOVLW	.1
			MOVWF	CONT3
			MOVLW	.1
			MOVWF	CONT4			
			MOVLW	.0
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+4
			INCF	CONT1,1
			CALL	CERO
			GOTO	F1
			MOVLW	.1
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	CERO
			GOTO	F1
			MOVLW	.2
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G15
			GOTO	F1
			MOVLW	.3
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G30
			GOTO	F1
			MOVLW	.4
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G45
			GOTO	F1
			MOVLW	.5
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G60
			GOTO	F1
			MOVLW	.6
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G75
			GOTO	F1
			MOVLW	.7
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G90
			GOTO	F1
			MOVLW	.8
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G105
			GOTO	F1
			MOVLW	.9
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G120
			GOTO	F1
			MOVLW	.10
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G135
			GOTO	F1
			MOVLW	.11
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G150
			GOTO	F1
			MOVLW	.12
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G165
			GOTO	F1
			MOVLW	.13
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			CALL	G180
			GOTO	F1
			MOVLW	.14
			XORWF	CONT1,0
			BTFSS	STATUS,Z
			GOTO	$+3
			DECF	CONT1,1
			CALL	G180
			GOTO	F1

;----------------------------------
;--------------PASOS---------------

PASO1		MOVLW	B'01110000'
			MOVWF	PORTB
			CALL	RETARDO1
			GOTO	F1
					
PASO2		MOVLW	B'10110000'
			MOVWF	PORTB
			CALL	RETARDO1
			GOTO	F1
	
PASO3		MOVLW	B'11010000'
			MOVWF	PORTB
			CALL	RETARDO1
			GOTO	F1
	
PASO4		MOVLW	B'11100000'
			MOVWF	PORTB					
			CALL	RETARDO1
			GOTO	F1		


;----------------------------------
;--------VELOCIDAD ADELANTE--------

FRENTE6				MOVLW	B'00110000'
					MOVWF	PORTB
					CALL	RETARDO30
					MOVLW	B'10010000'
					MOVWF	PORTB
					CALL	RETARDO30
					MOVLW	B'11000000'
					MOVWF	PORTB
					CALL	RETARDO30
					MOVLW	B'01100000'
					MOVWF	PORTB					
					CALL	RETARDO30
					GOTO	F1

FRENTE7				MOVLW	B'00110000'
					MOVWF	PORTB
					CALL	RETARDO20
					MOVLW	B'10010000'
					MOVWF	PORTB
					CALL	RETARDO20
					MOVLW	B'11000000'
					MOVWF	PORTB
					CALL	RETARDO20
					MOVLW	B'01100000'
					MOVWF	PORTB					
					CALL	RETARDO20
					GOTO	F1

FRENTE8				MOVLW	B'00110000'
					MOVWF	PORTB
					CALL	RETARDO15
					MOVLW	B'10010000'
					MOVWF	PORTB
					CALL	RETARDO15
					MOVLW	B'11000000'
					MOVWF	PORTB
					CALL	RETARDO15
					MOVLW	B'01100000'
					MOVWF	PORTB					
					CALL	RETARDO15
					GOTO	F1

FRENTE9				MOVLW	B'00110000'
					MOVWF	PORTB
					CALL	RETARDO10
					MOVLW	B'10010000'
					MOVWF	PORTB
					CALL	RETARDO10
					MOVLW	B'11000000'
					MOVWF	PORTB
					CALL	RETARDO10
					MOVLW	B'01100000'
					MOVWF	PORTB					
					CALL	RETARDO10
					GOTO	F1

FRENTE10			MOVLW	B'00110000'
					MOVWF	PORTB
					CALL	RETARDO1
					MOVLW	B'10010000'
					MOVWF	PORTB
					CALL	RETARDO1
					MOVLW	B'11000000'
					MOVWF	PORTB
					CALL	RETARDO1
					MOVLW	B'01100000'
					MOVWF	PORTB					
					CALL	RETARDO1
					GOTO	F1	

;----------------------------------
;--------VELOCIDAD ATRAS-----------

ATRAS6				MOVLW	B'01100000'
					MOVWF	PORTB
					CALL	RETARDO30
					MOVLW	B'11000000'			
					MOVWF	PORTB
					CALL	RETARDO30
					MOVLW	B'10010000'
					MOVWF	PORTB
					CALL	RETARDO30
					MOVLW	B'00110000'			
					MOVWF	PORTB					
					CALL	RETARDO30
					GOTO	F1

ATRAS7				MOVLW	B'01100000'
					MOVWF	PORTB
					CALL	RETARDO20
					MOVLW	B'11000000'			
					MOVWF	PORTB
					CALL	RETARDO20
					MOVLW	B'10010000'
					MOVWF	PORTB
					CALL	RETARDO20
					MOVLW	B'00110000'			
					MOVWF	PORTB					
					CALL	RETARDO20
					GOTO	F1

ATRAS8				MOVLW	B'01100000'
					MOVWF	PORTB
					CALL	RETARDO15
					MOVLW	B'11000000'			
					MOVWF	PORTB
					CALL	RETARDO15
					MOVLW	B'10010000'
					MOVWF	PORTB
					CALL	RETARDO15
					MOVLW	B'00110000'			
					MOVWF	PORTB					
					CALL	RETARDO15
					GOTO	F1

ATRAS9				MOVLW	B'01100000'
					MOVWF	PORTB
					CALL	RETARDO10
					MOVLW	B'11000000'			
					MOVWF	PORTB
					CALL	RETARDO10
					MOVLW	B'10010000'
					MOVWF	PORTB
					CALL	RETARDO10
					MOVLW	B'00110000'			
					MOVWF	PORTB					
					CALL	RETARDO10
					GOTO	F1

ATRAS10				MOVLW	B'01100000'
					MOVWF	PORTB
					CALL	RETARDO1
					MOVLW	B'11000000'			
					MOVWF	PORTB
					CALL	RETARDO1
					MOVLW	B'10010000'
					MOVWF	PORTB
					CALL	RETARDO1
					MOVLW	B'00110000'			
					MOVWF	PORTB					
					CALL	RETARDO1
					GOTO	F1

	
;------------GIRO DEL SERVO--------
CERO
		BSF		PORTB,0
		CALL	RET0
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G15		BSF		PORTB,0
		CALL	RET15
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G30		BSF		PORTB,0
		CALL	RET30
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G45
		BSF		PORTB,0
		CALL 	RET45
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G60		BSF		PORTB,0
		CALL	RET60
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G75		BSF		PORTB,0
		CALL	RET75
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G90
		BSF		PORTB,0
		CALL 	RET90
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G105	BSF		PORTB,0
		CALL	RET105
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G120	BSF		PORTB,0
		CALL	RET120
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G135
		BSF		PORTB,0
		CALL 	RET135
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G150	BSF		PORTB,0
		CALL	RET150
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

G165	BSF		PORTB,0
		CALL	RET165
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN
	
G180
		BSF		PORTB,0
		CALL	RET180
		BCF		PORTB,0
		CALL	RETBAJO
		RETURN

;----------------------------------		
;-------------RETARDOS-------------
RET0
		MOVLW	.133
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		RETURN

RET15	MOVLW	.173
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		RETURN

RET30	MOVLW	.212
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		RETURN

RET45
		MOVLW	.6
		MOVWF	REG2
G11		MOVLW	.46
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G11
		RETURN

RET60
		MOVLW	.6
		MOVWF	REG2
G12		MOVLW	.54
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G12
		RETURN

RET75	MOVLW	.6
		MOVWF	REG2
G13		MOVLW	.62
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G13
		RETURN

RET90
		MOVLW	.6
		MOVWF	REG2
G14		MOVLW	.69
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G14
		RETURN

RET105	MOVLW	.6
		MOVWF	REG2
G015	MOVLW	.79
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G015
		RETURN

RET120	MOVLW	.6
		MOVWF	REG2
G16		MOVLW	.88
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G16
		RETURN

RET135
		MOVLW	.7
		MOVWF	REG2
G17		MOVLW	.81
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G17
		RETURN

RET150	MOVLW	.6
		MOVWF	REG2
G18		MOVLW	.106
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G18
		RETURN

RET165	MOVLW	.6
		MOVWF	REG2
G19		MOVLW	.114
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G19
		RETURN

RET180
		MOVLW	.7
		MOVWF	REG2
G20		MOVLW	.101
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G20
		RETURN


RETBAJO
		MOVLW	.11
		MOVWF	REG2
G3		MOVLW	.255
		MOVWF	REG1
		DECFSZ	REG1,1
		GOTO	$-1
		DECFSZ	REG2,1
		GOTO	G3
		RETURN


RETARDO1			MOVLW	.8
					MOVWF	REG2
					MOVLW	.237
					MOVWF	REG1
					DECFSZ	REG1,1
					GOTO	$-1
					DECFSZ	REG2,1
					GOTO	$-5
					RETURN

RETARDO10			MOVLW	.15
					MOVWF	REG2
					MOVLW	.237
					MOVWF	REG1
					DECFSZ	REG1,1
					GOTO	$-1
					DECFSZ	REG2,1
					GOTO	$-5
					RETURN

RETARDO15			MOVLW	.22
					MOVWF	REG2
					MOVLW	.237
					MOVWF	REG1
					DECFSZ	REG1,1
					GOTO	$-1
					DECFSZ	REG2,1
					GOTO	$-5					
					RETURN

RETARDO20			MOVLW	.29
					MOVWF	REG2
					MOVLW	.237
					MOVWF	REG1
					DECFSZ	REG1,1
					GOTO	$-1
					DECFSZ	REG2,1
					GOTO	$-5
					RETURN

RETARDO30			MOVLW	.43
					MOVWF	REG2
					MOVLW	.237
					MOVWF	REG1
					DECFSZ	REG1,1
					GOTO	$-1
					DECFSZ	REG2,1
					GOTO	$-5
					RETURN
		
;----------------------------------------
;-----SECUENCIA ANTIREBOTE DEL BOTON-----

BOTON1		BTFSS	PORTA,0
			GOTO	$-1
			BTFSC	PORTA,0
			GOTO	BOTON2
			BTFSS	PORTA,2
			GOTO	$+2
			GOTO	SERV1
			BTFSS	PORTA,3
			GOTO	$+2
			GOTO	PAS1
			BTFSS	PORTA,4
			GOTO	ADEL1
			GOTO	ATRAS1
			
BOTON2		BTFSS	PORTA,1
			GOTO	$-1
			BTFSC	PORTA,1
			GOTO	COMP
			BTFSS	PORTA,2
			GOTO	$+2
			GOTO	SERV2
			BTFSS	PORTA,3
			GOTO	$+2
			GOTO	PAS2
			BTFSS	PORTA,4
			GOTO	ADEL2
			GOTO	ATRAS2

	END
