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

📄 key.c

📁 基于AVR的一种程序,智能控制器,可用于低压无功补偿部分,
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "public.h"
#include "p_main.H"


/* LF2407.H 的外部变量 */
/*IO端口B数据和方向控制寄存器*/
extern  unsigned int  *PBDATDIR;
extern  unsigned int  *PEDATDIR;
extern  unsigned int  *PFDATDIR;

uint Key_Scan(void)
{
	uint k,j,k_ret;
	k=*PBDATDIR&0x0f;
	if(k==0x0f)k=0;
		else k=1;
	if(k==1)
		{
			for(j=60000;j>0;j--)j=j;
			k_ret=*PBDATDIR&0x0f;			
			do
			 {
			 	k=*PBDATDIR&0x0f;
			 	for(j=0;j<1000;j++)
    		{
    		 asm(" nop ");
   			}
		   }while(k!=0x0f);
		   
		   *PBDATDIR=*PBDATDIR&0X0ffef;      /*开背景灯 IOPB4 */
		   led_flag=1;
		}
		
	return(k_ret);
} 

void MenuEnter(void)
{
 uint i;
 switch(p_key)
 {
  case 0: p_mode=PAUTO; p_screen=SCR_AUTO_FIRST;screen_flag=1; 
  break;
  case 1: p_mode=PPASS; p_screen=SCR_PASS;  enter_flag=0;screen_flag=1;
  	      for(i=0;i<4;i++)input_mm[i]=0;
  break;
  case 2: p_mode=PHAND; p_screen=SCR_HAND_FIRST;screen_flag=1;
  break;
  default:
  break;
 }
 p_key=0;
}

void PassEnter(void)
{
	uint i;
	switch(p_key)
	{
		case 0: 
						if(enter_flag==0)enter_flag=1;
							else {	p_key=1;  enter_flag=1;}
			      break;
		case 1: p_key=2;
						enter_flag=1;
						break;
		case 2:	p_key=3;
						enter_flag=1;
						break;
		case 3: p_key=0;
						enter_flag=0;
						if(input_mm[0]==set_mm[0]&&input_mm[1]==set_mm[1]&&input_mm[2]==set_mm[2]&&input_mm[3]==set_mm[3])
							{
								p_screen=SCR_SET_FIRST;
								p_mode=PSET;
								screen_flag=1;
							}
							else if(input_mm[0]==9&&input_mm[1]==0&&input_mm[2]==8&&input_mm[3]==0)
								{
									p_screen=SCR_SET_FIRST;
									p_mode=PSET;
									screen_flag=1;
								}
								else
									{										
										p_mode=PPASS; 
										p_screen=SCR_PASS;  
										enter_flag=0;
										screen_flag=1;
										for(i=0;i<4;i++)input_mm[i]=0;
									}					
						
						break;			
		default:break;
	}
}

void PassUp(void)
{
	switch(p_key)
	{
		case 0:
			if(input_mm[3]<9)input_mm[3]++;
				else input_mm[3]=0;
		break;
		case 1:
			if(input_mm[2]<9)input_mm[2]++;
				else input_mm[2]=0;
			break;
		case 2:
			if(input_mm[1]<9)input_mm[1]++;
				else input_mm[1]=0;
			break;
		case 3:
			 if(input_mm[0]<9)input_mm[0]++;
			 	else input_mm[0]=0;
			 break;
		default:break;		
	}
}

void PassDown(void)
{
	switch(p_key)
	{
		case 0:
			if(input_mm[3]>0)input_mm[3]--;
				else input_mm[3]=9;
			break;
		case 1:
			if(input_mm[2]>0)input_mm[2]--;
				else input_mm[2]=9;
			break;
		case 2:
			if(input_mm[1]>0)input_mm[1]--;
				else input_mm[1]=9;
			break;
		case 3:
			if(input_mm[0]>0)input_mm[0]--;
				else input_mm[0]=9;
			break;
		default:break;
	}
}
void Set1Enter(void)
{
	if(enter_flag==0)enter_flag=1;
		else enter_flag=0;	
}

void Set2Enter(void)
{
	if(enter_flag==0)enter_flag=1;
		else enter_flag=0;
}

void Set3Enter(void)
{
 if(enter_flag==0)enter_flag=1;
		else enter_flag=0;
}

void Set4Enter(void)
{
 if(enter_flag==0)enter_flag=1;
		else enter_flag=0;
}

void Set5Enter(void)
{
 if(enter_flag==0)enter_flag=1;
		else enter_flag=0;
}


void SetEnter(void)
{
 switch(p_screen)
 {
  case 20:Set1Enter(); 
  break;
  case 21:Set2Enter(); 
  break;
  case 22:Set3Enter();
  break;
  case 23:Set4Enter();
  break;
  case 24:Set5Enter();
  break;
  default:p_screen=20;p_key=0;screen_flag=1;
  break;
 }
}

void Set1Up(void)
{
 switch(p_key)
 {
  case 0:
  	if(enter_flag==1)
  		{
  			if(set_id[3]<9)set_id[3]++;
          else set_id[3]=0;
  		}
  		else {p_screen=24;p_key=3;screen_flag=1;}
  break;
  
  case 1:
  	if(enter_flag==1)
  		{
  			if(set_id[2]<9)set_id[2]++;
  				else set_id[2]=0;
  		}
  		else p_key=0;  	
  break;
  case 2:
  	if(enter_flag==1)
  		{
  			if(set_id[1]<9)set_id[1]++;
  				else set_id[1]=0;
  		}
  		else p_key=1;  	
  break;
  case 3:
  	if(enter_flag==1)
  		{
  			if(set_id[0]<9)set_id[0]++;
  				else set_id[0]=0;
  		}
  		else p_key=2;  	
  break;  
  case 4:
  	if(enter_flag==1)
  		{if(set_mm[3]<9)set_mm[3]++;
          else set_mm[3]=0;
      }
      else p_key=3;
  break;
  case 5:
  	if(enter_flag==1)
  		{if(set_mm[2]<9)set_mm[2]++;
          else set_mm[2]=0;
      }
      else p_key=4;
  break;
  case 6:
  	if(enter_flag==1)
  		{if(set_mm[1]<9)set_mm[1]++;
          else set_mm[1]=0;
      }
      else p_key=5;
  break;
  case 7:
  	if(enter_flag==1)
  		{if(set_mm[0]<9)set_mm[0]++;
          else set_mm[0]=0;
      }
      else p_key=6;
  break;
  case 8:
  	if(enter_flag==1)
  		{
  			if(SET_CT<18)SET_CT++;
  				else SET_CT=0;
  		}
  		else p_key=7;
  	break;    
  case 9:             /*p_year*/
  	if(enter_flag==1)
  		{
  			if(timer[0]<99){timer[0]++;time_flag=1;}
  				else timer[0]=0;
  		}
  	 else p_key=8;
  	break;
  case 10:          /*p_month*/
  	if(enter_flag==1)
  		{
  			if(timer[1]<12){timer[1]++;time_flag=1;}
  				else timer[1]=0;
  		}
  	 else p_key=9;  	
  	break;
  case 11:          /*p_day*/
  	 	if(enter_flag==1)
  		{
  			if(timer[2]<31){timer[2]++;time_flag=1;}
  				else timer[2]=0;
  		}
  	 else p_key=10;  	
  	break;
  case 12:        /*p_hour*/	
  	 	if(enter_flag==1)
  		{
  			if(timer[3]<23){timer[3]++;time_flag=1;}
  				else timer[3]=0;
  		}
  	 else p_key=11;  	
  	break;
  case 13:       /*p_minute*/
  	if(enter_flag==1)
  		{
  			if(timer[4]<59){timer[4]++;time_flag=1;}
  				else timer[4]=0;
  		}
  	 else {p_key=12; 	}
  	break;	    
  default:
  break;
 } 
}

void Set2Up(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_MAX)SET_U1++;
          else SET_U1=SET_U1_MIN;
  		}
  		else {p_key=13;p_screen=20;screen_flag=1;}  	
  break;
  case 1:
  	if(enter_flag==1)
  		{
  			if(SET_U2<SET_U2_MAX)SET_U2++;
          else SET_U2=SET_U2_MIN;
  		}
  		else p_key=0;  	
  break;
  case 2:
  	if(enter_flag==1)
  		{
  			if(SET_THD<SET_THD_MAX)SET_THD+=5;
  	       else SET_THD=SET_THD_MIN;
  		}
  		else p_key=1;  	
  break;
  case 3:
  	if(enter_flag==1)
  		{
  			if(SET_LX<SET_LX_MAX)SET_LX+=5;
  	       else SET_LX=SET_LX_MIN;
  		}
  		else p_key=2;  	
  break;  
  default:
  break;
 } 
}

void Set3Up(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_MAX)SET_U3++;
          else SET_U3=SET_U3_MIN;
  		}
  		else {p_key=3;p_screen=21;screen_flag=1;}  	
  break;
  case 1:
  	if(enter_flag==1)
  		{
  			if(SET_U4<SET_U4_MAX)SET_U4++;
          else SET_U4=SET_U4_MIN;
  		}
  		else p_key=0;  	
  break;
  case 2:
  	if(enter_flag==1)
  		{
  			if(SET_K1<SET_K1_MAX)SET_K1+=5;
  	       else SET_K1=SET_K1_MIN;
  		}
  		else p_key=1;  	
  break;
  case 3:
  	if(enter_flag==1)
  		{
  			if(SET_K2<SET_K2_MAX)SET_K2+=5;
  	       else SET_K2=SET_K2_MIN;
  		}
  		else p_key=2;  	
  break;  
  default:
  break;
 } 
}

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

void Set5Up(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_MAX)SET_JBM++;
          else SET_JBM=SET_JBM_MIN;
  		}
  		else {p_key=3;p_screen=23;screen_flag=1;}  	
  break;
  case 1:
  	if(enter_flag==1)
  		{
  			if(SET_XBM<SET_XBM_MAX)SET_XBM++;
          else SET_XBM=SET_XBM_MIN;
  		}
  		else p_key=0;  	
  break;
  case 2:
  	if(enter_flag==1)
  		{
  			if(SET_JC<SET_JC_MAX)SET_JC+=5;
  	       else SET_JC=SET_JC_MIN;
  		}
  		else p_key=1;  	
  break;
  case 3:
  	if(enter_flag==1)
  		{
  			if(SET_XC<SET_XC_MAX)SET_XC+=5;
  	       else SET_XC=SET_XC_MIN;
  		}
  		else p_key=2;  	
  break;  
  default:
  break;
 } 
}

void SetUp(void)
{
 switch(p_screen)
 {
  case 20:Set1Up();
  break;
  case 21:Set2Up();
  break;
  case 22:Set3Up();
  break;
  case 23:Set4Up();
  break;
  case 24:Set5Up();
  break;
  default:p_screen=20;p_key=0;screen_flag=1;
  break;
 }
}

void Set1Down(void)
{
 switch(p_key)
 {
  case 0:
  	if(enter_flag==1)
  		{
  			if(set_id[3]>0)set_id[3]--;
          else set_id[3]=9;
  		}
  		else p_key=1;  	
  break;
  case 1:
  	if(enter_flag==1)
  		{
  			if(set_id[2]>0)set_id[2]--;

⌨️ 快捷键说明

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