Help me with a code for 2 switches

Status
Not open for further replies.

prasadsrkrec

Junior Member level 2
Joined
May 18, 2012
Messages
23
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,421
I am using 2 switches one is for increasing and 2nd one is for decreasing..

with that two switches only i gave two types of displays on lcd using flag.
now i want to give condition to two different displays..

Code like this


switch()
{

for 1st switch
if(flag1 == 0)
flag = 1;
if(flag2 == 0)
condition


for 2nd switch
also same
but i want to give different condition how?????????
 

Re: Reagarding Switch Case ?

Not able to comprehend. Please rephrase.
 

Re: Reagarding Switch Case ?

I am Using 3 flags and 3 switches in 8051 microcontroller program interfacing with lcd

in switch function i gave like this

Code:
sw_press()
{
if(sw1 == 0)
{
    if(flag1 == 0)
    flag1 = 1;
   
   else if(flag2 == 0)
    flag2 =1;
   
  else 
      {
      if(flag3 == 0)
      {
      low++;
      if(low > 40.0)
      low = 0.0;
      }
      else
      {
       if(flag3 == 0)
       {
        high++;
        if(high > 40.0)
        high = 0.0;
       }
    }
if(sw2 == 0)
{
    if(flag1 == 0)
    flag1 = ~flag1;
   
   else if(flag2 == 0)
    flag2 =~flag2;
   
  else 
      {
      if(flag3 == 0)
      {
      low++;
      if(low > 40.0)
      low = 0.0;
      }
      else
      {
       if(flag3 == 0)
       {
        high++;
        if(high > 40.0)
        high = 0.0;
       }
    }
here high means 16*2 lcd dispaly top position if press enter cursor change into low positon display

means on lcd high postion range is 0.0 --40.0 and low position range is 0.0 --40.0
if i press sw1 either high or low incremented by 1 ..
if i press sw2 either high or low incremented by 0.1

so now i want to change ranges of flag1 is 0.0 to 20 and flag 2 is 20 -40 . tell me any suggestion..
 
Last edited by a moderator:

Re: Reagarding Switch Case ?

Code:
[CODE]
void sw_press(void)
{
	SFRPAGE = CONFIG_PAGE; 
	
	if(incr == 0)
	{
		MSDelay(5);
		if(incr == 0)
		{
			if(Mode_flag == 0)
				Mode_flag = 1;

			else if(Cal_flag == 0)
				Cal_flag = 1;		
			
			else 
			{
				if(SW_flag == 0)
				 {
					low++;
					if(low > 20.9)
							low = 0.0;
					convert_lcd(low*10, 3);
					lcdcmd(0xC0);
					lcddata(a_lcd[2]);
					lcddata(a_lcd[1]);
					lcddata('.');
					lcddata(a_lcd[0]);
					while(incr == 0); 
				}
				else 
				{
					high ++;
					if(high > 20.9)
							high = 0.0;
					convert_lcd(high*10, 3);
					lcdcmd(0x80);
					lcddata(a_lcd[2]);
					lcddata(a_lcd[1]);
					lcddata('.');
					lcddata(a_lcd[0]);
					while(incr == 0); 
				}
			}
			convert_flash(low*10, 3);
			for(t = 0 ; t < 3 ; t++)
				l_flash[t] = flash[t];
								
			convert_flash(high*10, 3);
			for(t = 0 ; t < 3 ; t++)
				h_flash[t] = flash[t];
							
			MEM_erase();
			MEM_write();
		}
	}
   
	if(decr == 0)
	{
		MSDelay(5);
		if(decr == 0)
		{
			if(Mode_flag == 0)
				Mode_flag = ~Mode_flag;

		 	else if(Cal_flag == 0)
				Cal_flag = ~Cal_flag;	  
			
			else 
			{
				if(SW_flag == 0)
				 {
					low+= 0.1;
					if(low > 20.9)
						low = 0.0;
					convert_lcd(low*10, 3);
					lcdcmd(0xC0);
					lcddata(a_lcd[2]);
					lcddata(a_lcd[1]);
					lcddata('.');
					lcddata(a_lcd[0]);
					while(decr == 0);
				}
				else
				{
					high+= 0.1;
					if(high > 20.9)
						high = 0.0;
					convert_lcd(high*10, 3);
					lcdcmd(0x80);
					lcddata(a_lcd[2]);
					lcddata(a_lcd[1]);
					lcddata('.');
					lcddata(a_lcd[0]);
					while(decr == 0);
				}
			}
			convert_flash(low*10, 3);
			for(t= 0 ; t < 3 ; t++)
				l_flash[t] = flash[t];

			convert_flash(high*10, 3);
			for(t= 0 ; t < 3 ; t++)
				h_flash[t] = flash[t];
				
			MEM_erase();
			MEM_write();
		}
	}
	
	if(entr == 0)
	{
		MSDelay(5);
		if(entr == 0)
		{	
			SW_flag = ~SW_flag;
			buzzer = 1;
			MSDelay(100);
			buzzer = 0;
			while(entr == 0);
		}
	}
}

if mode flag becomes 1 display one statement
not one display other mode
so finally i want conditions in software flags also different

means ...for mode flag 1 display i want range for low and high is 0 -20
and ,ode flag not one means i want range 20 -40 for low and high..

give me some logic behind ........
 
Last edited by a moderator:

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…