วันอาทิตย์ที่ 30 สิงหาคม พ.ศ. 2552

แจกโค็ดวิ่งตามเส้น (แข่งในเกมส์ ฮาลองเบย์)

ส่วนพอร์ตต่างๆนั้น ดูเอานะครับ ติดตรงไหน เมล์มาถามได้เลยครับ
-ใช้ pic18f452 ความถี่ 40M
-มีการเช็คสีของก้อนไข่มุกด้วยนะครับ
-มีสีละ8โปรแกรม (เล่นเอาคนปล่อยหุ่นงงเลยครับ)
-sensor ใช้ตัวที่ลงใว้ก่อนหน้า เรียงจากซ้ายไปขวา a b c d || e f g h

define osc 40
DEFINE ADC_BITS 8
DEFINE ADC_SAMPLEUS 50

TRISA =255
TRISB =255
TRISC =00
TRISD =255

adcon1 = 2

collor VAR PORTb.0
pro var portb.1
start1 VAR PORTe.0
start2 var porte.1
start3 var porte.2
start4 var portb.2

dr VAR portc.3
dl VAR portc.0

a VAR PORTd.0
b VAR PORTd.1
c VAR PORTd.2
d VAR PORTd.3
e VAR PORTd.4
f VAR PORTd.5
g VAR PORTd.6
h VAR PORTd.7

i VAR BYTE
sen_up var byte
sb var byte
CL VAR BYTE
cg var byte

cg=130

PORTC =111111
pause 1000
gosub set
pause 1000

chk_st:
if (start1=0)and(start2=1)and(start3=1)and(start4=1)and(collor=0)and(pro=1) then
goto red1 :endif
if (start1=1)and(start2=0)and(start3=1)and(start4=1)and(collor=0)and(pro=1) then
goto red2 :endif
if (start1=1)and(start2=1)and(start3=0)and(start4=1)and(collor=0)and(pro=1) then
goto red3 :endif
if (start1=1)and(start2=1)and(start3=1)and(start4=0)and(collor=0)and(pro=1) then
goto red4 :endif
if (start1=0)and(start2=1)and(start3=1)and(start4=1)and(collor=0)and(pro=0) then
goto red5 :endif
if (start1=1)and(start2=0)and(start3=1)and(start4=1)and(collor=0)and(pro=0) then
goto red6 :endif
if (start1=1)and(start2=1)and(start3=0)and(start4=1)and(collor=0)and(pro=0) then
goto red7 :endif
if (start1=1)and(start2=1)and(start3=1)and(start4=0)and(collor=0)and(pro=0) then
goto red8 :endif

if (start1=0)and(start2=1)and(start3=1)and(start4=1)and(collor=1)and(pro=1) then
goto green1 :endif
if (start1=1)and(start2=0)and(start3=1)and(start4=1)and(collor=1)and(pro=1) then
goto green2 :endif
if (start1=1)and(start2=1)and(start3=0)and(start4=1)and(collor=1)and(pro=1) then
goto green3 :endif
if (start1=1)and(start2=1)and(start3=1)and(start4=0)and(collor=1)and(pro=1) then
goto green4 :endif
if (start1=0)and(start2=1)and(start3=1)and(start4=1)and(collor=1)and(pro=0) then
goto green5 :endif
if (start1=1)and(start2=0)and(start3=1)and(start4=1)and(collor=1)and(pro=0) then
goto green6 :endif
if (start1=1)and(start2=1)and(start3=0)and(start4=1)and(collor=1)and(pro=0) then
goto green7 :endif
if (start1=1)and(start2=1)and(start3=1)and(start4=0)and(collor=1)and(pro=0) then
goto green8 :endif
goto chk_st


red1:
gosub ffff
gosub left_v
gosub ffff2
gosub chk_line
GoSub forward
GoSub forward
GoSub forward
GoSub forward
gosub left
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
gosub forward
gosub left
gosub forward
gosub forward
gosub right
gosub forward
gosub forward
gosub left
gosub forward
gosub right
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub right
gosub set
gosub chk_line
gosub forward
gosub right
gosub forward
gosub forward
gosub forward
gosub bbb
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
gosub forward
gosub forward
gosub left
pause 1500
gosub chk_line
gosub up
pause 1000
gosub chk_line
GoSub forward1
gosub d_paste
gosub d_box1
gosub bb
gosub left1
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub left
gosub forward
gosub left
gosub forward
gosub forward
gosub forward
gosub forward
gosub forward
gosub right
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub left
gosub down
gosub left
gosub forward
gosub up1
gosub forward1
pause 500
gosub beep
gosub up
gosub bb
gosub right
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub left
gosub forward
gosub right
gosub set
End
red2:
gosub ffff
gosub left_v
gosub ffff2
gosub chk_line
GoSub forward
gosub right
GoSub forward
GoSub forward
GoSub forward
gosub left
GoSub forward
GoSub forward
GoSub forward
GoSub forward
GoSub forward
gosub left
GoSub forward
GoSub forward
GoSub forward
gosub bbb
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
gosub forward
gosub forward
gosub forward
gosub left
gosub forward
gosub right
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub right
gosub set
gosub chk_line
gosub forward
gosub right
gosub forward
gosub forward
gosub forward
gosub bbb
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
gosub forward
gosub forward
gosub left
pause 1500
gosub chk_line
gosub up
pause 1000
gosub chk_line
GoSub forward1
gosub d_paste
gosub d_box1
gosub bb
gosub left1
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub left
gosub forward
gosub left
gosub forward
gosub forward
gosub forward
gosub forward
gosub forward
gosub right
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub left
gosub down
gosub left
gosub forward
gosub up1
gosub forward1
pause 500
gosub beep
gosub up
gosub bb
gosub right
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub left
gosub forward
gosub right
gosub set
End
red3:
gosub ffff
gosub left_v
gosub ffff2
gosub chk_line
GoSub forward
goSub forward
GoSub forward
goSub forward
GoSub forward
goSub forward
gosub left
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
gosub forward
gosub forward
gosub left
pause 1500
gosub chk_line
gosub up
pause 1000
gosub chk_line
GoSub forward1
gosub d_paste
gosub d_box1
gosub bb
gosub left1
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub left
gosub forward
gosub left
gosub forward
gosub forward
gosub forward
gosub forward
gosub forward
gosub right
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub left
gosub down
gosub left
gosub forward
gosub up1
gosub forward1
pause 500
gosub beep
gosub up
gosub bb
gosub right
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub left
gosub forward
gosub right
gosub set
End
red4:
gosub ffff
gosub left_v
gosub ffff2
gosub chk_line
GoSub forward
goSub forward
GoSub forward
GoSub forward
gosub left
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
gosub forward
GoSub forward
GoSub forward
gosub left
GoSub forward
goSub forward
GoSub forward
goSub forward
GoSub forward
GoSub forward
GoSub forward
gosub right
goSub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub up
pause 2000
gosub beep
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
gosub bb
gosub left
End
red5:
gosub ffff
gosub left_v
gosub ffff2
gosub chk_line
GoSub forward
goSub forward
GoSub forward
goSub forward
gosub left
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
goSub forward
gosub left
goSub forward
goSub forward
gosub right
goSub forward
gosub left
pause 1500
gosub chk_line
gosub up
pause 1000
gosub chk_line
GoSub forward1
gosub d_paste
gosub bb
gosub left1
gosub set
gosub chk_line
goSub forward
gosub right
goSub forward
gosub bbb
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
gosub forward
gosub left
GoSub forward
goSub forward
GoSub forward
goSub forward
gosub right
goSub forward
goSub forward
gosub left
goSub forward
gosub right
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub d_box1
gosub bb
gosub left
gosub left
gosub chk_line
gosub down
gosub beep_up
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub right
pause 500
gosub chk_line
gosub set
gosub forward
gosub left
gosub forward
gosub bbb
End
red6:
gosub ffff
gosub left_v
gosub ffff2
gosub chk_line
GoSub forward
GoSub forward
GoSub forward
GoSub forward
gosub left
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
gosub forward
gosub left
gosub forward
gosub forward
gosub right
gosub forward
gosub forward
gosub left
gosub forward
gosub right
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub right
gosub set
gosub chk_line
gosub forward
gosub right
gosub forward
gosub forward
gosub forward
gosub bbb
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
gosub forward
gosub forward
gosub forward
gosub forward
gosub left
gosub forward
gosub forward
gosub forward
gosub forward
gosub forward
pause 500
gosub chk_line
gosub up
gosub right
pause 500
gosub chk_line
gosub forward1
gosub d_paste
gosub bb
End
red7:
gosub ffff
gosub left_v
gosub ffff2
gosub chk_line
GoSub forward
gosub right
GoSub forward
GoSub forward
GoSub forward
gosub left
GoSub forward
GoSub forward
GoSub forward
GoSub forward
GoSub forward
GoSub forward
pause 500
gosub chk_line
gosub up1
gosub right
pause 500
gosub chk_line
gosub forward1
gosub beep
pause 500
gosub paste
gosub up
pause 1000
gosub beep
gosub bb
gosub left
gosub set
gosub chk_line
gosub forward
End
red8:
gosub ffff
gosub left_v
gosub ffff2
gosub chk_line
GoSub forward
GoSub forward
GoSub forward
GoSub forward
GoSub forward
GoSub forward
gosub left
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor1
gosub left1
gosub forward
GoSub forward
GoSub forward
gosub left
gosub forward
gosub right
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
pause 2000
gosub up
pause 2000
gosub beep
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
gosub paste
End
green1:
gosub ffff
gosub right_v
gosub ffff2
gosub chk_line
GoSub forward
GoSub forward
GoSub forward
GoSub forward
gosub right
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
gosub forward
gosub right
gosub forward
gosub forward
gosub left
gosub forward
gosub forward
gosub right
gosub forward
gosub left
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub left
gosub set
gosub chk_line
gosub forward
gosub left
gosub forward
gosub forward
gosub forward
gosub bbb
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
gosub forward
gosub forward
gosub right
pause 1500
gosub chk_line
gosub up
pause 1000
gosub chk_line
GoSub forward1
gosub d_paste
gosub d_box1
gosub bb
gosub left1
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub right
gosub forward
gosub right
gosub forward
gosub forward
gosub forward
gosub forward
gosub forward
gosub left
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub right
gosub down
gosub right
gosub forward
gosub up1
gosub forward1
pause 500
gosub beep
gosub up
gosub bb
gosub left
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub right
gosub forward
gosub left
gosub set
End
green2:
gosub ffff
gosub right_v
gosub ffff2
gosub chk_line
GoSub forward
gosub left
GoSub forward
GoSub forward
GoSub forward
gosub right
GoSub forward
GoSub forward
GoSub forward
GoSub forward
GoSub forward
gosub right
GoSub forward
GoSub forward
GoSub forward
gosub bbb
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
gosub forward
gosub forward
gosub forward
gosub right
gosub forward
gosub left
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub left
gosub set
gosub chk_line
gosub forward
gosub left
gosub forward
gosub forward
gosub forward
gosub bbb
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
gosub forward
gosub forward
gosub right
pause 1500
gosub chk_line
gosub up
pause 1000
gosub chk_line
GoSub forward1
gosub d_paste
gosub d_box1
gosub bb
gosub left1
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub right
gosub forward
gosub right
gosub forward
gosub forward
gosub forward
gosub forward
gosub forward
gosub left
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub right
gosub down
gosub right
gosub forward
gosub up1
gosub forward1
pause 500
gosub beep
gosub up
gosub bb
gosub left
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub right
gosub forward
gosub left
gosub set
End
green3:
gosub ffff
gosub right_v
gosub ffff2
gosub chk_line
GoSub forward
goSub forward
GoSub forward
goSub forward
GoSub forward
goSub forward
gosub right
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
gosub forward
gosub forward
gosub right
pause 1500
gosub chk_line
gosub up
pause 1000
gosub chk_line
GoSub forward1
gosub d_paste
gosub d_box1
gosub bb
gosub left1
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub right
gosub forward
gosub right
gosub forward
gosub forward
gosub forward
gosub forward
gosub forward
gosub left
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub right
gosub down
gosub right
gosub forward
gosub up1
gosub forward1
pause 500
gosub beep
gosub up
gosub bb
gosub left
gosub down
gosub beep_up
gosub chk_line
gosub forward
gosub right
gosub forward
gosub left
gosub set
End
green4:
gosub ffff
gosub right_v
gosub ffff2
gosub chk_line
GoSub forward
goSub forward
GoSub forward
GoSub forward
gosub right
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
gosub forward
GoSub forward
GoSub forward
gosub right
GoSub forward
goSub forward
GoSub forward
goSub forward
GoSub forward
GoSub forward
GoSub forward
gosub left
goSub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub up
pause 2000
gosub beep
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
gosub bb
gosub right
End
green5:
gosub ffff
gosub right_v
gosub ffff2
gosub chk_line
GoSub forward
goSub forward
GoSub forward
goSub forward
gosub right
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
goSub forward
gosub right
goSub forward
goSub forward
gosub left
goSub forward
gosub right
pause 1500
gosub chk_line
gosub up
pause 1000
gosub chk_line
GoSub forward1
gosub d_paste
gosub bb
gosub left1
gosub set
gosub chk_line
goSub forward
gosub left
goSub forward
gosub bbb
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
gosub forward
gosub right
GoSub forward
goSub forward
GoSub forward
goSub forward
gosub left
goSub forward
goSub forward
gosub right
goSub forward
gosub left
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub d_box1
gosub bb
gosub right
gosub right
gosub chk_line
gosub forward
pause 300
gosub forward1
gosub d_paste
gosub bb
gosub left
pause 500
gosub chk_line
gosub set
gosub forward
gosub right
gosub forward
gosub bbb
End
green6:
gosub ffff
gosub right_v
gosub ffff2
gosub chk_line
GoSub forward
GoSub forward
GoSub forward
GoSub forward
gosub right
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
gosub forward
gosub right
gosub forward
gosub forward
gosub left
gosub forward
gosub forward
gosub right
gosub forward
gosub left
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
gosub bb
gosub left
gosub set
gosub chk_line
gosub forward
gosub left
gosub forward
gosub forward
gosub forward
gosub bbb
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
gosub forward
gosub forward
gosub forward
gosub forward
gosub right
gosub forward
gosub forward
gosub forward
gosub forward
gosub forward
pause 500
gosub chk_line
gosub up
gosub left
pause 500
gosub chk_line
gosub forward1
gosub d_paste
gosub bb
End

green7:
gosub ffff
gosub right_v
gosub ffff2
gosub chk_line
GoSub forward
gosub left
GoSub forward
GoSub forward
GoSub forward
gosub right
GoSub forward
GoSub forward
GoSub forward
GoSub forward
GoSub forward
GoSub forward
pause 500
gosub chk_line
gosub up1
gosub left
pause 500
gosub chk_line
gosub forward1
gosub beep
pause 500
gosub paste
gosub up
pause 1000
gosub beep
gosub bb
gosub right
gosub set
gosub chk_line
gosub forward
End
green8:
gosub ffff
gosub right_v
gosub ffff2
gosub chk_line
GoSub forward
GoSub forward
GoSub forward
GoSub forward
GoSub forward
GoSub forward
gosub right
pause 2000
gosub chk_line
pause 1000
gosub chk_line
gosub wait_box
GoSub forward1
gosub beep_up
gosub chk_cor2
gosub left1
gosub forward
GoSub forward
GoSub forward
gosub right
gosub forward
gosub left
gosub forward
gosub bbb
gosub up
gosub forward1
gosub d_paste
pause 2000
gosub up
pause 2000
gosub beep
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
pause 30000
gosub paste
End


forward:
IF (d=0)AND(e=0) Then
high dr : high dl
low portc.2 'motor r
low portc.1 'motor l
Pause 6
EndIF
IF (d=1)AND(e=0) Then
low dl : high dr
low portc.2 'motor r
high portc.1 'motor l
Pause 1
EndIF
IF (d=0)AND(e=1) Then
high dl : low dr
high portc.2 'motor r
low portc.1 'motor l
Pause 1
EndIF
IF (d=1)AND(e=1) Then
high portc.2 'motor r
high portc.1 'motor l
goto out
EndIF
IF (c=1)AND(f=0) Then
low dl :high dr
low portc.2 'motor r
low portc.1 'motor l
Pause 4
EndIF
IF (c=0)AND(f=1) Then
high dl : low dr
low portc.2 'motor r
low portc.1 'motor l
Pause 4
EndIF
IF (b=1)AND(g=0) Then
low dl :high dr
low portc.2 'motor r
low portc.1 'motor l
Pause 8
EndIF
IF (b=0)AND(g=1) Then
high dl : low dr
low portc.2 'motor r
low portc.1 'motor l
Pause 8
EndIF
IF (d=1)AND(e=1) Then
high portc.2 'motor r
high portc.1 'motor l
goto out
EndIF
GoTo forward

out:
high dr : high dl
low portc.2 'motor r
low portc.1 'motor l
Pause 100
IF (c=0)AND(f=0) Then
low portc.2 'motor r
low portc.1 'motor l
Pause 60
gosub line_ff
return
endif
goto out

chk_line:
IF (a=1) Then
high dr : low dl
low portc.2 'motor r
low portc.1 'motor l
Pause 4
high portc.2 'motor r
high portc.1 'motor l
pause 120
EndIF
IF (h=1) Then
low dr : high dl
low portc.2 'motor r
low portc.1 'motor l
Pause 4
high portc.2 'motor r
high portc.1 'motor l
pause 120
EndIF
IF (b=1) Then
high dr : low dl
PAUSE 20
low portc.2 'motor r
low portc.1 'motor l
Pause 2
high portc.2 'motor r
high portc.1 'motor l
pause 200
EndIF
IF (g=1) Then
low dr : high dl
PAUSE 20
low portc.2 'motor r
low portc.1 'motor l
Pause 2
high portc.2 'motor r
high portc.1 'motor l
pause 200
EndIF
IF (c=1) Then
high dr : low dl
PAUSE 20
low portc.2 'motor r
low portc.1 'motor l
Pause 1
high portc.2 'motor r
high portc.1 'motor l
pause 200
EndIF
IF (f=1) Then
low dr : high dl
PAUSE 20
low portc.2 'motor r
low portc.1 'motor l
Pause 1
high portc.2 'motor r
high portc.1 'motor l
pause 200
EndIF
IF (d=1) Then
high dr : low dl
Pause 20
low portc.2 'motor r
low portc.1 'motor l
Pause 1
high portc.2 'motor r
high portc.1 'motor l
pause 200
EndIF
IF (e=1) Then
high dl : low dr
Pause 20
low portc.2 'motor r
low portc.1 'motor l
Pause 1
high portc.2 'motor r
high portc.1 'motor l
pause 200
EndIF
IF (a=0)AND(b=0)AND(c=0)AND(d=0)and(e=0)and(f=0)AND(g=0)AND(h=0) Then
high dr : high dl
high portc.2 'motor r
high portc.1 'motor l
Return
EndIF
GoTo chk_line

line_ff:
IF (a=1) Then
high dr : low dl
low portc.2 'motor r
low portc.1 'motor l
Pause 20
high portc.2 'motor r
high portc.1 'motor l
EndIF
IF (h=1) Then
low dr : high dl
low portc.2 'motor r
low portc.1 'motor l
Pause 20
high portc.2 'motor r
high portc.1 'motor l
EndIF
IF (b=1) Then
high dr : low dl
low portc.2 'motor r
low portc.1 'motor l
Pause 20
high portc.2 'motor r
high portc.1 'motor l
EndIF
IF (g=1) Then
low dr : high dl
low portc.2 'motor r
low portc.1 'motor l
Pause 20
high portc.2 'motor r
high portc.1 'motor l
EndIF
IF (c=1) Then
high dr : low dl
Pause 5
low portc.2 'motor r
low portc.1 'motor l
Pause 4
high portc.2 'motor r
high portc.1 'motor l
Pause 30
EndIF
IF (f=1) Then
low dr : high dl
Pause 5
low portc.2 'motor r
low portc.1 'motor l
Pause 4
high portc.2 'motor r
high portc.1 'motor l
Pause 30
EndIF
IF (a=0)AND(b=0)AND(c=0)and(f=0)AND(g=0)AND(h=0) Then
high dr : high dl
high portc.2 'motor r
high portc.1 'motor l
Return
EndIF
GoTo line_ff

set:
gosub beep
gosub down
gosub paste
return

left:
high dr : low dl
low portc.2 'motor r
low portc.1 'motor l
Pause 3
high portc.2 'motor r
high portc.1 'motor l
pause 100
IF (h=1) Then
goto lefta
EndIF
IF (g=1) Then
goto lefta
EndIF
goto left
lefta:
high dr : low dl
low portc.2 'motor r
low portc.1 'motor l
Pause 3
high portc.2 'motor r
high portc.1 'motor l
pause 100
IF (d=1) Then
pause 300
gosub chk_line
return
EndIF
IF (c=1) Then
pause 300
gosub chk_line
return
EndIF
goto lefta

left_v:
high dr : low dl
low portc.2 'motor r
low portc.1 'motor l
Pause 3
high portc.2 'motor r
high portc.1 'motor l
pause 100
IF (b=1) Then
pause 300
gosub chk_line
return
EndIF
IF (c=1) Then
pause 300
gosub chk_line
return
EndIF
goto left_v

right:
low dr : high dl
low portc.2 'motor r
low portc.1 'motor l
Pause 3
high portc.2 'motor r
high portc.1 'motor l
pause 100
IF (a=1) Then
goto lefta
EndIF
IF (b=1) Then
goto righta
EndIF
goto right
righta:
low dr : high dl
low portc.2 'motor r
low portc.1 'motor l
Pause 3
high portc.2 'motor r
high portc.1 'motor l
pause 100
IF (f=1) Then
pause 300
gosub chk_line
return
EndIF
IF (e=1) Then
pause 300
gosub chk_line
return
EndIF
goto righta

right_v:
low dr : high dl
low portc.2 'motor r
low portc.1 'motor l
Pause 3
high portc.2 'motor r
high portc.1 'motor l
pause 100
IF (f=1) Then
pause 300
gosub chk_line
return
EndIF
IF (g=1) Then
pause 300
gosub chk_line
return
EndIF
goto right_v

left1:
High dr :Low dl
low portc.2 'motor r
low portc.1 'motor l
Pause 2000
high portc.2 'motor r
high portc.1 'motor l
Pause 500'20
chkl1:
High dr :Low dl
low portc.2 'motor r
low portc.1 'motor l
Pause 5
high portc.2 'motor r
high portc.1 'motor l
Pause 100'20
IF (d=1) Then
return
EndIF
IF (c=1) Then
return
EndIF
goto chkl1

beep:
for i= 1 to 60
if portb.4 = 0 then
low portc.6
return
else
high portc.6
pause 25
endif
next
low portc.6
return

beep_up:
if portb.4 = 1 then
high portc.6
pause 25
goto beep_up
else
low portc.6
low portc.4 'dir up
low portc.5 'motor up
pause 1000
high portc.4 'dir up
high portc.5 'motor up
pause 1000
return
endif
return

paste:
for i= 1 to 60
if portb.5 = 0 then
low portc.7
return
else
high portc.7
pause 25
endif
next i
low portc.7
return
return

up:
for i= 1 to 100
if portb.6 = 0 then
high portc.4 'dir up
high portc.5 'motor up
return
else
low portc.4 'dir up
low portc.5 'motor up
pause 100
endif
next i
high portc.4 'dir up
high portc.5 'motor up
return
return

up1:
low portc.4 'dir up
low portc.5 'motor up
pause 2200
high portc.4 'dir up
high portc.5 'motor up
return

up_xx:
low portc.4 'dir up
low portc.5 'motor up
pause 250
high portc.4 'dir up
high portc.5 'motor up
return


down:
for i = 1 to 180
if portb.7 = 0 then
high portc.4 'dir down
high portc.5 'motor down
return
else
high portc.4 'dir up
low portc.5 'motor up
pause 40
endif
next i
high portc.4 'dir up
high portc.5 'motor up
return
return

d_paste:
pause 1000
high dr : high dl
low portc.2 'motor r
low portc.1 'motor l
Pause 4
high portc.2 'motor r
high portc.1 'motor l
d_p:
if portb.7 = 0 then
return:endif
high portc.4 'dir down
low portc.5 'motor down
pause 20
adcin 1,sen_up
if (sen_up <>=105) then
High dr :High dl
high portc.2 'motor r
high portc.1 'motor l
return
EndIF
IF (d=1)AND(e=0) Then
low dl :High dr
low portc.2 'motor r
high portc.1 'motor l
Pause 8
high portc.2 'motor r
high portc.1 'motor l
pause 40
EndIF
IF (d=0)AND(e=1) Then
low dr :High dl
high portc.2 'motor r
low portc.1 'motor l
Pause 8
high portc.2 'motor r
high portc.1 'motor l
pause 40
EndIF
IF (d=0)AND(e=0) Then
High dr :High dl
low portc.2 'motor r
low portc.1 'motor l
Pause 6
high portc.2 'motor r
high portc.1 'motor l
pause 100
EndIF
IF (d=1)AND(e=1) Then
high dr : high dl
high portc.2 'motor r
high portc.1 'motor l
return
EndIF
GoTo forward1

chk_cor1: 'red
adcin 2,cl
if (cl > cg) then
goto no_red1
else
return
endif
no_red1:
gosub left1
gosub forward
gosub left
gosub forward
gosub set
gosub right
gosub right
gosub forward
gosub right
pause 1500
gosub chk_line
gosub wait_box
gosub forward1
gosub beep_up
goto chk_cor1


chk_cor2: 'green
adcin 2,cl
if (cl < cg ) then
goto no_green 'no green
else
return
endif
no_green:
gosub left1
gosub forward
gosub left
gosub forward
gosub set
gosub right
gosub right
gosub forward
gosub right
pause 1500
gosub chk_line
gosub wait_box
gosub forward1
gosub beep_up
goto chk_cor2

ไม่มีความคิดเห็น:

แสดงความคิดเห็น