10-05-2011, 04:18 PM
project source code in C
Code:
#include<89c51rd2.h>
#include <stdio.h>
unsigned char code arr1[]="\n1.Water Level Status\n2.Dam Gate Control\n3.Damsate status\n";
unsigned char code arr2[]="\n1.Lower the gate by X cms\n2.raise the gate by X cms\n3.main menu\n";
unsigned char code arr3[]={0x03,0x06,0x0c,0x09};
unsigned char code arr4[]={0x09,0x0c,0x06,0x03};
unsigned int i,j,s;
char sbuf;
void look(void);
void delay(void);
void anglecontrol(void);
void look1(void);
void look2(void);
void ccw(void);
void cw(void);
void status(void);
void gatestatus(void);
void main(void)
{ P0=0x00;
SCON=0x42;
TMOD=0x20;
TH1=0x0FD;
TR1=1;
REN=0x01;
TI=1;
look();
}
void look(void)
{
printf("%s\n",arr1);
lp1:if(RI)
{
s=SBUF;
RI=0;
goto lp2;
}
if(s==0)
{
goto lp1;
}
lp2:while(1)
{
if (s==0x31)
{
s=0;
status();
}
else if(s==0x32)
{
s=0;
anglecontrol();
}
else if(s==0x33)
{
s=0;
gatestatus();
}
else
{
s=0;
printf("wrong choice\n");
look();
}
}
}
void status(void)
{
if(P0==0x80)
{
printf("water level low\n");
look();
}
else if(P0==0x40)
{
printf("water level medium\n");
look();
}
else if(P0==0x20)
{
printf("water level high\n");
look();
}
else if(P0==0x10)
{
printf("water overflow\n");
look();
}
else
{
printf("no status detected\n");
look();
}
}
void gatestatus(void)
{
if(P0==0x7F)
{
printf("dam gate is at 1feet\n");
look();
}
else if(P0==0x3F)
{
printf("dam gate is at 2feet\n");
look();
}
else if(P0==0x1F)
{
printf("dam gate is at 3feet\n");
look();
}
else if(P0==0x00)
{
printf("gate is completely opened\n");
look();
}
else
{
printf("no status detected\n");
look();
}
}
void anglecontrol(void)
{
printf("%s\n",arr2);
lp3:if(RI)
{
s=SBUF;
RI=0;
goto lp4;
}
if(s==0)
{
goto lp3;
}
lp4:while(1)
{
if(s==0x31)
{
s=0;
cw();
anglecontrol();
}
else if(s==0x32)
{
s=0;
ccw();
anglecontrol();
}
else if(s==0x33)
{
s=0;
look();
}
else
{
s=0;
printf("wrong choice\n");
anglecontrol();
}
}
}
void cw(void)
{for(i=0;i<=3;i++)
{
P2=arr3[i];
delay();
}
}
void ccw(void)
{for(i=0;i<=3;i++)
{
P2=arr4[i];
delay();
}
}
void delay(void)
{
for (j=1;j<3900;j++)
{
;
}
}