⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.c

📁 基于AVR的一种程序,智能控制器,可用于低压无功补偿部分,
💻 C
📖 第 1 页 / 共 2 页
字号:
          else set_id[2]=9;
  		}
  		else p_key=2;    	
  break;
  case 2:
  	if(enter_flag==1)
  		{
  			if(set_id[1]>0)set_id[1]--;
          else set_id[1]=9;
  		}
  		else p_key=3;    	
  break;
  case 3:
  	if(enter_flag==1)
  		{
  			if(set_id[0]>0)set_id[0]--;
          else set_id[0]=9;
  		}
  		else p_key=4;  
  break;
  case 4:
  	if(enter_flag==1)
  		{
  			if(set_id[3]>0)set_mm[3]--;
  				else set_id[3]=9;
  		}
  	  else p_key=5;
  break;
  case 5:
  	if(enter_flag==1)
  		{
  			if(set_id[2]>0)set_mm[2]--;
  				else set_id[2]=9;
  		}
  	  else p_key=6;
  	break;
  case 6:
  	if(enter_flag==1)
  		{
  			if(set_id[1]>0)set_mm[1]--;
  				else set_id[1]=9;
  		}
  	  else p_key=7;
  break;
  case 7:
  	if(enter_flag==1)
  		{
  			if(set_id[0]>0)set_mm[0]--;
  				else set_id[0]=9;
  		}
  	  else p_key=8;
  break;    
  case 8:
  	if(enter_flag==1)
  		{
  			if(SET_CT>SET_CT_MIN)SET_CT--;
  				else SET_CT=SET_CT_MAX-1;
  		}
  	  else{ p_key=9;}
  break;   
  case 9:             /*p_year*/
  	if(enter_flag==1)
  		{
  			if(timer[0]>0){timer[0]--;time_flag=1;}
  				else timer[0]=99;
  		}
  	 else p_key=10;
  	break;
  case 10:          /*p_month*/
  	if(enter_flag==1)
  		{
  			if(timer[1]>0){timer[1]--;time_flag=1;}
  				else timer[1]=12;
  		}
  	 else p_key=11;  	
  	break;
  case 11:          /*p_day*/
  	 	if(enter_flag==1)
  		{
  			if(timer[2]>0){timer[2]--;time_flag=1;}
  				else timer[2]=31;
  		}
  	 else p_key=12;  	
  	break;
  case 12:        /*p_hour*/	
  	 	if(enter_flag==1)
  		{
  			if(timer[3]>0){timer[3]--;time_flag=1;}
  				else timer[3]=23;
  		}
  	 else p_key=13;  	
  	break;
  case 13:       /*p_minute*/
  	if(enter_flag==1)
  		{
  			if(timer[4]>0){timer[4]--;time_flag=1;}
  				else timer[4]=59;
  		}
  	 else {p_key=0; p_screen=21;screen_flag=1;	}
  	break;
  default:
  break;
 } 
}

void Set2Down(void)
{
 SET_THD/=5;
 SET_THD*=5;	
 SET_LX/=5;
 SET_LX*=5;
 switch(p_key)
 {
  case 0:
  	if(enter_flag==1)
  		{
  			if(SET_U1>SET_U1_MIN)SET_U1--;
          else SET_U1=SET_U1_MAX;
  		}
  		else p_key=1;  	
  break;
  case 1:
  	if(enter_flag==1)
  		{
  			if(SET_U2>SET_U2_MIN)SET_U2--;
          else SET_U2=SET_U2_MAX;
  		}
  		else p_key=2;  	
  break;
  case 2:
  	if(enter_flag==1)
  		{
  			if(SET_THD>SET_THD_MIN)SET_THD-=5;
  	       else SET_THD=SET_THD_MAX;
  		}
  		else p_key=3;  	
  break;
  case 3:
  	if(enter_flag==1)
  		{
  			if(SET_LX>SET_LX_MIN)SET_LX-=5;
  	       else SET_LX=SET_LX_MAX;
  		}
  		else {p_key=0;p_screen=22;screen_flag=1;}  	
  break;  
  default:
  break;
 } 
}

void Set3Down(void)
{
 SET_K1/=5;
 SET_K1*=5;
 SET_K2/=5;
 SET_K2*=5;	
 switch(p_key)
 {
  case 0:
  	if(enter_flag==1)
  		{
  			if(SET_U3>SET_U3_MIN)SET_U3--;
          else SET_U3=SET_U3_MAX;
  		}
  		else p_key=1;  	
  break;
  case 1:
  	if(enter_flag==1)
  		{
  			if(SET_U4>SET_U4_MIN)SET_U4--;
          else SET_U4=SET_U4_MAX;
  		}
  		else p_key=2;  	
  break;
  case 2:
  	if(enter_flag==1)
  		{
  			if(SET_K1>SET_K1_MIN)SET_K1-=5;
  	       else SET_K1=SET_K1_MAX;
  		}
  		else p_key=3;  	
  break;
  case 3:
  	if(enter_flag==1)
  		{
  			if(SET_K2>SET_K2_MIN)SET_K2-=5;
  	       else SET_K2=SET_K2_MAX;
  		}
  		else {p_key=0;p_screen=23;screen_flag=1;}  	
  break;  
  default:
  break;
 } 
}

void Set4Down(void)
{
 switch(p_key)
 {
  case 0:
  	if(enter_flag==1)
  		{
  			if(SET_COS>SET_COS_MIN)SET_COS--;
          else SET_COS=SET_COS_MAX;
  		}
  		else p_key=1;  	
  break;
  case 1:
  	if(enter_flag==1)
  		{
  			if(SET_T>SET_T_MIN)SET_T--;
          else SET_T=SET_T_MAX;
  		}
  		else p_key=2;  	
  break;
  case 2:
  	if(enter_flag==1)
  		{
  			if(SET_JN>SET_JN_MIN)SET_JN--;
  	       else SET_JN=SET_JN_MAX;
  		}
  		else p_key=3;  	
  break;
  case 3:
  	if(enter_flag==1)
  		{
  			if(SET_XN>SET_XN_MIN)SET_XN--;
  	       else SET_XN=SET_XN_MAX;
  		}
  		else {p_key=0;p_screen=24;screen_flag=1;}  	
  break;  
  default:
  break;
 } 
}

void Set5Down(void)
{
 SET_JC/=5;
 SET_JC*=5;
 SET_XC/=5;
 SET_XC*=5;	
 switch(p_key)
 {
  case 0:
  	if(enter_flag==1)
  		{
  			if(SET_JBM>SET_JBM_MIN)SET_JBM--;
          else SET_JBM=SET_JBM_MAX;
  		}
  		else p_key=1;  	
  break;
  case 1:
  	if(enter_flag==1)
  		{
  			if(SET_XBM>SET_XBM_MIN)SET_XBM--;
          else SET_XBM=SET_XBM_MAX;
  		}
  		else p_key=2;  	
  break;
  case 2:
  	if(enter_flag==1)
  		{
  			if(SET_JC>SET_JC_MIN)SET_JC-=5;
  	       else SET_JC=SET_JC_MAX;
  		}
  		else p_key=3;
  break;
  case 3:
  	if(enter_flag==1)
  		{
  			if(SET_XC>SET_XC_MIN)SET_XC-=5;
  	       else SET_XC=SET_XC_MAX;
  		}
  		else {p_key=0;p_screen=20;screen_flag=1;}  	
  break;  
  default:
  break;
 } 
}

void SetDown(void)
{
	switch(p_screen)
   {
    case 20:Set1Down();
    break;
    case 21:Set2Down();
    break;
    case 22:Set3Down();
    break;
    case 23:Set4Down();
    break;
    case 24:Set5Down();
    break;
    default:p_screen=20;p_key=0;screen_flag=1;
    break;
   }
}

void Hand_Up(void)
{
	p_key--;
	if(p_key>12)p_key=11;	
}
void Hand_Down(void)
{
	p_key++;
	if(p_key>=12)p_key=0;	
}

void Hand_Enter(void)
{
	uint st_out;	
	switch(p_key)
	{
		case 0:
			st_out=0x0001;
			if((st_out&up1_data.c_status)>0){*PEDATDIR=*PEDATDIR&0X0FFFE;up1_data.c_status&=0x0fffe;}
				else {*PEDATDIR=*PEDATDIR|0X01;up1_data.c_status|=0x01;}
			break;
		case 1:
			st_out=0x0002;
			if((st_out&up1_data.c_status)>0){*PEDATDIR=*PEDATDIR&0X0FFFD;up1_data.c_status&=0x0fffD;}
				else {*PEDATDIR=*PEDATDIR|0X02;up1_data.c_status|=0x02;}
			break;
		case 2:
			st_out=0x0004;
			if((st_out&up1_data.c_status)>0){*PEDATDIR=*PEDATDIR&0X0FFFB;up1_data.c_status&=0x0fffB;}
				else {*PEDATDIR=*PEDATDIR|0X04;up1_data.c_status|=0x04;}
			break;	
		case 3:
			st_out=0x0008;
			if((st_out&up1_data.c_status)>0){*PEDATDIR=*PEDATDIR&0X0FFF7;up1_data.c_status&=0x0fff7;}
				else {*PEDATDIR=*PEDATDIR|0X08;up1_data.c_status|=0x08;}
			break;
		case 4:
			st_out=0x0010;
			if((st_out&up1_data.c_status)>0){*PEDATDIR=*PEDATDIR&0X0FFEF;up1_data.c_status&=0x0ffef;}
				else {*PEDATDIR=*PEDATDIR|0X10;up1_data.c_status|=0x10;}
			break;
		case 5:
			st_out=0x0020;
			if((st_out&up1_data.c_status)>0){*PEDATDIR=*PEDATDIR&0X0FFDF;up1_data.c_status&=0x0ffdf;}
				else {*PEDATDIR=*PEDATDIR|0X20;up1_data.c_status|=0x20;}
			break;	
		case 6:
			st_out=0x0040;
			if((st_out&up1_data.c_status)>0){*PEDATDIR=*PEDATDIR&0X0FFBF;up1_data.c_status&=0x0ffbf;}
				else {*PEDATDIR=*PEDATDIR|0X40;up1_data.c_status|=0x40;}
			break;	
		case 7:
			st_out=0x0080;
			if((st_out&up1_data.c_status)>0){*PEDATDIR=*PEDATDIR&0X0FF7F;up1_data.c_status&=0x0ff7f;}
				else {*PEDATDIR=*PEDATDIR|0X80;up1_data.c_status|=0x80;}
			break;		
		case 8:
			st_out=0x100;
			if((st_out&up1_data.c_status)>0){*PFDATDIR=*PFDATDIR&0X0FFFE;up1_data.c_status&=0x0feff;}
				else {*PFDATDIR=*PFDATDIR|0X01;up1_data.c_status|=0x100;}	
			break;
		case 9:
			st_out=0x200;
			if((st_out&up1_data.c_status)>0){*PFDATDIR=*PFDATDIR&0X0FFFD;up1_data.c_status&=0x0fdff;}
				else {*PFDATDIR=*PFDATDIR|0X02;up1_data.c_status|=0x200;}	
			break;
		case 10:
			st_out=0x400;
			if((st_out&up1_data.c_status)>0){*PFDATDIR=*PFDATDIR&0X0FFFB;up1_data.c_status&=0x0fbff;}
				else {*PFDATDIR=*PFDATDIR|0X04;up1_data.c_status|=0x400;}	
			break;
		case 11:
			st_out=0x800;
			if((st_out&up1_data.c_status)>0){*PFDATDIR=*PFDATDIR&0X0FFF7;up1_data.c_status&=0x0f7ff;}
				else {*PFDATDIR=*PFDATDIR|0X08;up1_data.c_status|=0x800;}	
			break;	
		default:break;
	}
}

void k_esc(void)
{
 switch(p_mode)
 {
  case PPASS:p_key=1;
  break;
  case PAUTO:p_key=0;
  break;
  case PSET:p_key=1;
  	        Save_Set();
  	        C_Cap();
  	        if(time_flag==1)Write_Time();
  	        	time_flag=0;
  break;
  case PHAND:p_key=2;
  break;
  default:p_key=0;
  break;
 }	
 p_mode=PMENU;	
 p_screen=SCR_MENU;
 screen_flag=1;
}

void k_up(void)
{
 switch(p_mode)
 {
  case PMENU:
      p_key%=3; 	
      if(p_key==0)p_key=2;
       else p_key--;
  break;
  
  case PAUTO:     
  		 screen_flag=1;
       if(p_screen>SCR_AUTO_FIRST)p_screen--;
        else p_screen=SCR_AUTO_FIRST+SCR_AUTO_COUNT-1;       
  break;
  
  case PSET:
  	 /* if(p_screen>SCR_SET_FIRST)p_screen--;
  	   	else p_screen=SCR_SET_FIRST+SCR_SET_COUNT;*/
  	   	SetUp();
  break;     
  case PHAND:
  			Hand_Up();
  break;
  case PPASS:     
  	    PassUp();
  break;     
  default:break;
 }
}

void k_down(void)
{
 switch(p_mode)
 {
  case PMENU:
      p_key%=3; 	
      if(p_key==2)p_key=0;
       else p_key++;
  break;
  case PAUTO:     
  		 screen_flag=1;
       if(p_screen<(SCR_AUTO_FIRST+SCR_AUTO_COUNT-1))p_screen++;
        else p_screen=SCR_AUTO_FIRST;       
  break;
  
  case PSET:    
  	/*
  	   if(p_screen<(SCR_SET_FIRST+SCR_SET_COUNT))p_screen++;
  	   	else p_screen=SCR_SET_FIRST;  
  	   	*/
  	   	SetDown();
  break;     
  
  case PHAND:     
  			Hand_Down(); 
  break;     
  
  case PPASS:    
  			PassDown(); 
  break;     
  
  default:break;
 }
}

void k_enter(void)
{
 switch(p_mode)
 {
  case PMENU:
   MenuEnter();
  break;
  case PAUTO:  
  break;
  case PSET:   
  	SetEnter();
  break;     
  case PHAND:   
  	Hand_Enter();
  break; 
  case PPASS:   
  	PassEnter();
  	/*p_mode=PSET; p_screen=SCR_SET_FIRST;*/
  break;         
  default:break;
 }
}

void Key(void)
{	
 uint key_int;
 key_int=Key_Scan(); 
 
 switch(key_int)
 {
  case KEY_ESC:
     k_esc();  
     Disp();
  break;
  case KEY_UP:
     k_up();
     Disp();
  break;
  case KEY_DOWN:
     k_down();
     Disp();
  break;
  case KEY_ENTER:
     k_enter();
     Disp();
  break;
  default:break;
 } 
 
 if(led_flag==0)*PBDATDIR=*PBDATDIR|0X10;     /*关背景灯*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -