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

📄 icc(atmega16).c

📁 滚筒洗衣机AVR(ATmega16芯片) c源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
 {
  if(temp_ad>0x03F0)   //开路
  f10.bit.sensor_erred=1;
  else if(temp_ad<0x30)//短路
  {
  if((f3.bit.prog_end==1)||(f11.bit.test_prog_end==1))
  f10.bit.sensor_erred=1;
  }
 }
}

void motor_err(void)
{
 if(f4.bit.motor_run==1)
 {
  if(CHKBIT(PORTD,speed_in))
  {
   motor_count++;
   if(motor_count>=10)
   {
    motor_count=0;
	f11.bit.motor_erred=1;
   }
   }
  }
}

void process_err(void)
{
  bumpa_off;
  bumpb_off;
  bumpc_off;
  bumph_off;
  heat_off;
  direct_off;
  motor_off;
  door_off;
  if((f10.bit.abnormality_temp_erred==1)||(f10.bit.overflow_erred==1))
  drain_on;  
  else drain_off; 
}

void check_err(void)
{
if((f2.bit.started==1)||(f1.bit.tested==1))
 {
 enter_water_err();
 drain_err();
 overflow_err();
 door_lock_err();
 rise_temp_err();
 abnormality_temp_err();
 sensor_err();
 motor_err();
 }
}

void check_key_10m(void)
{
 if((f2.bit.started==0)&&(f2.bit.powered==1))
 {
 if(f1.bit.doored==0)
 {
 if(!f0.byte&0x3f)
  {
   t_1m_count++;
   if(t_1m_count>=10)
   {
    t_1m_count=0;
    f2.bit.powered=0;
   }   
 }
 else {f0.byte=0;t_1m_count=0;}
 }
 }
}

void speed_select(void)
{
 if(!CHKBIT(PINC,speed_set))
   f1.bit.speed_selected=1;
 else f1.bit.speed_selected=0;
}

void heat_select(void)
{
 if(!CHKBIT(PINC,mode_set))
   f1.bit.heated=1;
 else f1.bit.heated=0;
}

void time_on(void)
{
 if(flag_time>=1)
  {
 if(f2.bit.started==1)
  {
 // flag_time=2;
  time_t_1h_count++;
  if(time_t_1h_count>=60)
    {
	 time_t_1h_count=0;
	 time_data--;
	 if(time_data==0) 
	 {time_data=0;flag_time=0;}
    }
   }
  }
}

void spin2(void)
{
    spin_on; 
	f4.bit.motor_run=1; 
	low_spin_count++;
	if(low_spin_count<=6) f4.bit.s_55=1;
	else if(low_spin_count<=60) {f4.bit.s_55=0;f4.bit.s_93=1;}
	else if(low_spin_count<=120) {f4.bit.s_93=0;f4.bit.s_500=1;}
	else if(low_spin_count<=300) {f4.bit.s_500=0;f4.bit.s_800=1;}  
	else  {f4.bit.s_800=0;f4.bit.motor_run=0;low_spin_count=0;}	
}

void spin1(void)
{
    spin_on; 
	f4.bit.motor_run=1; 
	low_spin_count++;
	if(low_spin_count<=6)  f4.bit.s_55=1;
	else if(low_spin_count<=60) {f4.bit.s_55=0;f4.bit.s_93=1;}
	else if(low_spin_count<=120) {f4.bit.s_93=0;f4.bit.s_500=1;} 
	else {f4.bit.s_500=0;f4.bit.motor_run=0;low_spin_count=0;}	
}

void wash_cycle2(void)  //逆时针11秒 停止4秒,顺时针11秒 停止4秒
{
   wash_on;
   f4.bit.s_55=1; 
   wash_time_count++;
   if(wash_time_count<=11)
     {
     direct_on;
	 f4.bit.motor_run=1;
	 }
   else if(wash_time_count<=15)
	 f4.bit.motor_run=0; 
   else if(wash_time_count<=26)
     {
     direct_off;
	 f4.bit.motor_run=1;
	 }
   else if(wash_time_count<=30)
	 f4.bit.motor_run=0;
   else
     {
	 wash_time_count=0;
	 f4.bit.s_55=0;
	}
}


void wash_cycle1(void)//逆时针6秒 停止9秒,顺时针6秒 停止9秒
{
   wash_on;
   f4.bit.s_55=1; 
   wash_time_count++;
   if(wash_time_count<=6)
     {
     direct_on;
	 f4.bit.motor_run=1;
	 }
   else if(wash_time_count<=15)
	 f4.bit.motor_run=0; 
   else if(wash_time_count<=21)
     {
     direct_off;
	 f4.bit.motor_run=1;
	 }
   else if(wash_time_count<=29)
	 f4.bit.motor_run=0;
   else 
      {
	 wash_time_count=0;
	 f4.bit.s_55=0;
	}
  
}


void test_step1(void)
{
    test_time_count++;
    if(f1.bit.water1ed==0)  bumpa_on;
    else 
	  {
	  bumpa_off;
	  wash_cycle2();
	  if(test_time_count>=60)
	  {
	   drain_on;
	   if(test_time_count>=80)
	   {
	   test_time_count=0;
	   f4.bit.motor_run=0;
       drain_off;
	   f11.bit.step1_end=1;
       }
	  }
	 }
}

void test_step2(void)
{
    test_time_count++;
    if(f1.bit.water1ed==0)  bumpb_on;
    else 
	  {
	  bumpb_off;
	  wash_cycle2();
	  if(test_time_count>=60)
	  {
	   drain_on;
	   if(test_time_count>=80)
	   {
	   test_time_count=0;
	   f4.bit.motor_run=0;
       drain_off;
	   f11.bit.step2_end=1;
       }
	  }
	 }
}

void test_step3(void)
{
    test_time_count++;
    if(f1.bit.water1ed==0)  bumpc_on;
    else 
	  {
	  bumpc_off;
	  wash_cycle2();
	  if(test_time_count>=60)
	  {
	   drain_on;
	   if(test_time_count>=80)
	   {
	   test_time_count=0;
	   f4.bit.motor_run=0;
       drain_off;
	   f11.bit.step3_end=1;
       }
	  }
	 }
}

void test_step4(void)
{
    test_time_count++;
    if(f1.bit.water1ed==0)  bumph_on;//主水阀开?
    else 
	  {
	  bumph_off;
	  wash_cycle2();
	  if(test_time_count>=60)
	  {
	   drain_on;
	   if(test_time_count>=80)
	   {
	   test_time_count=0;
	   f4.bit.motor_run=0;
       drain_off;
	   f11.bit.step4_end=1;
       }
	  }
	 }
}

void test_step5(void)
{
   test_time_count++;
   drain_on;
   if(test_time_count<=180)
    {
	if(f1.bit.water1ed==0)
	spin2();
	}
   else
	 {
	  test_time_count=0;
	  f4.bit.motor_run=0;
	  drain_off;
	  f11.bit.step5_end=1;
	 }
}


void prewash(void)//当选棉麻或丝绒 14分
{
 if(flag_prewash>=1)
   {
    flag_prewash=2;
 if(wash_t<2)
    {
     f8.bit.water_in=1;
     if(f1.bit.water1ed==1) wash_cycle2();
    }
 else if(wash_t<12) wash_cycle2();
 else if(wash_t<14)
  {
     wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_on;
	 if(f1.bit.water1ed==0)
	 {
//	 wash_cycle_2();
	 spin1();
	  }
    }
 else
	{
	 f4.bit.motor_run=0;
	 low_spin_count=0;
	 wash_t=0;
	 flag_prewash=0;
	 drain_off;
	 }
  }
}

void washing(void)//丝绒
{
 if(flag_wash>=1)
   {
    flag_wash=2;
 if(wash_t<2)
    {
     f8.bit.water_in=1;
     if(f1.bit.water1ed==1) wash_cycle2();
    }
 else if(wash_t<43) wash_cycle2();
 else if(wash_t<45)
   {
     wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_on;
	 if(f1.bit.water1ed==0)
	 {
//	 wash_cycle_2();
	 spin1();
	  }
    }
 else
	{
	 f4.bit.motor_run=0;
	 low_spin_count=0;
	 wash_t=0;
	 flag_wash=0;
	 drain_off;
	 }
  }
}
 
void strongwash(void)//棉麻
{
 if(flag_wash>=1)
   {
    flag_wash=2;
 if(wash_t<2)
    {
     f8.bit.water_in=1;
     if(f1.bit.water1ed==1) wash_cycle2();
    }
 else if(wash_t<83) wash_cycle2();
 else if(wash_t<85)
   {
     wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_on;
	 if(f1.bit.water1ed==0)
	 {
//	 wash_cycle_2();
	 spin1();
	  }
    }
 else
	{
	 f4.bit.motor_run=0;
	 low_spin_count=0;
	 wash_t=0;
	 flag_wash=0;
	 drain_off;
	 }
  }
}

void softwash(void)//化纤
{
 if(flag_wash>=1)
   {
    flag_wash=2;
 if(wash_t<2)
    {
     f8.bit.water_in=1;
     if(f1.bit.water1ed==1) wash_cycle1();
    }
 else if(wash_t<63) wash_cycle1();
 else if(wash_t<65)
   {
     wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_on;
	 if(f1.bit.water1ed==0)
	 {
//	 wash_cycle_2();
	 spin1();
	  }
    }
 else
	{
	 f4.bit.motor_run=0;
	 low_spin_count=0;
	 wash_t=0;
	 flag_wash=0;
	 drain_off;
	 }
  }
}

void quickwash(void)//毛料
{
 if(flag_wash>=1)
   {
    flag_wash=2;
 if(wash_t<2)
    {
     f8.bit.water_in=1;
     if(f1.bit.water1ed==1) wash_cycle2();
    }
 else if(wash_t<23) wash_cycle2();
 else if(wash_t<25)
   {
     wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_on;
	 if(f1.bit.water1ed==0)
	 {
//	 wash_cycle_2();
	 spin1();
	  }
    }
 else
	{
	 f4.bit.motor_run=0;
	 low_spin_count=0;
	 wash_t=0;
	 flag_wash=0;
	 drain_off;
	 }
  }
}

void rinse(void)//一般飘洗,棉麻,丝绒,毛料
{
   if(flag_rinse>=1)
   {
   flag_rinse=2;
   if(wash_t<1) f8.bit.water_in=1;
   else if(wash_t<11) wash_cycle2();
   else if(wash_t<13) 
    {
	 wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_on;
	 if(f1.bit.water1ed==0)
	 {
	//	 wash_cycle_2();
     spin1();
	  }
     }
   else
	{
     f4.bit.motor_run=0;
	 low_spin_count=0;
	 wash_t=0;
	 flag_rinse=0;
	 drain_off;
	 }
   }
}
void softrinse(void)//化纤
{
   if(flag_rinse>=1)
   {
   flag_rinse=2;
   if(wash_t<1) f8.bit.water_in=1;
   else if(wash_t<11) wash_cycle1();
   else if(wash_t<13) 
    {
	 wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_on;
	 if(f1.bit.water1ed==0)
	 {
	//	 wash_cycle_2();
     spin1();
	  }
     }
   else
	{
     f4.bit.motor_run=0;
	 low_spin_count=0;
	 wash_t=0;
	 flag_rinse=0;
	 drain_off;
	 }
   }
}

void spin(void)//一般脱水,棉麻,丝绒
{
 if(flag_spin>=1)
  {
   flag_spin=2;  
   if(wash_t<2) 
    {
    drain_on;
    if(f1.bit.water1ed==0) spin2(); 
    }
   else if(wash_t<=6) spin2(); 
   else if(wash_t<=8)
    {
	 f4.bit.motor_run=0;
	 low_spin_count=0;
     wash_cycle2();//松化
	}
   else 
    {
	 wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_off;
	 wash_t=0;
	 flag_spin=0;
	}
}
}
 

void soft_lastspin(void)//化纤
{
   if(flag_spin>=1)
  {
   flag_spin=2;  
   if(wash_t<=8) 
    {
	 f4.bit.motor_run=1;
	//f4.bit.s_55=1;
	}
    else 
    {
	 wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_off;
	 wash_t=0;
	 flag_spin=0;
	}
	
  }
}
/************************************
void soft_lastspin(void)//化纤
{
   if(flag_spin>=1)
  {
   flag_spin=2;  
   if(wash_t<2) 
    {
    drain_on;
    if(f1.bit.water1ed==0) spin1(); 
    }
   else if(wash_t<=6) spin1(); 
   else if(wash_t<=8)
    {
	 f4.bit.motor_run=0;
	 low_spin_count=0;
     wash_cycle1();//松化
	}
   else 
    {
	 wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_off;
	 wash_t=0;
	 flag_spin=0;
	}
  }
}
************************************/

void quickwash_lastspin(void)//毛料
{
  
   if(flag_spin>=1)
  {
   flag_spin=2;  
   if(wash_t<2) 
    {
    drain_on;
    if(f1.bit.water1ed==0) spin2(); 
    }
   else if(wash_t<=6) spin2(); 
   else if(wash_t<=8)
    {
	 f4.bit.motor_run=0;
	 low_spin_count=0;
     wash_cycle1();//松化
	}
   else 
    {
	 wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_off;
	 wash_t=0;
	 flag_spin=0;
	}
   }
 }    

void extrinse(void)
{
   if(flag_extrinse>=1)
   {
   flag_extrinse=2;
   if(wash_t<1) f8.bit.water_in=1;
   else if(wash_t<6) wash_cycle2();
   else if(wash_t<8) 
    {
	 wash_time_count=0;
	 f4.bit.motor_run=0;
	 drain_on;
	 if(f1.bit.water1ed==0)
	 {
	//	 wash_cycle_2();
     spin1();
	  }
     }
   else
	{
     f4.bit.motor_run=0;
	 low_spin_count=0;
	 wash_t=0;
	 flag_extrinse=0;
	 drain_off;
	 }
   }
}
 
void wash_program1(void)
{
   if(flag_wash>=1) strongwash();
   if((flag_extrinse>=1)&&(flag_wash==0)) extrinse();
   if((flag_wash==0)&&(flag_rinse>=1)&&(flag_extrinse==0)) rinse();
   if((flag_spin>=1)&&(flag_rinse==0)) spin();
   if(flag_spin==0)
     {
	  f2.bit.started=0;
	  f7.bit.wash_prog1=0;
	  f3.bit.prog_end=1;
     }
}

void wash_program2(void)
{
   if(flag_prewash>=1) prewash();
   if((flag_wash>=1)&&(flag_prewash==0)) strongwash();
   if((flag_extrinse>=1)&&(flag_wash==0)&&(flag_prewash==0)) extrinse();
   if((flag_prewash==0)&&(flag_wash==0)&&(flag_extrinse==0)&&(flag_rinse>=1)) rinse();
   if((flag_spin>=1)&&(flag_rinse==0)) spin();
   if(flag_spin==0)
    {
	 f2.bit.started=0;
	 f7.bit.wash_prog7=0;
	 f3.bit.prog_end=1;
     }
}

⌨️ 快捷键说明

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