標(biāo)題:
通過定時器中斷控制循跡小車程序
[打印本頁]
作者:
騰飛的龍
時間:
2015-7-23 19:06
標(biāo)題:
通過定時器中斷控制循跡小車程序
#include<reg52.h>
sbit P00=P0^0; //循跡口
sbit P01=P0^1;
sbit P02=P0^2;
sbit P04=P0^4; //電機1 左輪
sbit P05=P0^5;
sbit P06=P0^6; //電機2
sbit P07=P0^7;
unsigned int i=0,j=0;
void main()
{
while(1)
{
P04=1;P05=1;P06=1; P07=1;
TMOD=0X01;
EA=1;
ET0=1;
if(P00==0&&P01==1&&P02==0)// 小車直走定時0.002ms
{
TH0=0XFF; //定時0.005ms
TL0=0Xfe;
TR0=1;
}
if(P00==0&&P01==0&&P02==1) //小車右轉(zhuǎn)定時0.005ms
{
TH0=0XFF;
TL0=0Xfe; //0.01
TR0=1;
}
if(P00==1&&P01==0&&P02==0)//小車左轉(zhuǎn)定時0.005ms
{
TH0=0XFF;
TL0=0Xfe;
TR0=1;
}
if(P00==1&&P01==1&&P02==1) //全部檢測到黑線時 車停
{
TH0=0XFF;
TL0=0Xfe;
TR0=1; }
/***********************************/
if(P00==0&&P01==1&&P02==1)//兩個傳感器測到 左拐
{TH0=0XFF;
TL0=0Xfe;
TR0=1; }
if(P00==1&&P01==1&&P02==0)//兩個傳感器測到 左拐
{TH0=0XFF;
TL0=0Xfe;
TR0=1; }
/**********************************/
}
}
xiong() interrupt 1
{
if(P00==0&&P01==1&&P02==0)//小車直線快走 定時0.002ms
{
TH0=0XFF;
TL0=0Xfe;
P04=0; //電機1 左輪
P05=1;
P06=1; //電機2 右轉(zhuǎn)
P07=0;
}
if(P00==0&&P01==0&&P02==1) //小車右轉(zhuǎn) 定時0.005ms
{
TH0=0XFF;
TL0=0Xfe;
P04=1; //電機1 左輪
P05=1;
P06=1; //電機2
P07=0;
i=1;
}
if(P00==0&&P01==0&&P02==0&&i==1)// 特別 出線時用
{TH0=0XFF;
TL0=0Xfe;
P04=1;
P05=1;
P06=1;
P07=0;
j=0;// q=0;w=0;
}
if(P00==1&&P01==0&&P02==0)//小車左轉(zhuǎn)定時0.005ms
{
TH0=0XFF;
TL0=0Xfe;
P04=0; //電機1
P05=1;
P06=1; //電機2
P07=1;
j=1;
}
if(P00==0&&P01==0&&P02==0&&j==1) // 特別 出線時用
{ TH0=0XFF;
TL0=0Xfe;
P04=0;
P05=1;
P06=1;
P07=1;
i=0;//q=0;w=0;
}
if(P00==1&&P01==1&&P02==1)
{ //全部檢測到黑線時 車停
TH0=0XFF;
TL0=0Xfe;
P04=1;
P05=1;
P06=1;
P07=1;}
/*********************************************/
if(P00==0&&P01==1&&P02==1)//兩個傳感器測到 左拐
{
TH0=0XFF;
TL0=0Xfe;
P04=1;
P05=0; // 一個輪前轉(zhuǎn)一個輪后轉(zhuǎn) 轉(zhuǎn)90
P06=1;
P07=0;
}
if(P00==1&&P01==1&&P02==0)//兩個傳感器測到 右拐
{
TH0=0XFF;
TL0=0Xfe;
P04=0;
P05=1;
P06=0; // 一個輪前轉(zhuǎn)一個輪后轉(zhuǎn) 轉(zhuǎn)90
P07=1;
}
}
/***************************************/
復(fù)制代碼
作者:
cai596513612
時間:
2015-10-16 21:36
試了一下 很好的
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1