Microcontroller › 8051 › to know about DTMF Controlled Home Automation System Using 8951 or 8051 › I am attaching a code here.
December 11, 2013 at 5:20 pm
#10721
Participant
I am attaching a code here. You can use this hints for your project work.
This is not the complete working code.
You have to analyze it and rewrite your own code.
#include<reg51.h>
bit keylflag = 0x10;
bit key2flag = 0x11;
bit key3flag = 0x12;
bit key4flag = 0x13;
bit stop_flag = 0x14;
bit stop_flag1 = 0x15;
bit stop_flag3 = 0x16;
sbit IN1=P0^6;
sbit IN2=P0^5;
sbit EN1=P0^7;
sbit std=P0^4;
sbit D1=P3^0;
sbit D2=P2^1;
sbit D3=P2^2;
sbit D4=P2^3;
sbit red=P1^0;
sbit green1=P1^1;
sbit green2=P1^4;
sbit green3=P1^5;
sbit green4=P1^6;
void int0_init();
void intl_init();
void start_motor();
void start_motorl();
void main()
{
red = 0; //red led off
green1 = 0; //greenl led off
green2 = 0; //green2 led off
green3 = 0; //green3 led off
green4 = 0; //green4 led off
keylflag = 0; //clear keylflag
key2flag = 0; //clear key2flag
key3flag = 0; //clear key3flag
key4flag = 0; //clear key4flag
stop_flag = 0; //clear stopflag
stop_flagl = 0; //clear stopflagl
stop_flag3 =0; //clear stopflag3
EN1=0; // motor stop
IN1=0;
IN2=0;
while(1)
{
if(D1==1 && D2==0 && D3==1 && D4==0) // FOR KEY 1
{
red =0 //red led off
green1 =1; //green1 led on
green2 =0; //green2 led off
green3 =0; //green3 led off
green4 =0; //green4 led off
key1flag =1; //make key1flag high
}
else if(D1==1 && D2==0 && D3==0 && D4==1) //for key2
{
red =0; //red led off
green1 =0; //green1 led off
green2 =1; //green2 led on
green3 =0; //green3 led off
green4 =0; //green4 led off
key2flag = 1 //make key2flag high
}
else if(D1==1 && D2==0 && D3==0 && D4==0) // for key 3
{
red =0; //red led off
greenl =0; //green1 led off
green2 =0; //green2 led off
green3 =1; //green3 led on
green4 =0; //green4 led off
key3flag =1; //make key3flag high
}
else if(D1=1 && D2=0 && D3==1&& D4==0) // for key 4
{
red =0; //red led off
greenl =0; //green1 led off
green2 =0; //green2 led off
green3 =0; //green3 led off
green4 =1; //green4 led on
key4flag =0; //make key4flag high
if((keylflag ==1) && (key2flag ==1) && (key3flag ==1) && (key4flag ==1))
{
startmotor(); //open the door
key1flag = 0; //clear key1flag
key2flag = 0; //clear key2flag
key3flag = 0; //clear key3flag
key4flag = 0; //clear key4flag
while(stopflag3 == 0)
{
if(D1==0&&D2=1&&D3=1&&D4==0) // for key 9
{
start—motorl(); //close the door
stopflag3 =1; //set stop3 flag
}
}
stopflag3 = 0; //clear stop3flag
}
}
else
{
red 1; //red led on
green1 = 0; //green1 led off
green2 = 0; //green2 led off
green3 = 0; //green3 led off
green4 = 0; //green4 led off
}
}
}
void startmotor()
{
EN1 =1; //rotate the motor in clockwise direction
IN1 =1;
IN2 =0;
intO_init(); //initialise the interrupt
while(stopflag == 0); //wait here till stopflag goes to high
stopflag =0; //clear stopflag
}
void intO_init()
{
EX0=1; //ENABLE INTO INTERRUPT
IT0 =1; // MAKE INTO Is FALLING EDGE TRIGGERED
}
void intO_isr(void) interrupt 0 // EXTERNAL INTERRUPTO ISR
{
EN1 =0;//stop motor
IN1 =0;
IN2 =0;
stop_flag =1; //set stop_flag
}
void start_motor1()
{
EN1 =0; //rotate motor in anticlockwise direction
IN1 =0;
IN2 =1;
int1_init(); //initialise interupt1
while(stop_flag1=1); //wait here till the stop_flag1 goes to zero
stop_flag1= 0;//clear stop_flag1
}
void int1_init()
{
EX1=1; // ENABLE iNT1 iNTERRUPT
IT1=1; // MAKE INT1 IS FALLING EDGE TRIGGERED
}
void intl_isr(void) interrupt 1 // EXTERNAL INTERRUPT1 ISR
{
EN1 =0; //stop motor
IN1 =0;
IN2 =0;
stopflag1=1; //set stopflagl
}