This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Enabling or Disabling a pin in c language for 8051

I am currently making a very simple vending machine project which uses the 8051 microcontoller.
the pins im using is

sbit C=P3^3; ////// "C" is for coffee///////
sbit T=P3^4; ////// "T" is for tea///////
sbit H=P3^5; ////// "H" is for hot///////
sbit D=P3^6; ////// "D" is for cold///////
sbit S=P3^7; ////// "S" is for purchasing/////

i have done the coding for lcd initialization and selection.. the problem now is that i need the program to run in sequence for example

sequence one:
customer should be able to choose only "C" or "T"..
(during this sequence all the other pins should be disabled)

sequence two:
customer should be able to choose only "H" or "D"..

sequence three:
once the above sequence is completed only then customer can press the push button..

The question is how can i disable the other pins at respective sequences.. my code for the selection part is below..

void main ()
{
TMOD=0x02;
TH0=0xA4;
IE=0x00;
L1= L2= 0;
a = 0;
lcd_ini();
delay(20);
lcd_command(0x01);
lcd_string("Select Drink");
delay(200);
lcd_command(0x01);
lcd_string("1.Coffee  2.Tea");
delay(20);
flagset=0;
TR1 = 0;


while (1)
{
if (C==0)
{
delay(30);
lcd_command(0x01);
lcd_string("Coffee: Hot/Cold");
}


if (T==0)
{
delay(30);
lcd_command(0x01);
lcd_string("Tea: Hot/Cold");
}

if (H==0)
{
delay(30);
lcd_command(0x01);
lcd_string("Hot Selected");
}


if (D==0)
{
delay(30);
lcd_command(0x01);
lcd_string("Cold Selected");
}

if (M1==0)
{
delay(30);
b++;
switch(b)
{case 1:
                lcd_command(0x01);
                lcd_string("RM 1.00 Inserted");
                delay(20);
                break;
                case 2:
                        lcd_command(0x01);
                lcd_string("RM 2.00 Inserted");
                delay(20);
                break;


case 3:
lcd_command(0x01);
lcd_string("Insert Money");
        if (b==3)
        {b=0;}}
}



if (S==0)
 {
lcd_command(0x01);
lcd_command(0x80);
lcd_string("Processing");
delay(100);
lcd_command(0x01);
lcd_command(0x80);
lcd_string("Please wait");
L1 = 1;
delay(100);
L1 = 0;      ///////L1 and L2 is for lights///////
L2 = 1;
lcd_command(0x01);
lcd_command(0x80);
lcd_string("Remove drink");
delay(100);
L2 = 0;
lcd_command(0x01);
lcd_command(0x85);
lcd_string("Thankyou");
delay (500);


 }
 }
 }

thank you in advance

0