La première phase de déplacement du robot est la recherche de la ligne.
En effet, le robot est lancé du milieu du plateau en direction de la ligne,
et doit donc être capable "d'accrocher" la ligne à chaud.
seek0
;démmarage des moteurs
bsf MOT_D_1 ;Allumer le moteur droit dans le sens1
bsf MOT_G_1 ;Allumer le moteur gauche dans le sens1
;récupérage de la ligne
movlw B'00000011' ; Valeur des flags
;(B0=0 => déja vu à D et D1 à G)
;(B2=0 => premier cycle)
movwf rotled ; Affectation à rotled
;initialisation des flags
seek1 ;boucle d'avance, la ligne n'a pas
;encore été détectée
btfsc CAP_L_G ; Si ligne détectée à gauche
bcf rotled,1 ; flag ligne G à 0
btfsc CAP_L_D ; Si ligne détectée à droite
bcf rotled,0 ; flag ligne D à 0
btfsc rotled,0 ; Si ligne pas encore franchie à D
goto seek1 ; Reboucler
btfsc rotled,1 ; Si ligne pas encore franchie à G
goto seek1 ; Reboucler
btfsc rotled,2 ; Si fin de la deuxième phase
goto fseek ; Reboucler
bcf MOT_D_1 ;Étteindre le moteur droit dans le sens1
bcf MOT_G_1 ;Étteindre le moteur gauche dans le sens1
movlw 20 ; pour 2 boucles
movwf nb_tempo ; Affectation à nombre de tempo
call tempo ; appeler la tempo
bsf MOT_G_1 ; Allumer le moteur gauche dans le sens1
bsf MOT_D_2 ; Allumer le moteur droit dans le sens2
;Pour se remettre dans le sens de la ligne
movlw B'00000111' ; Valeur des flags
movwf rotled ; Affectation à rotled
goto seek1 ; Reboucler
fseek