' RA0,RA1,RA3 Analog input ' m1s 1.motor sürücü pin PORTB.6 ,m2s 2. motor sürücü pin PORTB.3 @ __config _INTRC_IO & _WDT_ON & _PWRTE_ON & _LVP_OFF & _CP_OFF & _MCLR_OFF & _WRT_ENABLE_OFF & _CCP1_RB3 & _BODEN_OFF @ messg "config YAZILDI" define osc 8 sol var byte 'o anda yoldan okunan sol sensor değeri sag var byte 'o anda yoldan okunan sol sensor değeri mrk var byte 'o anda yoldan okunan sol sensor değeri yol var byte 'Başlangıçta öğrenilen yolun olması gereken merkez değeri tolera var byte 'yoldan çıkmış olarak görmesi için gerekli fark değeri temp var byte 'geçici değerler için starter: ADCON1=%00001001 '8 bit sonuç TRISA=15 'analog girişleri input yap TRISB=0 'PORTB nin bütün pinlerini output yap OSCCON=%01110000 'internal osilatörü 8MHZ de çalış PORTB=0 'portb yi sıfırla PORTA=0 'porta yi sıfırla tolera=15 'tolerans değeri low PORTB.3 'motoru durdur low PORTB.6 'motoru durdur ogren: for temp=1 to 10 ' yol değerini 10 kez oku adcin 1,yol ' Ortadaki sensör pause 200 ' her okuma arasında 200ms bekle next temp high PORTB.6 'm1 motoruna hareket ver high PORTB.3 'm2 motoruna hareket ver start: 'döngünün başlangıcı adcin 0,sag 'sağ sensörü oku adcin 1,mrk 'merkez sensörü oku adcin 2,sol 'sol sensörü oku temp=yol+tolera 'temp değerine tolerans ve yol değerini topla if mrk > temp then ' merkez sensörden okunan değer tempten büyükse if sol < temp then 'sol sensöre bak tempten küçükmü? low PORTB.6 'm1 motorunu durdur goto start 'başlangıça dön endif if sag < temp then 'sağ sensör tempten küçükse low PORTB.3 'm2 motorunu durdur goto start 'başlangıca dön endif else 'temp değeri merkez sensörden okunan değerden büyükse high PORTB.6 'm1 motoruna hareket ver high PORTB.3 'm2 motoruna hareket ver endif goto start 'başa dön