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

📄 key_io.c

📁 电表解决方案概要power_meter_r8c2g_source_code
💻 C
📖 第 1 页 / 共 2 页
字号:

#include "sfr_r82b.h"
#include "main.h"
#include "global.h"

  unsigned char key_tag_flag;

  unsigned char preset_key_1s5_buff;
//  static unsigned char key_release = 1;
//    unsigned char key_release = 1;
  

/* it's enough to use 3 bytes for function key flag management */
/*
  unsigned char T1_2key_flag;
  unsigned char T1_3key_flag;
  unsigned char Test1_flag;
  
  unsigned char T2_2key_flag;
  unsigned char T2_3key_flag;
  unsigned char Test2_flag;
  
  unsigned char T3_key_flag;
  unsigned char Test3_flag;
  
  unsigned char T4_2key_flag;
  unsigned char T4_3key_flag;
  unsigned char Test4_flag;
  
  unsigned char T5_2key_flag;
  unsigned char T5_3key_flag;
  unsigned char Test5_flag;
  
*/
/*  unsigned char led_seg_0; */
/*  unsigned char led_seg_1; */

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



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

/*

void key_logic(void)
{
  if (key_preset_flag == 1)
   {
	 if (preset_buff == 0)
	  {
	    if (preset_3s_buff == 0)
	     {
		   preset_3s_buff = 3;
		   key_preset_flag = 0;
		   led_disp.led_3.byte = seg_led_table[10];
		   led_disp.led_4.byte = seg_led_table[10];
	     }
	  }
   }

  if (key_buff_2 == old_key)			/* key_buff_2 define: 00 41 52 63 */
 /*  {
	   if ((program_buff == SPEEDY)||(program_buff == FASTEST)||(program_buff == TUBE_DRY))
	   
	   return;
	   
	   if (key_buff_2 == KEY2)
	    {
			if (key2_2s_buff == 0)		// process selection; 
			 {
				 key2_2s_buff = 2;
				 
				 if (key2_switch_flag == 0)
				  {
				 	key2_switch_flag = 1;
				 	if (process_key_falg == 1)
				  	 {
					  process_key_falg = 0;
					  function_key_falg = 1;
				  	 }
				 	else if (function_key_falg == 1)
				  	 {
					  process_key_falg = 1;
					  function_key_falg = 0;
				  	 }
				 	return;
				  }
			 }
		}
		 
	   else if (key_buff_2 == KEY3)
	    {
			if (key3_1s5_buff == 0)		// process selection; 
			 {
				 key_preset_cont();
			 }
		}										
		
	   else if (key_buff_2 == KEY4)
	    {
			if (status_buff == RUN)
			  {
			    if ((run_soak_flag == 1)||(run_wash_flag)||(run_rinse_flag));
				inlet(1, 5, water_level_buff);
				return;
			  }
		}							
													// check if need 'return' 
   }
  else							// need use running key and setting key save buffer
   {
	 if (key_buff_2 == 0)
	 key_release = 1; 
	 else
	  {
	    key_release = 0; 
		key2_2s_buff = 2;
		key2_switch_flag = 0;
		key3_1s5_buff = 3;
		key_buff_3 = key_buff_2;
	  }
		
	 old_key = key_buff_2;
	 
	 if (key_release == 1)
	  {
	   if (status_buff == PRESET)
	    {
			if (key_buff_3 == KEY3)
			 {
				preset_confirm_flag = 1;
				preset_5s_buff = 5;
			
				preset_flash_flag = 0;
				led_disp.led_3.byte = led_flash_buff3;
	 			led_disp.led_4.byte = led_flash_buff4;
			 }
			 
			if (key_buff_3 == KEY6)
			key_power();

			 
			return;
		}
		  
	   if (status_buff == STAND_BY) */	/* if running, need as key judge during specific process; */
/*	    {
		  switch (key_buff_3)
		   {
			case KEY1:
			
			if (t3_key_flag == 1)
			 {
				status_buff = TEST;
				test3_flag = 1;
				t3_key_flag = 1;
			 }
			break;
			
//			case KEY3:
			
//			key_preset_flag = 1;
//			key_preset();
//			break;			
			
			case KEY6:
			key_power();
			break;
						
			case KEY1_6:
			
			t3_key_flag = 1;
			break;			

			case KEY2_3:
			
			if (t5_3key_flag == 1)
			 {
				 status_buff = TEST;
				 test5_flag = 1;
			 }								// it's one bit of "test_buff";
			else
			t5_2key_flag = 1;
			break;


			case KEY2_5:
			
			if (t4_3key_flag == 1)
			 {
				 status_buff = TEST;
				 test4_flag = 1;
			 }
			else
			t4_2key_flag = 1;
			break;


			case KEY3_4:
			
			if (t2_3key_flag == 1)
			 {
				 status_buff = TEST;
				 test2_flag = 1;
			 }
			else
			t2_2key_flag = 1;
			break;
			

			case KEY4_5:
			
			if (t1_3key_flag == 1)
			 {
				 status_buff = TEST;
				 test1_flag = 1;
				 test_1_mode = C1;
				 test_1_start_flag =1;
			 }
			else
			t1_2key_flag = 1;
			break;
			
			
			case KEY2_3_6:
			
			if (t5_2key_flag == 1)
			 {
				 t5_2key_flag = 0;
				 t5_3key_flag = 1;
			 }
			break;


			case KEY2_5_6:
			
			if (t4_2key_flag == 1)
			 {
				 t4_2key_flag = 0;
				 t4_3key_flag = 1;
			 }
			break;


			case KEY3_4_6:
			
			if (t2_2key_flag == 1)
			 {
				 t2_2key_flag = 0;
				 t2_3key_flag = 1;
			 }
			break;
			

			case KEY4_5_6:
			
			if (t1_2key_flag == 1)
			 {
				 t1_2key_flag = 0;
				 t1_3key_flag = 1;
			 }
			break;
		   };
		}
	   
	   else if ((status_buff != TEST)&&(status_buff != STAND_BY))	/* if running, need as key judge during specific process; */
/*	    {
	     switch (key_buff_3)
	      {
			case KEY1:
			
			key_start();
			break;
			
			
			case KEY2:
			
			if (key2_switch_flag == 1)
			 {
				 key2_switch_flag = 0;
				 return;
			 }
			key_pro_fun();
			break;
			
			
			case KEY3:
			
			key_preset_flag = 1;
			key_preset();
			break;
			
			
			case KEY4:
			
			key_water_flag = 1;
			key_water();
			break;
			
			
			case KEY5:

			key_program();
			break;
			
			
			case KEY6:
			
			key_power();
			break;
			
	      };
	    }

	   else if (status_buff == TEST)
	    {
	     switch (test_buff)
	      {
			case TEST1:
			
			if (key_buff_3 == KEY4)				// if key_water;
			 {
				test_1_mode ++;
				if (test_1_mode == 4)
				test_1_mode = 1;
				t_mode_switch_flag = 1;				
			 }
			 
			if (key_buff_3 == KEY1)
			key_start();
			
			if (key_buff_3 == KEY3)
			key_preset();
			
			if (key_buff_3 == KEY5)
			key_program();
			break;
			
			case TEST2:
			
			if (key_buff_3 == KEY4)				// if key_water;
			 {
				test_inlet_flag = 1;
				if (key_release == 1)
				key_release = 0;
			 }
			 
			if (key_buff_3 == KEY5)				// if key_water;
			 {
				test_softner_flag = 1;
				if (key_release == 1)
				key_release = 0;
			 }
			 
			if (key_buff_3 == KEY3)				// if key_water;
			 {
				test2_spin_flag = 1;
//				if (key_release == 1)
//				key_release = 0;
			 }
			 
			if (key_buff_3 == KEY6)
			key_power();
			break;

			case TEST3:
			
			if (key_buff_3 == KEY6)
			key_power();
			break;

			case TEST4:
			
			if (key_buff_3 == KEY6)
			key_power();
			break;

			case TEST5:

			if (key_buff_3 == KEY1)
			key_start();
			
			if (key_buff_3 == KEY6)
			key_power();
			break;

	      };
	    }
	  }
	   else 
	   return;
   }
   
  return;
  
}

*/

void key_power(void)
{
	  key_buzz_flag = 1;
	  
 if (status_buff == STAND_BY)
  {
	  //buzz_power();
      status_buff = INITIAL;
      status_5m_buff = 5;		// need confirm any key pressed ???
	  default_flag = 1;
	  run_1s_buff = 0;
	  
      return;
  }
  else if (status_buff != STAND_BY)
  {
      status_buff = STAND_BY;
      run_1s_buff = 0;
	  
	  init();
	  
  }	
  
  return;
}


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


void key_start(void)
{
	  key_buzz_flag = 1;
	  
 if ((status_buff == INITIAL)||(status_buff == STOP))
  {
	if (key_preset_flag == 0)
	 {
    	status_buff = RUN;
		run_1s_buff = 0;
		process_key_falg = 1;
		return;
	 }
	else if (key_preset_flag == 1)
	{
		status_buff = PRESET;
		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 == RUN)||(status_buff == TEST))
  {
    status_buff = STOP;
	run_1s_buff = 0;
	
	stream_buff = STREAM_STOP;
	mot_cycle_buff &= MOT_STOP;	
	output_buff &= (~CW);
	output_buff &= (~CCW);	 	
  }
 else
 return;
}

void key_program(void)
{
	if (process_buff == SWRS)			/* while choose soak, wash, rinse, spin; */
	 {
		 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 = COMMON;
			 led_disp.led_0.byte = 0xfe;
			 break;
			 
			 case 1:
			 
			 program_buff = JEANS;
			 led_disp.led_0.byte = 0xf7;
			 break;
			 
			 case 2: 
			 
			 program_buff = STANDARD;
			 led_disp.led_0.byte = 0xfe;
//			 flash_flag = 1;
			 break;
			 
			 case 3: 
			 
			 program_buff = FIBER;
			 led_disp.led_0.byte = 0xfd;
			 break;
			 
			 case 4: 
			 
			 program_buff = COTTON;
			 led_disp.led_0.byte = 0xfb;

⌨️ 快捷键说明

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