最近用光强检测模块和ADC0809做小车追光,但程序有问题。请教站内朋友。
源代码
#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() //左后轮正转
{ D1=1;
D2=0;
delays(200);
delays(200);
D1=1;
D2=1;
}
void init1()
{
TMOD=0X01; //定时器中断0
CLK=0; //脉冲信号初始值为0
TH0=(65536-2)/256; //定时时间高八位初值
TL0=(65536-2)%256; //定时时间低八位初值
EA=1; //开CPU中断
ET0=1; //开T/C0中断
TR0=1;
}
void houyou() //右后轮正转
{ D3=1;
D4=0;
delays(200);
delays(200);
D3=1;
D4=1;
}
void houzuodao() //左后轮反转
{ D1=0;
D2=1;
delays(200);
delays(200);
D1=0;
D2=0;
}
void houyoudao() // 右后轮反转
{ D3=0;
D4=1;
delays(200);
delays(200);
D3=0;
D4=0;
}
void qianjin() //前进
{ D1=1;
D2=0;
D3=1;
D4=0;
delays(200);
delays(200);
D1=1;
D2=1;
D3=1;
D4=1;
}
void houtui() //倒车·
{
D1=0;
D2=1;
D3=0;
D4=1;
delays(200);
delays(200);
D1=1;
D2=1;
D3=1;
D4=1;
}
chejian() //小车光强
{ 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();
}
}
*/
}
}
|