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

📄 operation_a.i

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


 
 

extern	unsigned char spin_balance_time_buff;

extern	signed char inertial_30s_buff;
extern	signed char break_5s_buff;

 


extern	unsigned char output_buff;
extern	unsigned char save_output_buff;
extern	unsigned char machine_type;
extern	unsigned char err_buff;

extern	signed int process_left_time;
extern	unsigned char total_run_time;
extern	unsigned char total_left_time;

extern	unsigned char water_level_buff;
 

extern	unsigned char status_buff;
extern	unsigned char lid_open;
 
extern	unsigned char manual_process_buff;

extern	unsigned char ac_frequency;
extern	unsigned char stream_table_row;
extern	unsigned char ext_stream_table_row;

extern	unsigned char main_stream_time;
extern	unsigned char ext_stream_time;

extern	unsigned char mot_cycle_buff;
extern	unsigned char stream_buff;
extern	signed char stream_100ms_buff;
extern	signed char base_100ms_buff;

 
 
extern	unsigned char stream_start_flag;
extern	unsigned char stream_stop_flag;

extern	unsigned char pro_default_flag;

extern	unsigned char program_left_time;
 

extern	unsigned char key_buzz_flag;
extern	unsigned char buzz_flag;  

extern	signed char buzz_24ms_buff;

extern	signed char buzz_15m_buff;
extern	signed char buzz_switch_flag;
extern	signed char buzz_500ms_buff;
extern	signed char buzz_time;        


 



extern union byte_def_1 {

	volatile unsigned char byte;

	struct{

	unsigned char b0:1;
	unsigned char b1:1;
	unsigned char b2:1;
	unsigned char b3:1;
	unsigned char b4:1;
	unsigned char b5:1;
	unsigned char b6:1;
	unsigned char b7:1;

	}bi;
};



extern struct{
	
	union byte_def_1 led_0;
	union byte_def_1 led_1;
	union byte_def_1 led_2;
	union byte_def_1 led_3;
	union byte_def_1 led_4;
	
}led_disp;

extern struct{
	
	union byte_def_1 key_flag;
	union byte_def_1 flash;
	union byte_def_1 flag_2;
	union byte_def_1 flag_3;
	union byte_def_1 flag_4;
	
}flag;



extern struct struct_table{
	
	unsigned int run;
	unsigned int stop;
	
};

extern const struct struct_table Stream_Table_A[18][3];
extern const struct struct_table Stream_Table_B[12][3];
extern const struct struct_table Stream_Table_Ext_A[4][2];
extern const struct struct_table Stream_Table_Ext_B[4][2];
extern const struct struct_table Stream_Table_TEST[3][2];

extern const struct struct_table Balance_Stream_A[2];
extern const struct struct_table Speedy_Stream_A[4];
extern const struct struct_table Fastest_Stream_A[2];

 

 

extern const unsigned char Standard_Time_Table[21];

extern const unsigned char Memo_Time_Table[25];

extern const unsigned char Strong_Time_Table[23];

extern const unsigned char Silk_Time_Table[21];

extern const unsigned char Soft_Time_Table[33];

extern const unsigned char Child_Time_Table[33];

extern const unsigned char Wool_Time_Table[25];

extern const unsigned char Speedy_Time_Table[14];

extern const unsigned char Fastest_Time_Table[16];

extern const unsigned char TubeDry_Time_Table[7];


extern const unsigned char Single_Wash_Time_Table[];

extern const unsigned char Rinse_Time_Table[];

extern const unsigned char Single_Spin_Time_Table[];


extern const unsigned char Woven_Time_Table[33];

extern const unsigned char Maotan_Time_Table[33];

 

 

 

extern const unsigned char Memo_Soak_Time_Table[3][3];

extern const unsigned char Memo_Wash_Time_Table[3][3];

extern const unsigned char Standard_Soak_Time_Table[3][3];

extern const unsigned char Standard_Wash_Time_Table[3][3];

extern const unsigned char Strong_Soak_Time_Table[3];

extern const unsigned char Strong_Wash_Time_Table[3];


extern const unsigned char Soft_Soak_Time;
extern const unsigned char Soft_Wash_Time;

extern const unsigned char Child_Soak_Time;
extern const unsigned char Child_Wash_Time;

extern const unsigned char Wool_Soak_Time;

extern const unsigned char Wool_Wash_Time;

extern const unsigned char Silk_Wash_Time;
extern const unsigned char Speedy_Wash_Time;

extern const unsigned char seg_led_table[];

extern const unsigned char OPT_Table[];

extern const unsigned char Left_time_Colum_Table[];



#line 4 "D:/Projects/Haier/General Washer/workspace/General_Washer/General_Washer/src/operation_a.c"

#line 1 "D:/Projects/Haier/General Washer/workspace/General_Washer/General_Washer/src/disp_definel.h"




 




















 
 

 
 









 






 
 








 
 
 
 
 
 
 
   
 

  








 















 
  

 
 

extern void cpu_init(void);
extern void sfr_ref(void);
extern void sfr_init(void);
extern void ram_init(void);


extern void disp_key_power(void);				 
extern void disp_key_start(void);				 
extern void disp_key_setup(void);				 
 
extern void disp_key_confirm(void);			 
 
extern void disp_key_function(void);			 
extern void disp_key_program(void);			 
extern void disp_key_water(void);				 

extern void key_scan(void);					 
extern void key_judge(void);					 
extern void menu_display(void);				 
extern void display_status_judge (void);

 


 
extern void process_flash(unsigned char, signed char, signed char, unsigned char, unsigned char, unsigned char);

 
extern void lcd_flash(unsigned char, unsigned char, unsigned char, unsigned char *, unsigned char *);

 
extern void menu_page_shift(unsigned char, unsigned char, unsigned char);



 



extern union lcd_byte_def{

	unsigned char lcd_byte;

	struct{

	unsigned char lb0:1;
	unsigned char lb1:1;
	unsigned char lb2:1;
	unsigned char lb3:1;
	unsigned char lb4:1;
	unsigned char lb5:1;
	unsigned char lb6:1;
	unsigned char lb7:1;

	}lcd_bit;
};


extern union lcd_byte_def Lcd_Byte_0;
extern union lcd_byte_def Lcd_Byte_1;
extern union lcd_byte_def Lcd_Byte_2;

 


 
 

extern signed char epprom_4ms_buff;
extern unsigned char key_4ms_buff;
extern unsigned char Tflash;
extern unsigned char Pflash;
extern signed char scan_buff;
extern unsigned char scan_count;

extern unsigned char flash_flag;					 
extern unsigned char flash_switch_flag;			 
extern unsigned char Pflash_switch_flag;			 
extern unsigned char run_page3_flag;

extern signed char confirm_num;

extern signed char set_num;					 
extern signed char set_num_lev_0;				 
extern signed char set_num_lev_1;				 
extern signed char set_num_lev_2;				 
extern signed char set_num_lev_3;				 

 
 

extern unsigned char menu_level_buff;		 

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_soak_flag;			 
extern unsigned char first_wash_flag;			 
extern unsigned char first_rinse_flag;			 
extern unsigned char first_spin_flag;			 
extern unsigned char first_save_water_flag;			 
extern unsigned char first_wind_dry_flag;			 
extern unsigned char first_preset_flag;			 
extern unsigned char first_function_flag;

extern unsigned char confirm_water_flag;
extern unsigned char confirm_soak_flag;
extern unsigned char confirm_wash_flag;
extern unsigned char confirm_rinse_flag;
extern unsigned char confirm_spin_flag;
extern unsigned char confirm_save_water_flag;
extern unsigned char confirm_wind_dry_flag;
extern unsigned char confirm_preset_flag;
extern unsigned char confirm_function_flag;

extern unsigned char once_set_water_flag;
extern unsigned char once_set_soak_flag;
extern unsigned char once_set_wash_flag;
extern unsigned char once_set_rinse_flag;
extern unsigned char once_set_spin_flag;
extern unsigned char once_set_save_water_flag;
extern unsigned char once_set_wind_dry_flag;
extern unsigned char once_set_preset_flag;
extern unsigned char once_set_function_flag;

extern unsigned char num_overflow_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 save_program_buff;
extern unsigned char rinse_three_time_flag;
extern unsigned char rinse_one_time_flag;

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;		 

extern unsigned char preset_set_flag;





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


void cut_off_power(void);

 
 











 

#pragma SECTION program pro_1

void logic(void)
{
 unsigned char i;
 
 run_stream();	
 	
 if (water_level_buff <= 4)
 water_level = 0;
 
 else if ((water_level_buff > 4)&&(water_level_buff < 8))
 water_level = 1;
 
 if (water_level_buff >= 8)
 water_level = 2;
 
 if (run_save_water_flag == 1)
 status_buff = 0x03 ;
 if (run_err_flag == 1)
 status_buff = 0x03 ; 
	
 if ((status_buff == 0x04 )&&(t_mode_switch_flag == 1))
 {
	 run_1s_buff = 0;
	 t_mode_switch_flag = 0;
 }
 
 else if ((status_buff == 0x04 )&&(test_start_flag == 1))
 {
	 run_1s_buff = 0;
	 test_1_start_flag = 0;
 }

 else if ((status_buff == 0x04 )&&(test_inlet_flag == 1))		 
 {
	 run_1s_buff = 0;
	 test_1_start_flag = 0;
 }
 
 if (run_1s_buff == 0)							 
  {
	run_1s_buff = 1;
 

	if (status_buff == 0x00 )
	 {	
		output_buff = 0x00;
		return;
	 }
	 
	if (status_buff == 0x03 )
	 {
		output_buff = 0x00;
		program_start_flag = 0;
		program_pause_flag = 1;
		
		if (run_save_water_flag == 1)
		save_water();		
		if (release_save_water_flag == 1)
		 {
			status_buff = 0x02 ;
			release_save_water_flag = 0;
		 }
		return;
	 }
	 	 
	if (status_buff == 0x01 )
	 {
		 if (default_flag == 1)
		  {
			  default_flag = 0;
			  
			  water_level_buff = 6;
			  
			  operation_buff = 0x00;	 
			 
		  }
		 if (status_5m_buff == 0)
		  {
			  status_buff = 0x00 ;
			  status_5m_buff = 5;
			  p3_addr.bit.b7				  = 1;
		  }		
		    
		 return;	  
	 }	 
	 
	if (status_buff == 0x02 )
	 {
 

















		 program_start_flag = 1;
		 program_pause_flag = 0;
		 
		 operation();
		 
 
		 
	 }	 	
	 
	if (status_buff == 0x04 )
	 {
		if (test_buff == 0x10 )
		test_no_water();
			  
		if (test_buff == 0x11 )
		test_production();

		if (test_buff == 0x12 )
		test_cycle();
			  
		if (test_buff == 0x13 )
		test_interm_spin();
			  
		if (test_buff == 0x14 )
		test_weight();
	 }
	 
	if (status_buff == 0x05 )
	 {
		 if (key_preset_flag == 1)
		  {
		 	  sys_1m_buff = preset_time_buff;
		 	  key_preset_flag = 0;
						
		  }
		 if (sys_1m_buff == 0)
		  {
 
			  
			  return;
		  }
		 if (preset_confirm_flag == 0)
		  {  
			  water_flash_flag = 0;
			  program_flash_flag = 0;
			  
		  }
		 if (preset_confirm_flag == 1)
		  {
			  water_flash_flag = 1;
			  	
			  if (preset_5s_buff == 0)
			   {
				  preset_confirm_flag = 0;
				  preset_flash_flag = 1;
				  return;
			   }
		  }				  	  
	 }
	 
	else 
	return;
	
  }
  
}

 





 





 




void operation(void)
{
	unsigned char i;
	unsigned char j;
	
	
	switch (program_buff)
	 {
		 case 0x00 :	
		 
		 if (ac_frequency == 50)
		 stream_table_row = 0;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 1;
		 
		 ext_stream_table_row = 0;
	  
		 if (program_auto_flag == 1)
		  {
			  main_soak_time = Memo_Soak_Time_Table[water_level][texture_buff];
			  main_wash_time = Memo_Wash_Time_Table[water_level][texture_buff];  
		  }
		  
		 else if (program_auto_flag != 1)
		  {		 
			 main_soak_time = Memo_Soak_Time_Table[1][1];
			 main_wash_time = Memo_Wash_Time_Table[1][1];  
		  }
		 
		 memo_program();
		 program_left_time = program_time(Memo_Time_Table, Left_time_Colum_Table[program_buff]);
		 break;
		 
		 case 0x01 :
		 
		 if (ac_frequency == 50)
		 stream_table_row = 2;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 3;
		 
		 ext_stream_table_row = 0;

		 main_soak_time = Strong_Soak_Time_Table[water_level];
		 main_wash_time = Strong_Wash_Time_Table[water_level];
		 
		 strong_program();
		 break;
		 
		 case 0x02 :
		 
		 if (ac_frequency == 50)
		 stream_table_row = 4;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 5;
		 
		 ext_stream_table_row = 1;	 
		 
		 main_soak_time = Soft_Soak_Time;
		 main_wash_time = Soft_Wash_Time;		 
		 
		 soft_wash_program();
		 break;
		 
		 case 0x03 :
		 
		 if (ac_frequency == 50)
		 stream_table_row = 14;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 15;
		 
		 ext_stream_table_row = 1;

		 main_wash_time = Speedy_Wash_Time;		
		 	 
		 speedy_program();
		 break;
		 
		 
		 case 0x04   :										 
		 
		 if (ac_frequency == 50)
		 stream_table_row = 8;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 9;
		 
		 ext_stream_table_row = 0;
		 
		 main_soak_time = Standard_Soak_Time_Table[water_level][texture_buff];
		 main_wash_time = Standard_Soak_Time_Table[water_level][texture_buff];

		 standard_program();
		 break;
		 
		 case 0x05 :
		 
		 if (ac_frequency == 50)
		 stream_table_row = 10;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 11;
		 
		 ext_stream_table_row = 0;
		 
		 table_rom_number = j;
		 
		 main_soak_time = Child_Soak_Time;
		 main_wash_time = Child_Wash_Time;
		  
		 child_program();
		 break;
		 
		 case 0x06 :
		 
		 if (ac_frequency == 50)
		 stream_table_row = 12;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 13;
		 
		 ext_stream_table_row = 1;
		 
		 table_rom_number = j;
		 
		 main_soak_time = Wool_Soak_Time;
		 main_wash_time = Wool_Wash_Time;
		  
		 wool_program();
		 break;
		 
		 case 0x07   :
		 
		 if (ac_frequency == 50)
		 stream_table_row = 14;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 15;
		 
		 ext_stream_table_row = 1;

		 main_wash_time = Silk_Wash_Time;		 
		 		 
		 silk_program();
		 break;
		 
		 
		 case 0x8		  :
		 
		 if (ac_frequency == 50)
		 stream_table_row = 0;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 1;
		 
		 ext_stream_table_row = 0;
		 		 
		 single_wash_program();
		 break;
		 
		 
		 case 0x9		  :
		 
		 if (ac_frequency == 50)
		 stream_table_row = 0;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 1;
		 
		 ext_stream_table_row = 0;
		 		 
		 rinse_program();
		 break;
		 
		 
		 case 0xa		  :
		 
		 single_spin_program();
		 break;
		 
		 
		 case 0xb		  :
		 
		 if (ac_frequency == 50)
		 stream_table_row = 0;
		 
		 else if (ac_frequency == 60)
		 stream_table_row = 1;
		 
		 ext_stream_table_row = 0;
		 		 
		 special_program();
		 break;
				 
		 
	 };
	
  return;
	
}

 






void standard_program(void)					 
{
 if (operation_counter < 21)
  {	
	if (Standard_Time_Table[operation_counter])
	 {
		 switch (operation_counter)
		  {
			  case 0:  
			  case 13:
			  
			  inlet(Standard_Time_Table[operation_counter], 0, water_level_buff); 
			  
			  break;
			  
			  case 6:  
			  spin(Memo_Time_Table[operation_counter]);			  
			  break;
			  
			  case 7: 
			  
			  inlet(Standard_Time_Table[operation_counter], 0xaa, 0);		 
			  spin(Memo_Time_Table[operation_counter]);			  
			  break;			  
			  
			  case 8: 			  
			  spin(Memo_Time_Table[operation_counter]);  			  
			  break;
			  
			  
			  case 9: 
			  
			  inlet(Standard_Time_Table[operation_counter], 0xaa, 0);		 
			  spin(Memo_Time_Table[operation_counter]);			  
			  break;	
			  
			  
			  case 10: 			  
			  spin(Memo_Time_Table[operation_counter]);  	 
			  break;
			  
			  
			  case 14:  	  
			  wash(Memo_Time_Table[operation_counter]);
			  			  
			  if (operation_counter == 16)
			   {
				   rinse_flash_flag = 0;	  
			   }		  
			  break;
			  			  			  			  
			  
			  case 1:  
			  
			  soak_flash_flag = 1;
			  
			  soak(main_soak_time);
			  
			  if (operation_counter == 2)
			   {
				   soak_flash_flag = 0;	
				   led_disp.led_2.byte &= 0xef;	
			   }		  			  
			  break;
			  
			  case 2:  
			  
			  wash_flash_flag = 1;
			  
			  wash(main_wash_time * 60);
			  
			  if (operation_counter == 4)
			   {
				   wash_flash_flag = 0;	  
				   led_disp.led_2.byte &= 0xdf;
			   }		  
			  break;
			  
			  case 4:   
			  rinse_flash_flag = 1;
			  drain();
			  break;
			  
			  
			  case 16:   
			  if((release_save_water_flag == 0)&&(confirm_save_water_flag == 1))
			   {
				   if(save_water_once_flag == 0)
				    {
				   		run_save_water_flag = 1;			
				   		return;	   
				    }
			   }			   
			  spin_flash_flag = 1;			   
			  drain();
			  break;			  
			  
			  
			  case 17:  interm_spin(Standard_Time_Table[operation_counter]);

⌨️ 快捷键说明

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