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

📄 keyprc.c

📁 电磁流量计的源程序。将流体流量用电磁转换方式变换成弱电信号
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "reg52.h"
#include "typedef.h"
#include "function.h"
#include "define.h"
#include "varible.h"

//extern EE_BUFFER eedata ;
void Key_dummy(void);
void Key_prc(void);
void Key_left(void);
void Key_mid(void);
void Key_right(void);
void Set_system_code(void);   //left and mid  press  together
void Sys_biaodin(void);       //right and mid press  together
void Savedata_prc(void);
void Set_sys_mima(void);
void Set_sys_data(void);
unsigned char Dp_set_precess(void);
unsigned char Sure_biaodin_dp(void);
bit Judge_setdanlan_range(void);



/****************************/
/****************************/
void (*const code key_tbl[])( void ) = 
{
Key_dummy,
Key_left,
Key_mid,
Key_right,
Set_system_code,
Sys_biaodin
};

 
	

/*************************************/
/************************************/
  void Key_prc( void )
{    
     
     if(key_flag_F == 1)
	{
	    key_flag_F = 0;
		exit_time = TM30S ;
	    key_tbl[keyvld]() ;
	}
    if(exit_time != 0)
	    exit_time--;
	else
	 {
	   biaodin_F = 0;
	   set_dp_F = 0;
	   press_r_key = 0;
	   set_pra_seg = 0;
	   disp_mode = PARA_DISP ;
	   disp_no_u = 0;
	 }
	 return;
}
/************************************/
/************************************/
void Key_dummy(void)
{
	;
	return;
}

/*************************************/
/*************************************/

void Key_left(void)
{  
  press_r_key = 0;
  if(disp_mode == PARA_DISP)
	{
		disp_mode = PARA_SET ; 
		allow_set_F = 0 ;
        set_pra_seg = 0x08 ; 
        set_dp_F =0;
		user_setdata.oneseg = 0;      
        user_setdata.twoseg = 0;
        user_setdata.thrseg = 0;
        user_setdata.fouseg = 0;
                
     }
  else if(allow_set_F == 1)              //yin xu shezhi chansu
         {
               disp_no_u++;
               if(disp_no_u >= 12)                //parameter set loop  2004-5-10 change
		          disp_no_u = 1;
               switch(disp_no_u)
			   {
			      case 0x01:                                  //leiji liuliang qinglin
			                set_pra_seg = 0x08 ;              // fouth seg led blink
			                set_dp_F = 0 ;
							user_setdata.oneseg = 0;
                            user_setdata.twoseg = 0;
                            user_setdata.thrseg = 0;
                            user_setdata.fouseg = 0;
                            break ;
                  case 0x02:                                  //liangchen fanwei shedin
                            set_pra_seg = 0x08 ;
                            set_dp_F = 0 ;
                            user_setdata.oneseg = Read1B(0x18,0);
                            user_setdata.twoseg = Read1B(0x19,0);
                            user_setdata.thrseg = Read1B(0x1a,0);
                            user_setdata.fouseg = Read1B(0x1b,0);
                            break ;
				  case 0x03:                                 //pulse set
		                    set_pra_seg = 8 ;
		                    set_dp_F = 0;
		                    user_setdata.oneseg = Read1B(0x26,0);
                            user_setdata.twoseg = Read1B(0x27,0);
                            user_setdata.thrseg = Read1B(0x28,0);
                            user_setdata.fouseg = Read1B(0x29,0);
							break;                                            

                  case 0x04:                                  // lubo zhisu shedin
                            set_pra_seg = 0x01 ;             //zhui hou yi wei shangsuo
                            set_dp_F = 0 ;
                            user_setdata.oneseg = Read1B(0x1c,0);
                            user_setdata.twoseg = 0;
                            user_setdata.thrseg = 0;
                            user_setdata.fouseg = 0;
                            break;
                  case 0x05:                                 //xiao liuliang xinhao qiecu sedin
                            set_pra_seg = 0x01 ;             //zhui hou yi wei shangsuo
                             set_dp_F = 0 ;
                            user_setdata.oneseg = Read1B(0x1d,0);
				//			if((user_setdata.oneseg < 1)||(user_setdata.oneseg > 5))
                            if(user_setdata.oneseg > 5)      //2004-5-10 change
							    user_setdata.oneseg = 0 ;
                            user_setdata.twoseg = 0;
                            user_setdata.thrseg = 0;
                            user_setdata.fouseg = 0;
                            break;
                   case 0x06:                                 //baojin sanxian sedin
                            set_pra_seg = 0x04 ;             //disan wei shangsuo
                            set_dp_F = 0 ;
                            user_setdata.oneseg = Read1B(0x12,0);
                            user_setdata.twoseg = Read1B(0x13,0);
                            user_setdata.thrseg = Read1B(0x14,0);
                            user_setdata.fouseg = 0;
                            break;
                   case 0x07:                                 //baojin xiaxian sedin
                            set_pra_seg = 0x02 ;             //zhui hou yi wei shangsuo
                             set_dp_F = 0 ;
                            user_setdata.oneseg = Read1B(0x15,0);
                            user_setdata.twoseg = Read1B(0x16,0);
                            user_setdata.thrseg = 0;
                            user_setdata.fouseg = 0;
                            break;
                   case 0x08:                                 //sensor_k  modify
                            set_pra_seg = 0x08 ;
                            set_dp_F = 0 ;
                            user_setdata.oneseg = Read1B(0x30,0);
                            user_setdata.twoseg = Read1B(0x31,0);
                            user_setdata.thrseg = Read1B(0x32,0);
                            user_setdata.fouseg = Read1B(0x33,0);
                            break;
                   /* 2004-02-16 add set 4mA stander out */
                   case 0x09:
                            set_pra_seg = 0x04 ;
                            set_dp_F = 0 ;
                            user_setdata.oneseg = Read1B(0x35,0);
                            user_setdata.twoseg = Read1B(0x36,0);
                            user_setdata.thrseg = Read1B(0x37,0);
                            break;
                   /* 4mA stander out set is over */
                   /*  set zero_offset  */
                   case 0x0a:                                 
				            set_pra_seg = 0x10 ;            
				            set_dp_F = 0 ;
                            user_setdata.oneseg = Read1B(0x39,0);
                            user_setdata.twoseg = Read1B(0x3a,0);
                            user_setdata.thrseg = Read1B(0x3b,0);
                            user_setdata.fouseg = Read1B(0x3c,0);
                            break;
         
				   case 0x0b:                                 //xiu gai mima
				            set_pra_seg = 0x08 ;             //zhui hou yi wei shangsuo
				            set_dp_F = 0 ;
                            user_setdata.oneseg = Read1B(0x0d,0);
                            user_setdata.twoseg = Read1B(0x0c,0);
                            user_setdata.thrseg = Read1B(0x0b,0);
                            user_setdata.fouseg = Read1B(0x0a,0);
                            break;
					default: break ;
               }

          }
}

/*************************************/
/************************************/

void Key_mid(void)
{  
   press_r_key = 0 ;
   if(disp_mode == PARA_DISP)
      return;
   else if(disp_mode == PARA_SET)
      {  
         disp_blink_time = TM2S;
	     switch(disp_no_u)
		 {
		 case 0x00:
         case 0x02:
         case 0x03:
         case 0x07:
         case 0x08:
		 case 0x0a:
         case 0x0b:
		 
		            if((disp_no_u == 2)&&(set_dp_F == 1))       //dp set        
                    {
		                dp_point = Dp_set_precess();
                        
				    }
				    else if((disp_no_u == 3)&&(set_dp_F == 1))
				    {
				        pulse_dp = Dp_set_precess();
				    }
				    else if((disp_no_u == 8)&&(set_dp_F == 1))
				    {
				        sensor_dp = Dp_set_precess();
				    }
                    else if((disp_no_u == 0x0a)&&(set_dp_F == 1))
                    {
                        zero_dp = Dp_set_precess();
                    }
	                else 
	                {   
                        if(set5_F == 1)
                        {
                           if(zero_symbol == ZERO_REVERSE)
                              zero_symbol = ZERO_POSITIVE;
                           else
                              zero_symbol = ZERO_REVERSE;
                        }
	                	else if(set4_F == 1)
                          { 
		                      user_setdata.fouseg++;
                              if(user_setdata.fouseg >= 10)    //set data from 0~9
                                  user_setdata.fouseg = 0;
                          }
                        else if(set3_F == 1)
                          {
                              user_setdata.thrseg++;
                              if(user_setdata.thrseg >= 10)
                                  user_setdata.thrseg = 0;
                          }
                        else if(set2_F == 1)
                          {
                              user_setdata.twoseg++;
                              if(user_setdata.twoseg >= 10)
                                  user_setdata.twoseg = 0;
                          }
                        else if(set1_F == 1)
                          {
                              user_setdata.oneseg++;
                              if(user_setdata.oneseg >= 10)
                                 user_setdata.oneseg = 0;
                          }
                     }
					 break;
					 
		  case 0x01:
		           if(set4_F == 1)
                          { 
		                      user_setdata.fouseg++;
                              if(user_setdata.fouseg >= 2)    //set data from 0~9
                                  user_setdata.fouseg = 0;
                          }
                    else if(set3_F == 1)
                          {
                              user_setdata.thrseg++;
                              if(user_setdata.thrseg >= 2)
                                  user_setdata.thrseg = 0;
                          }
                    else if(set2_F == 1)
                          {
                              user_setdata.twoseg++;
                              if(user_setdata.twoseg >= 2)
                                  user_setdata.twoseg = 0;
                          }
                    else if(set1_F == 1)
                          {
                              user_setdata.oneseg++;
                              if(user_setdata.oneseg >= 2)
                                 user_setdata.oneseg = 0;
                          }
                     break;
		  case 0x04:
		           if(set1_F ==1)
				   {
				         user_setdata.oneseg++;
						 if(user_setdata.oneseg > 6)
						    user_setdata.oneseg = 0;
				   }
				    break;

		  case 0x05:                                       //xiao liuliang xinhao qiecu
		           if(set1_F ==1)
				   {
				         user_setdata.oneseg++;
						 if(user_setdata.oneseg >= 6)
						    user_setdata.oneseg = 0;
				   }
				    break;
		  case 0x06:                                      //baojin sanxian 
		           if(set3_F == 1)
				         user_setdata.thrseg++;
						 if(user_setdata.thrseg > 1)
						      user_setdata.thrseg = 0;
                   else if(set2_F == 1)
				         {
						 user_setdata.twoseg++;
						 if(user_setdata.thrseg == 1)
						     {
						        if(user_setdata.twoseg > 5)
						            user_setdata.twoseg = 0;
							 }
						 else  if(user_setdata.twoseg >=10)
						        user_setdata.twoseg = 0 ;
                         }
				   else if(set1_F == 1)
                         {   
						     user_setdata.oneseg++;
						     if((user_setdata.thrseg == 1)&&(user_setdata.twoseg == 5))
							     user_setdata.oneseg = 0;
                             else if(user_setdata.oneseg >= 10)
							     user_setdata.oneseg = 0;
						  }
						  break;
		                                  //baojin xiaxian sedin
		   case 0x09:
		           if(set3_F == 1)
		           {
		           	  user_setdata.thrseg++;
		           	  if(user_setdata.thrseg > 2)
		           	     user_setdata.thrseg = 1 ;
		           }
		           else if(set2_F == 1)
		           {
		           	  user_setdata.twoseg++;
		           	  if(user_setdata.twoseg >= 10)
		           	     user_setdata.twoseg = 0;         
                   }
                   else if(set1_F == 1)
                   {
                   	  user_setdata.oneseg++;
                   	  if(user_setdata.oneseg >= 10)
                   	     user_setdata.oneseg = 0 ;
                  }
                break;
                   
					
         
		  default:       break;
		  }           
		}  
		           
   return;
}

/*************************************/
/*************************************/

void Key_right(void)
{
 

 if(disp_mode == PARA_DISP)
 	{
		disp_no_u++;
		set_pra_seg = 0x00 ;   
		if(disp_no_u >= 7)           //loop disp
			disp_no_u = 0 ;
	}
 else if(disp_mode == PARA_SET)
    {   
        if(biaodin_F != 1)
            press_r_key++;
 
        if( ((press_r_key >=5) && (disp_no_u !=2)&&(disp_no_u != 3)&&(disp_no_u != 8)&&(disp_no_u !=10))
              ||((press_r_key >=2)&&(set_pra_seg == 0)))
            {
             press_r_key = 0;
             biaodin_F = 0;
             set_dp_F = 0 ;
             set_pra_seg = 0;
             disp_mode = PARA_DISP ;
             disp_no_u = 0;
             return ;
            }
	//	if((disp_no_u == 2)&&(biaodin_F == 1)&&(set_dp_F == 1))
	    if(biaodin_F == 1)
	    {
	    	if(set_dp_F == 1)                      //dp biaodin
		     {
		     	if(disp_no_u == 2)                 //biaodin dp_point
		     	{
			        dp_point = Sure_biaodin_dp();
			        Save_dp_point(0x24);           //baochen system dp
				    Save_dp_point(0x0e);           //biaodin shi  he xitong xiaosu din yiyang
				    set_dp_F = 0;
				    set_pra_seg = 0;
				    biaodin_F = 0;                 //biaodin over
				    disp_mode = PARA_DISP;
				    disp_no_u = 0 ;
		        }
		       
            }

⌨️ 快捷键说明

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