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

📄 key_io.i

📁 电表解决方案概要power_meter_r8c2g_source_code
💻 I
📖 第 1 页 / 共 4 页
字号:
extern unsigned char menu_level_3_back_flag;	 

extern unsigned char menu_buff_0;			 
extern unsigned char menu_buff_1;			 
extern unsigned char menu_buff_2;			 
extern unsigned char menu_buff_3;			 
extern unsigned char menu_buff_4;			 
extern unsigned char menu_buff_5;			 
extern unsigned char menu_buff_6;			 

 
 

extern unsigned char menu_0_flag;				 

 
 
 
 
 
 

extern unsigned char function_set_flag;			 
extern unsigned char program_set_flag;				 
extern unsigned char water_set_flag;				 
extern unsigned char power_flag;					 
extern unsigned char key_press_flag;				 


extern unsigned char first_water_flag;			 	
extern unsigned char first_wash_flag;			 
extern unsigned char first_rinse_flag;			 
extern unsigned char first_spin_flag;			 
extern unsigned char first_preset_flag;			 


extern unsigned char key_debunce_0;				 
extern unsigned char key_debunce_1;				 


 

extern unsigned char key_buff_0;			 
extern unsigned char key_buff_1;			 
 
extern unsigned int key_buff_2;			 
extern unsigned char key_buff_3;			 
extern unsigned char key_buff_4;			 

 
extern unsigned int save_key_1;			 
extern unsigned char save_key_2;			 

 

 
extern unsigned char left_time_buff;				 

 
 
 

extern unsigned char program_buff_0;				 
extern unsigned char water_level_buff_0;			 
extern unsigned char soak_time_buff_0;
extern unsigned char wash_time_buff_0;
extern unsigned char rinse_time_buff_0;
extern unsigned char spin_time_buff_0;
extern unsigned char save_water_num_buff_0;
extern unsigned char winddry_time_buff_0;
extern unsigned char preset_time_buff_0;
extern unsigned char function_set_buff_0;

 
 
extern unsigned char soak_time_buff;
extern unsigned char wash_time_buff;
extern unsigned char rinse_time_buff;
extern unsigned char spin_time_buff;
extern unsigned char save_water_num_buff;
extern unsigned char winddry_time_buff;
extern unsigned char preset_time_buff;
extern unsigned char function_set_buff;


extern unsigned char program_start_flag;		 
extern unsigned char program_pause_flag;		 





#line 5 "D:/Projects/Haier/General Washer/workspace/General_Washer/General_Washer/src/key_io.c"

  unsigned char key_tag_flag;

  unsigned char preset_key_1s5_buff;
 
 
  

 
 




















 
 

void serial(void)
{;
}
  
void key(void)
{
 
	key_logic(); 
}

void key_led(void)
{
	;
}

 

 


















  	 




















































































 























































































































 




































































































































void key_power(void)
{
	  key_buzz_flag = 1;
	  
 if (status_buff == 0x00 )
  {
	   
      status_buff = 0x01 ;
      status_5m_buff = 5;		 
	  default_flag = 1;
	  run_1s_buff = 0;
	  
      return;
  }
  else if (status_buff != 0x00 )
  {
      status_buff = 0x00 ;
      run_1s_buff = 0;
	  
	  init();
	  
  }	
  
  return;
}


 


void key_start(void)
{
	  key_buzz_flag = 1;
	  
 if ((status_buff == 0x01 )||(status_buff == 0x03 ))
  {
	if (key_preset_flag == 0)
	 {
    	status_buff = 0x02 ;
		run_1s_buff = 0;
		process_key_falg = 1;
		return;
	 }
	else if (key_preset_flag == 1)
	{
		status_buff = 0x05 ;
		run_1s_buff = 0;
		
		preset_flash_flag = 1;
		
		save_led_buff_0 = led_disp.led_0.byte;
		save_led_buff_1 = led_disp.led_1.byte;
		save_led_buff_2 = led_disp.led_2.byte;
		
		return;
	}
  }
 else  if ((status_buff == 0x02 )||(status_buff == 0x04 ))
  {
    status_buff = 0x03 ;
	run_1s_buff = 0;
	
	stream_buff = 0x80 ;
	mot_cycle_buff &= 0x00 ;	
  }
 else
 return;
}

void key_program(void)
{
	if (process_buff == 0x0f )			 
	 {
		 if (select_soak_flag != 1)
		  {
			  program_count = 0;
			  select_soak_flag = 1;
		  }
		 
		 program_count ++;	
		  		 
		 if (program_count >= 5)
		 program_count = 0;

		 switch(program_count)
			{
		     case 0:
			 
			 program_buff = 0x00 ;
			 led_disp.led_0.byte = 0xfe;
			 break;
			 
			 case 1:
			 
			 program_buff = 0x03 ;
			 led_disp.led_0.byte = 0xf7;
			 break;
			 
			 case 2: 
			 
			 program_buff = 0x04 ;
			 led_disp.led_0.byte = 0xfe;
 
			 break;
			 
			 case 3: 
			 
			 program_buff = 0x05 ;
			 led_disp.led_0.byte = 0xfd;
			 break;
			 
			 case 4: 
			 
			 program_buff = 0x06 ;
			 led_disp.led_0.byte = 0xfb;
			 break;
			 
			 default:
			 
			 program_buff = 0x00 ;
			 led_disp.led_0.byte = 0xfe;
			 
			};
		 
	 }
	 
	else if (process_buff != 0x0f )
	 {
		 if (select_soak_flag != 0)
		  {
			  program_count = 0;
			  select_soak_flag = 0;
		  }
		  
		 program_count ++;
		  		 
		 if (program_count == 8)
		 program_count = 0;
		 
		  switch(program_count)
			{
		     case 0:
			 
			 program_buff = 0x00 ;
			 led_disp.led_0.byte = 0xfe;
			 break;
			 
			 case 1:
			 
			 program_buff = 0x01 ;
			 led_disp.led_0.byte = 0xfd;
			 break;
			 
			 case 2: 
			 
			 program_buff = 0x02 ;
			 led_disp.led_0.byte = 0xfb;
			 break;
			 
			 case 3: 
			 
			 program_buff = 0x03 ;
			 led_disp.led_0.byte = 0xf7;
			 break;
			 
			 case 4: 
			 
			 program_buff = 0x04 ;
			 led_disp.led_0.byte = 0xfe;
			 break;
			 
			 case 5: 
			 
			 program_buff = 0x05 ;
			 led_disp.led_0.byte = 0xfd;
			 break;

			 case 6: 
			 
			 program_buff = 0x06 ;
			 led_disp.led_0.byte = 0xfb;
			 break;

			 case 7: 
			 
			 program_buff = 0x07 ;
			 led_disp.led_0.byte = 0xf7;
			 break;
			 
			 default:
			 
			 program_buff = 0x00 ;
			 led_disp.led_0.byte = 0xfe;
			 
			};
	 }
	 
	if (program_buff > 3)
	 {
     	program_flash_flag = 1;
	 	led_flash_buff1 = led_disp.led_0.byte;
	 }	
	else 
	program_flash_flag = 0;
	
	if (program_buff == 0x01 )
	 {
     	process_buff = 0x0e ;
     	pro_led_buff = 0x1f;
     	led_disp.led_2.byte = pro_led_buff;
     	return;
	 }	
	if (program_buff == 0x02 )
	 {
     	select_fastest_flag = 1;
     	water_level_buff = 3;
     	water_count = water_level_buff;
     	led_disp.led_1.byte = 0xf7;
     	water_flash_flag = 0;
		
     	process_buff = 0x0e ;
     	pro_led_buff = 0x1f;
     	led_disp.led_2.byte = pro_led_buff;
		
     	return;
	 }
	if ((select_fastest_flag == 1)&&(program_buff != 0x02 ))
	 {
     	select_fastest_flag = 0;
     	water_level_buff = 6;
     	water_count = water_level_buff;
     	led_disp.led_1.byte = 0xfb;
     	led_flash_buff = led_disp.led_1.byte;
     	water_flash_flag = 1;
     	return;
	 }		  		  
	if (program_buff == 0x07 )
	 {
     	select_tube_flag = 1;
     	led_disp.led_1.byte = 0xff;
     	water_flash_flag = 0;
		
     	process_buff = 0x0e ;
     	pro_led_buff = 0x1f;
     	led_disp.led_2.byte = pro_led_buff;
		
     	return;
	 }		  
	if ((select_tube_flag == 1)&&(program_buff != 0x07 ))
	 {
     	select_tube_flag = 0;
     	water_level_buff = 6;
     	water_count = water_level_buff;
     	led_disp.led_1.byte = 0xfb;
     	led_flash_buff = led_disp.led_1.byte;
     	water_flash_flag = 1;
     	return;
	 }	
	 		  	 
	return;
}

void key_pro_fun(void)
{
  if ((program_buff == 0x01 )||(program_buff == 0x02 )||(program_buff == 0x07 ))
  
  return;

	if (process_key_falg == 1)
	key_process();
	
	else if (function_key_falg == 1)
	key_function();
	
	pro_led_buff &= 0xf0;
	fun_led_buff &= 0x0f;
	
	led_disp.led_2.byte = pro_led_buff + fun_led_buff;
	
}

void key_process(void)
{
if ((program_buff == 0x05 )||(program_buff == 0x06 ))
 {
  process_count ++;
	
  if (process_count == 4)

    process_count = 0;
	
  switch(process_count)
   {
	 case 0:
			 
	 process_buff = 0x0f ;
	 pro_led_buff = 0x0f;
	 break;
	 
	 case 1:
			 
	 process_buff = 0x02 ;
	 pro_led_buff = 0xdf;
	 break;
	 
	 case 2:
			 
	 process_buff = 0x04 ;
	 pro_led_buff = 0xbf;
	 break;
	 
	 case 3:
			 
	 process_buff = 0x08 ;
	 pro_led_buff = 0x7f;
	 break;
   }; 
 }
else 
 {
  process_count ++;
	
  if (process_count == 6)

    process_count = 0;
	
  switch(process_count)
   {
	 case 0:
			 
	 process_buff = 0x0e ;
	 pro_led_buff = 0x1f;
	 break;
	 
	 case 1:
			 
	 process_buff = 0x02 ;
	 pro_led_buff = 0xdf;
	 break;
	 
	 case 2:
			 
	 process_buff = 0x06 ;
	 pro_led_buff = 0x9f;
	 break;
	 
	 case 3:
			 
	 process_buff = 0x0c ;
	 pro_led_buff = 0x3f;
	 break;
	 
	 case 4:
			 
	 process_buff = 0x08 ;
	 pro_led_buff = 0x7f;
	 break;
	 
	 case 5:
			 
	 process_buff = 0x0f ;
	 pro_led_buff = 0x0f;
	 break;
   };
 }
}

void key_function(void)
{
  function_count ++;
	
  if (function_count == 12)

    function_count = 0;
	
  switch(function_count)
   {
	 case 0:
			 
	 function_buff = 0x01 ;
	 fun_led_buff = 0xfe;
	 break;
			 
	 case 1:
			 
	 function_buff = 0x02 ;
	 fun_led_buff = 0xfd;
	 break;
			 
	 case 2:
			 
	 function_buff = 0x04 ;
	 fun_led_buff = 0xfb;
	 break;
			 
	 case 3:
			 
	 function_buff = 0x08 ;
	 fun_led_buff = 0xf7;
	 break;
			 
	 case 4:
			 
	 function_buff = 0x03 ;
	 fun_led_buff = 0xfc;
	 break;
	 
	 case 5:
			 
	 function_buff = 0x05 ;
	 fun_led_buff = 0xfa;
	 break;

	 case 6:
			 
	 function_buff = 0x09 ;
	 fun_led_buff = 0xf6;
	 break;
	 
	 case 7:
			 
	 function_buff = 0x06 ;
	 fun_led_buff = 0xf9;
	 break;
	 
	 case 8:
			 
	 function_buff = 0x0a ;
	 fun_led_buff = 0xf5;
	 break;
	 
	 case 9:
			 
	 function_buff = 0x07 ;
	 fun_led_buff = 0xf8;
	 break;
	 
	 case 10:
			 
	 function_buff = 0x0b ;
	 fun_led_buff = 0xf4;
	 break;
	 
	 case 11:
			 
	 fun_led_buff = 0xff;			 
	 break;
	 
	 default:
			 
	 function_buff = 0x01 ;
	 fun_led_buff = 0xfe;
			 
   };
   
  return;
  
}

void key_water(void)
{
  if (program_buff == 0x02 )
   {
	  water_level_buff = 3;
	  water_count = water_level_buff;
	  led_disp.led_1.byte = 0xf7;
	  water_flash_flag = 0;
	  return;
   }
  else if (program_buff == 0x07 )
   {
	  led_disp.led_1.byte = 0xff;
	  return;
   }
  else if (run_spin_flag == 1)
  return;
   
  water_count ++;				 
	
  if (water_count == 11)

    water_count = 1;
	
  switch(water_count)
   {
	 case 1:
	 case 2:
	 water_level_buff = water_count;
	 led_disp.led_1.byte = 0xef;
	 break;
	 
	 case 3:
	 case 4:
	 water_level_buff = water_count;
	 led_disp.led_1.byte = 0xf7;
	 break;
	 
	 case 5:
	 case 6:
	 water_level_buff = water_count;
	 led_disp.led_1.byte = 0xfb;
	 break;
	 
	 case 7:
	 case 8:
	 water_level_buff = water_count;
	 led_disp.led_1.byte = 0xfd;
	 break;
	 
	 case 9:
	 case 10:
	 water_level_buff = water_count;
	 led_disp.led_1.byte = 0xfe;
	 break;
   };
   
  if (!(water_count%2))
   {
     water_flash_flag = 1;
	 led_flash_buff = led_disp.led_1.byte;
   }	
   
  else 
  water_flash_flag = 0;
  
  return;
}

void key_preset(void)
{
	key_preset_normal();
}

void key_preset_normal(void)
{
  preset_count ++;				 
	
  if (preset_count == 25)
   {
     preset_count = 0;
	 preset_3s_buff = 3;
   }
	 
	 if (preset_count == 1)
	 preset_count = 2;
	
	 preset_buff = preset_count;
 		





















		if (preset_count < 10)
		 {
			 led_disp.led_3.byte = seg_led_table[preset_count];
			 led_disp.led_4.byte = seg_led_table[0];
		 }
		if ((preset_count >= 10)&&(preset_count < 20))
		 {
			 led_disp.led_3.byte = seg_led_table[preset_count-10];
			 led_disp.led_4.byte = seg_led_table[0x01];
		 }
		if (preset_count >= 20)
		 {
			 led_disp.led_3.byte = seg_led_table[preset_count-20];
			 led_disp.led_4.byte = seg_led_table[0x02];
		 }
		 
		led_flash_buff3 = led_disp.led_3.byte;
		led_flash_buff4 = led_disp.led_4.byte;		 
 
	  
	  return;
}

void key_preset_cont(void)
{
 
 
	 if (preset_500ms_buff == 0)
	   {
		  preset_500ms_buff = 1;
		  preset_count ++;				 
	
  		  if (preset_count == 25)
   		   {
     		  preset_count = 0;
 
   		   }
	 
	 	  if (preset_count == 1)
	 	  preset_count = 2;
					
		  preset_buff = preset_count;
					
	   }
	   
	 if (preset_count < 10)
		 {
			 led_disp.led_3.byte = seg_led_table[preset_count];
			 led_disp.led_4.byte = seg_led_table[0];
		 }
	 if ((preset_count >= 10)&&(preset_count < 20))
		 {
			 led_disp.led_3.byte = seg_led_table[preset_count-10];
			 led_disp.led_4.byte = seg_led_table[0x01];
		 }
	 if (preset_count >= 20)
		 {
			 led_disp.led_3.byte = seg_led_table[preset_count-20];
			 led_disp.led_4.byte = seg_led_table[0x02];
		 }
		 
	 led_flash_buff3 = led_disp.led_3.byte;
	 led_flash_buff4 = led_disp.led_4.byte;
	   
 
   
  return;
  
}
     
     

⌨️ 快捷键说明

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