Professional Documents
Culture Documents
Program
Program
h>
#define dataport P0
unsigned char timcnt;
unsigned char cnt;
unsigned char rcnt;
unsigned char outcnt;
unsigned char bdata outen;
unsigned char bdata outrun;
bit rdir;
sbit visen=outen^1;
sbit exen=outen^2;
sbit hornen=outen^3;
sbit mgunen=outen^4;
sbit amben=outen^5;
sbit polen=outen^6;
sbit fsen=outen^7;
sbit visrn=outrun^1;
sbit exrn=outrun^2;
sbit hornrn=outrun^3;
sbit mgunrn=outrun^4;
sbit ambrn=outrun^5;
sbit polrn=outrun^6;
sbit fsrn=outrun^7;
sbit trig=P3^5;
sbit dls=P3^7;
sbit rs=P3^1;
sbit rw=P3^3;
sbit e=P3^4;
sbit ut=P2^3;
sbit bth=P2^4;
sbit exct=P2^5;
sbit act=P2^6;
sbit vct=P2^7;
sbit dlsct=P3^6;
sbit mgun=P2^0;
sbit asirn=P2^1;
sbit fsirn=P2^2;
sbit horn=P1^0;
sbit audioon=P1^1;
sbit mdir=P1^4;
sbit drmot=P1^5;
sbit vismot=P1^6;
sbit usrct=P1^7;
if(fsrn)
{
mgun=1;
asirn=1;
fsirn=0;
audioon=0;
timsec(3);
audioon=1;
fsirn=1;
}
else if(polrn)
{
mgun=1;
asirn=1;
fsirn=1;
audioon=0;
timsec(3);
audioon=1;
}
else if(ambrn)
{
mgun=1;
fsirn=1;
asirn=0;
audioon=0;
timsec(3);
audioon=1;
asirn=1;
}
else if(mgunrn)
{
fsirn=1;
asirn=1;
mgun=0;
audioon=0;
timsec(3);
audioon=1;
mgun=1;
}
else if(hornrn)
{
horn=0;
timsec(2);
horn=1;
}
if(exrn)
{
for(cnt=0;cnt<10;cnt++)
{
mdir=1;
drmot=0;
delay(35);
drmot=1;
mdir=0;
drmot=0;
delay(35);
drmot=1;
}
}
if(visrn)
{
mdir=1;
vismot=0;
delay(20);
vismot=1;
for(cnt=0;cnt<5;cnt++)
{
mdir=0;
vismot=0;
delay(10);
vismot=1;
mdir=1;
vismot=0;
delay(10);
vismot=1;
}
mdir=0;
vismot=0;
delay(20);
vismot=1;
}
}
void rotate(void)
{
if (rcnt>=30)
{
rcnt=0;
rdir=!rdir;
}
mdir=rdir;
usrct=0;
delay(4);
usrct=1;
rcnt=rcnt+1;
}
void main()
{
long int timer_val;
EA=0;
P0=0x00;
P1=0xFF;
P2=0xFF;
P3=0x00;
timsec(1);
lcd_cmd(0x38);
lcd_cmd(0x0c);
delay(2);
lcd_cmd(0x01);
delay(2);
lcd_cmd(0x81);
delay(2);
lcd_data_string("start");
timsec(2);
if(!bth)
{
senseb: while((!dlsct&dls))
{
lcd_cmd(0x01);
lcd_data_string("bright sun");
}
lcd_cmd(0x01);
delay(2);
lcd_data_string("usense&tim");
TMOD=0x09;//timer0 in 16 bit mode with gate enable
TR0=1;//timer run enabled
TH0=0x00;
TL0=0x00;
P3|=0x04;//setting pin P3.2
send_pulse();
while(!INT0); //Waiting until echo pulse is detected
while(INT0|!TF0); //Waiting until echo pulse changes its state
timer_val=(TH0<<8)+TL0;
if(timer_val<2000) //This value can be changed to vary the range
{
lcd_cmd(0xC0);
delay(2);
timcnt=0;
lcd_data_string("target detected");
delay(2);
chaser();
goto senseb;
}
else
{
lcd_cmd(0xC0);
delay(2);
lcd_data_string("nothing");
delay(2);
timcnt=timcnt+1;
if(timcnt>25)
chaser();
rotate();
goto senseb;
}
}
else if(ut)
{
senseu: while((!dlsct&dls))
{
lcd_cmd(0x01);
lcd_data_string("bright sun");
}
lcd_cmd(0x01);
delay(2);
lcd_data_string("usense only");
TMOD=0x09;//timer0 in 16 bit mode with gate enable
TR0=1;//timer run enabled
TH0=0x00;
TL0=0x00;
P3|=0x04;//setting pin P3.2
send_pulse();
while(!INT0); //Waiting until echo pulse is detected
while(INT0|!TF0); //Waiting until echo pulse changes its state
timer_val=(TH0<<8)+TL0;
if(timer_val<2000) //This value can be changed to vary the range
{
lcd_cmd(0xC0);
delay(2);
lcd_data_string("target detected");
delay(2);
chaser();
goto senseu;
}
else
{
lcd_cmd(0xC0);
delay(2);
lcd_data_string("nothing");
delay(2);
rotate();
goto senseu;
}
}
else
{
lcd_cmd(0x01);
delay(2);
lcd_data_string("timer only");
while(1)
{
while((!dlsct&dls))
{
lcd_cmd(0x01);
lcd_data_string("bright sun");
}
timsec(15);
chaser();
}
}
}