基于C语言的园丁机器人源程序 --单片机应用

#include"reg52.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define zhankongbi_zuolun //30
#define zhankongbi_youlun //50
#define zhizou_zuolun //30
#define zhizou_youlun //30
sbit ciganying1=P2^7;//³µ×ÓµÄ×ó±ß
sbit ciganying2=P2^6;
sbit ciganying3=P2^5;
sbit ciganying4=P2^4; //ÒªÐÞ¸Ä
uchar Duty_left,Duty_right,i=0,j=0;
uint time=0,s;
sbit in1=P1^0; //zuo
sbit in2=P1^1;
sbit in3=P1^2;
sbit in4=P1^3;
sbit e1=P2^3;
sbit e2=P2^2;
sbit RX=P0^4;
sbit TX=P0^5;
sbit jd=P3^7;
void delay(unsigned int k) //ÑÓʱº¯Êý
{ unsigned int x,y;
for(x=0;x<k;x++)
for(y=0;y<2000;y++);
}
void startmodule()
{uint n;
TX=1;
for(n=0;n<21;n++)
_nop_();
TX=0;
}
void count()
{time=TH1*256+TL1;
TH1=0;
TL1=0;
s=(time*1.7)/100;//ÀåÃ×
}
void init1()
{TMOD=0x10;
TH1=0;
TL1=0;
TR1=1;
ET1=1;
EA=1;
}
void timer2() interrupt 3
{
}

void stop()
{in1=0;
in2=0;
in3=0;
in4=0;
}
void turn_youzhuan()
{Duty_left=29;//zhankongbi_zuolun;
Duty_right=20;//zhankongbi_youlun;
in1=1;//×óÂÖ
in2=0;
in3=0;
in4=1;
}
void turn_youzhuan1()
{Duty_left=29;//zhankongbi_zuolun;
Duty_right=20;//zhankongbi_youlun;
in1=1;//×óÂÖ
in2=0;
in3=0;
in4=1;
}
void turn_zuozhuan()
{Duty_left=18;//zhankongbi_zuolun;
Duty_right=26;//zhankongbi_youlun;
in1=0;
in2=1;
in3=1;
in4=0;
}
void turn_zuozhuan1()
{Duty_left=20;//zhankongbi_zuolun;
Duty_right=30;//zhankongbi_youlun;
in1=0;
in2=1;
in3=1;
in4=0;
}
void forward()
{Duty_left=25;//zhizou_zuolun;
Duty_right=25;//zhizou_youlun;
in1=1;
in2=0;
in3=1;
in4=0;
}
void forward1()
{Duty_left=45;//zhizou_zuolun;
Duty_right=35;//zhizou_youlun;
in1=1;
in2=0;
in3=1;
in4=0;
}
void init()
{TMOD=0X01;
TH0=(65536-50)/256;
TL0=(65536-50)%256;
EA=1;
ET0=1;
TR0=1;
e1=1;
e2=1;
}
void timer() interrupt 1
{i++;
j++;
if(i<=Duty_left)
e1=1;
else
e1=0;
if(i>100)
{e1=1;
i=0;
}
if(j<=Duty_right)
e2=1;
else
e2=0;
if(j>100)
{e2=0;
j=0;
}
TH0=(65536-50)/256;
TL0=(65536-50)%256;
}
void main()
{init();
init1();
while(1)
{startmodule();
while(!RX);
TR1=1;
while(RX);
TR1=0;
count();
//if(ciganying1==0&&ciganying2==1&&ciganying3==1&&s>40)// ×ó±ß1¸ö´Å¸ÐÓ¦´«¸ÐÆ÷¸ÐÓ¦µ½£¬ÓÒ±ß2¸öûÓУ¬Ôò×óת£»
//turn_zuozhuan();
//if(ciganying1==0&&ciganying2==0&&ciganying3==1&&s>40)
//turn_zuozhuan();
//if(ciganying1==1&&ciganying2==1&&ciganying3==0&&s>40)
//turn_youzhuan();
//if(ciganying1==1&&ciganying2==0&&ciganying3==0&&s>40)
//turn_youzhuan();
//if(ciganying1==1&&ciganying2==0&&ciganying3==1&&s>40)
//forward();
//if(ciganying1==1&&ciganying2==1&&ciganying3==1)
//forward();
if(ciganying1==0&&ciganying2==1&&ciganying3==1&&ciganying4==1&&s>40)
turn_youzhuan();
if(ciganying1==0&&ciganying2==0&&ciganying3==1&&ciganying4==1&&s>40)
turn_youzhuan();
if(ciganying1==1&&ciganying2==0&&ciganying3==0&&ciganying4==1&&s>40)
forward();
if(ciganying1==1&&ciganying2==1&&ciganying3==1&&ciganying4==1&&s>40)
forward();
if(ciganying1==1&&ciganying2==1&&ciganying3==0&&ciganying4==0&&s>40)
turn_zuozhuan();
if(ciganying1==1&&ciganying2==1&&ciganying3==1&&ciganying4==0&&s>40)
turn_zuozhuan();
if(ciganying2==0&&ciganying1==1&&ciganying3==1&&ciganying4==1&&s>40)
turn_youzhuan();
if(ciganying3==0&&ciganying1==1&&ciganying2==1&&ciganying4==1&&s>40)
turn_zuozhuan();


if(ciganying1==0&&ciganying2==1&&ciganying3==1&&ciganying4==1&&s<40)
{ stop();
jd=0;
delay(30);
jd=1;
turn_youzhuan1();
delay(8);
}
if(ciganying1==0&&ciganying2==0&&ciganying3==1&&ciganying4==1&&s<40)
{ stop();
jd=0;
delay(30);
jd=1;
turn_youzhuan1();
delay(8);
}
if(ciganying1==1&&ciganying2==0&&ciganying3==0&&ciganying4==1&&s<40)
{
stop();
jd=0;
delay(30);
jd=1;
forward1();
delay(8);
}
if(ciganying1==1&&ciganying2==1&&ciganying3==1&&ciganying4==1&&s<40)
{stop();
jd=0;
delay(30);
jd=1;
forward1();
delay(8);
}
if(ciganying1==1&&ciganying2==1&&ciganying3==0&&ciganying4==0&&s<40)
{stop();
jd=0;
delay(30);
jd=1;
turn_zuozhuan1();
delay(8);
}
if(ciganying1==1&&ciganying2==1&&ciganying3==1&&ciganying4==0&&s<40)
{stop();
jd=0;
delay(30);
jd=1;
turn_zuozhuan1();
delay(8);
}
}
}

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/qikeyishu/p/10507519.html
今日推荐