|
最近用光強(qiáng)檢測(cè)模塊和ADC0809做小車(chē)追光,但程序有問(wèn)題。請(qǐng)教站內(nèi)朋友。
源代碼
#include<reg52.h>
#include<math.h>
sbit D1=P2^0;
sbit D2=P2^1;
sbit D3=P2^2;
sbit D4=P2^3;
sbit ENA=P2^4;
sbit ENB=P2^5;
sbit E1=P3^4;
sbit E2=P3^5;
sbit E3=P3^6;
sbit E4=P2^6;
sbit ALE=P1^4;
sbit A=P1^7;
sbit C=P1^5;
sbit ST=P1^2;
sbit OE=P1^0;
sbit CLK=P1^3;
sbit EOC=P1^1;
int a,b,c,d;
delays(int p)
{ int l,m;
for(l=p;l>0;l--)
for(m=1100;m>0;m--);
}
void houzuo() //左后輪正轉(zhuǎn)
{ D1=1;
D2=0;
delays(200);
delays(200);
D1=1;
D2=1;
}
void init1()
{
TMOD=0X01; //定時(shí)器中斷0
CLK=0; //脈沖信號(hào)初始值為0
TH0=(65536-2)/256; //定時(shí)時(shí)間高八位初值
TL0=(65536-2)%256; //定時(shí)時(shí)間低八位初值
EA=1; //開(kāi)CPU中斷
ET0=1; //開(kāi)T/C0中斷
TR0=1;
}
void houyou() //右后輪正轉(zhuǎn)
{ D3=1;
D4=0;
delays(200);
delays(200);
D3=1;
D4=1;
}
void houzuodao() //左后輪反轉(zhuǎn)
{ D1=0;
D2=1;
delays(200);
delays(200);
D1=0;
D2=0;
}
void houyoudao() // 右后輪反轉(zhuǎn)
{ D3=0;
D4=1;
delays(200);
delays(200);
D3=0;
D4=0;
}
void qianjin() //前進(jìn)
{ D1=1;
D2=0;
D3=1;
D4=0;
delays(200);
delays(200);
D1=1;
D2=1;
D3=1;
D4=1;
}
void houtui() //倒車(chē)·
{
D1=0;
D2=1;
D3=0;
D4=1;
delays(200);
delays(200);
D1=1;
D2=1;
D3=1;
D4=1;
}
chejian() //小車(chē)光強(qiáng)
{ ALE=1;
A=0;
B=0;
C=0;
ALE=0;
ST=1;
CLK=1;
CLK=0;
CLK=1;
CLK=0;
while(!EOC)
{
CLK=1;
CLK=0;
}
OE=1;
a=E1;
OE=0;
ST=0;
ALE=1;
A=1;
B=0;
C=0;
ALE=0;
ST=1;
CLK=1;
CLK=0;
CLK=1;
CLK=0;
while(!EOC)
{
CLK=1;
CLK=0;
}
OE=1;
b=E2;
OE=0;
ST=0;
ALE=1;
A=0;
B=1;
C=0;
ALE=0;ST=1;
CLK=1;
CLK=0;
CLK=1;
CLK=0;
while(!EOC)
{
CLK=1;
CLK=0;
}
OE=1;
c=E3;
OE=0;
ST=0;
ALE=1;
A=1;
B=1;
C=0;
ALE=0;ST=1;
CLK=1;
CLK=0;
CLK=1;
CLK=0;
while(!EOC)
{
CLK=1;
CLK=0;
}
OE=1;
d=E4;
OE=0;
ALE=0;ST=0;
}
void main()
{ ENA=1;
ENB=1;
while(1)
{ qianjin();
/*void init1();
chejian();
if(a>b>c>d||a>b>d>c&&a-d>15)
while(a!=b||abs(a)-abs(b)>6)
{ houyou();
chejian();
}
if(b>a>c>d||b>a>d>c&&b-c>15)
while(a!=b||abs(b)-abs(a)>6)
{ void zuoyou();
chejian();
}
if(c>d>b>a||c>d>a>b&&c-b>15)
while(c!=E4||abs(a)-abs(b)>6)
{ houyoudao();
chejian();
}
if(d>c>b>a||d>c>a>b&&d-a>15)
while(c!=d||abs(a)-abs(b)>6)
{ void houyzuodao();
chejian();
}
if(a==c||abs(a)-abs(c)<5||abs(c)-abs(a)<5)
while( a!=b||abs(a)-abs(b)>2||abs(b)-abs(a)>2)
{ houzuodao();
chejian();
}
if(b==E4||abs(b)-abs(E4)<5||abs(E4)-abs(b)<5)
while( a!=b||abs(a)-abs(b)>2||abs(b)-abs(a)>2)
{ houyoudao();
chejian();
}
if(a>=(1.4*c)||b>=(1.4*d))
while(a>=1.1*c||b>=(1.1*d))
{
qianjin();
chejian();
}
if(c>=(1.4*a)||d>=(1.4*b))
while(c>=(1.1*a)||d>=(1.1*a))
{
qianjin();
chejian();
}
}
*/
}
}
|
|