Vous êtes sur la page 1sur 3

LIST P=16F877A

#INCLUDE <P16F877A.INC>

RET1 EQU 20H


RET2 EQU 21H
RET3 EQU 22H
UP EQU 23H
DOWN EQU 24H
LEFT EQU 25H
RIGHT EQU 26H
STOP EQU 27H

ORG 00H
GOTO BEGIN
ORG 05H

BEGIN BSF STATUS,RP0 ;BANCO1

MOVLW B'00000111' ;RB0-RB2 SENSORES LUZ NEGRA, RB3-RB6 CONTROL


MOTORES
MOVWF TRISB

CLRF STATUS ;BANCO0

CLRF UP ;LIMPIA VARIABLES


CLRF DOWN
CLRF LEFT
CLRF RIGHT
CLRF STOP
CLRF PORTB ;LIMPIA PURTOB

MOVLW B'01001000' ;CARGAMOS UP=ADELANTE


MOVWF UP
MOVLW B'00110000' ;CARGAMOS DOWN=ATRAS
MOVWF DOWN
MOVLW B'00101000' ;CARGAMOS LEFT=IZQUIERDA
MOVWF LEFT
MOVLW B'01010000' ;CARGAMOS RIGHT=DERECHA
MOVWF RIGHT

;()()()()()()()()REVISION DE SENSORES()()()()()()()()()()()

SENSAR BTFSS PORTB,1 ;PREGUNTA SI EL SENSOR DEL CENTRO ESTA EN


AREA NEGRA
GOTO SEN_DER
MOVF UP,W
MOVWF PORTB
GOTO SENSAR
SEN_DER BTFSS PORTB,0
GOTO SEN_IZQ
MOVF LEFT,W
MOVWF PORTB
GOTO SENSAR
SEN_IZQ BTFSS PORTB,2
GOTO SEN_BUSCAR
MOVF RIGHT,W
MOVWF PORTB
GOTO SENSAR

;()()()()()()()()BUSCAR LA LINEA NEGRA()()()()()()()()()()()

SEN_BUSCAR MOVF UP,W ;SI NINGUN SENSOR ESTA ACTIVO


MOVWF PORTB
CALL BUSCAR_LINE
MOVF LEFT,W
MOVWF PORTB
CALL RETARDO1
MOVF UP,W
MOVWF PORTB
CALL BUSCAR_LINE
MOVF LEFT,W
MOVWF PORTB
CALL RETARDO1
MOVF UP,W
MOVWF PORTB
CALL BUSCAR_LINE
MOVF LEFT,W
MOVWF PORTB
CALL RETARDO1
MOVF UP,W
MOVWF PORTB
CALL BUSCAR_LINE

CALL RETARDO2

MOVF LEFT,W
MOVWF PORTB
CALL RETARDO1
MOVF UP,W
MOVWF PORTB
CALL BUSCAR_LINE
MOVF LEFT,W
MOVWF PORTB
CALL RETARDO1
MOVF UP,W
MOVWF PORTB
CALL BUSCAR_LINE

MOVF RIGHT,W
MOVWF PORTB
CALL RETARDO
MOVF UP,W
MOVWF PORTB
CALL BUSCAR_LINE
GOTO SEN_BUSCAR
GOTO SENSAR

BUSCAR_LINE BTFSC PORTB,1


GOTO SENSAR
BTFSC PORTB,0
GOTO SENSAR
BTFSC PORTB,2
GOTO SENSAR
CALL RETARDO2
RETURN
RETARDO1 MOVLW 6H
MOVWF RET3
CALL RETARDO
RETURN

RETARDO2 MOVLW 0FH


MOVWF RET3
CALL RETARDO
RETURN

RETARDO MOVLW 0FFH


MOVWF RET1
MOVWF RET2

DECRE DECFSZ RET1


GOTO DECRE
DECFSZ RET2
GOTO DECRE
DECFSZ RET3
GOTO DECRE
RETURN

END

Vous aimerez peut-être aussi