?? 接觸傳感器.cpp
字號:
////////////////////////////接觸傳感器程序///////////////////////////
void touch(void) interrupt 0 //接觸傳感器函數(shù),當接觸到了物體是調(diào)用
{ //該函數(shù)在中斷時調(diào)用,反應(yīng)速度比較的快
LMP=LMD; //若用隔一段時間掃描的辦法也行,不過反應(yīng)就慢了些
RMP=RMD;
LC=colour(LW,LR,LB); //掃描顏色
RC=colour(RW,RR,RB);
if ((LC==1||LC==3)&&(RC==1||RC==3)&&(num>=2)) //若在投球的顏色區(qū)則投球
{ if(act) throw();
else act1(); //否則調(diào)用act后退轉(zhuǎn)彎
}
else {if(act==2) act2();
else if(act==1||act==3) act1();
else return;
}
}
void timer1(void) interrupt 3 //計時函數(shù)每個周期20ms 每次time++
{uchar i;
time++; //同時,我們的數(shù)球光電探頭的計時internal++
internal++;
if (time>2000) act=2; //每收到一個球,探頭會產(chǎn)一信號,由于機器反應(yīng)太快,在一段時間內(nèi)信號不會消失,而產(chǎn)生誤判
if (time>3200) act=3;
if (internal==20) TR0=1; //所以應(yīng)該延遲一段時間再開啟數(shù)球中斷
if ((light1==P1)&&(light2==P3)) //與此同時,對顏色進行一次掃描,若一段時間顏色不改變表示車可能已經(jīng)撞死
lightnum++;
else {lightnum=0;
light1=P1;
light2=P3;
}
if (lightnum>200)
{for(i=100;i;i--)
back(200,200);
turnleft(50);
lightnum=0;
}
TL1=0xC0;
TH1=0x63;
}
/***********************************************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -