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

📄 hp.lst

📁 MCU控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0603) 		    power_down_count=0;
(0604) 	       // power_on_close_enable=1;       //关机使能
(0605) 			machine_open_start=0;         //清除10s限制
(0606) 			close_machine_enable=1;       //立即关机,没有10s限制
(0607) 		  //  power_check_up=1;              //延时开机使能
(0608) 			//power_check_down=1;            //立即关机,没有10s限制
(0609) 			//open_machine();               //立即关机
(0610) 			//UDR=0x33;//测试
(0611) 	      }
(0612) 	  }*/	
(0613)    }
(0614) // else
(0615) //  {
(0616) //	   pwrbt_count=0;                      //防止益处,出于稳定考虑,可以省略
(0617) //   }
(0618)                                    
(0619) 					//开机进入第二阶段reset开始   set vs_on 
(0620)    if(machine_open_start==2)
    0322 918000B0  LDS	R24,_machine_open_start
    0324 3082      CPI	R24,2
    0325 F4B1      BNE	0x033C
(0621) 	  {
(0622) 	    vs_on_open_count++;
    0326 918000B8  LDS	R24,_vs_on_open_count
    0328 5F8F      SUBI	R24,0xFF
    0329 938000B8  STS	_vs_on_open_count,R24
(0623) 	    if(vs_on_open_count>vs_on_open_time&&vs_on_open_count<=255)
    032B E184      LDI	R24,0x14
    032C 902000B8  LDS	R2,_vs_on_open_count
    032E 1582      CP	R24,R2
    032F F460      BCC	0x033C
    0330 EF8F      LDI	R24,0xFF
    0331 1582      CP	R24,R2
    0332 F048      BCS	0x033C
(0624) 		   {
(0625) 		     // PORTD|=0x40;               //vs_on=1
(0626) 			  PORTD&=0xff;               //vs_on=0
    0333 B382      IN	R24,0x12
    0334 7F8F      ANDI	R24,0xFF
    0335 BB82      OUT	0x12,R24
(0627)     	//	  PORTD&= 0xdf;   //pin14  pd5=0
(0628) 		//	  PORTD&= 0xef;   //pin13  pd4=0
(0629) 			  machine_open_start=3;
    0336 E083      LDI	R24,3
    0337 938000B0  STS	_machine_open_start,R24
(0630) 			  vs_on_open_count=0;        //防止益处,出于稳定考虑,可以省略
    0339 2422      CLR	R2
    033A 922000B8  STS	_vs_on_open_count,R2
(0631) 		   }
(0632) 	/****************	   
(0633)         if((PINA&0x08)==0)//开机时掉电检测PA3脚,如持续10ms则执行关机,开机操作
(0634)         {
(0635) 	        power_down_count++;
(0636) 	        if(power_down_count>=10)//10ms检测
(0637) 	        {
(0638) 		        power_down_count=0;
(0639) //	            power_on_close_enable=1;       //关机使能
(0640) 			
(0641) 			  //  open_to_close_station=0;      //取消20s状态
(0642) 			    machine_open_start=0;         //清除10s限制
(0643) 			    close_machine_enable=1;       //立即关机,没有10s限制
(0644) 		     //   power_check_up=1;              //延时开机使能
(0645) 			//power_check_down=1;            //立即关机,没有10s限制
(0646) 			//open_machine();               //立即关机
(0647) 			//UDR=0x33;//测试
(0648) 	        }
(0649) 	     }************/
(0650) 	  }
(0651)     
(0652) //////////////////////////////////////////////////////////////
(0653)                                       
(0654) 									      //关机代码
(0655)     if(machine_close_start==1)
    033C 918000AF  LDS	R24,_machine_close_start
    033E 3081      CPI	R24,1
    033F F009      BEQ	0x0341
    0340 C060      RJMP	0x03A1
(0656) 	  {
(0657) 	     if(reset_close_count>=reset_close_time&&reset_close_count<reset_l_close_time)
    0341 918000BA  LDS	R24,_reset_close_count
    0343 3382      CPI	R24,0x32
    0344 F028      BCS	0x034A
    0345 3580      CPI	R24,0x50
    0346 F418      BCC	0x034A
(0658) 		   {
(0659) 		      PORTA&=0xfe;                //pa0=0  实现关机静音;
    0347 B38B      IN	R24,0x1B
    0348 7F8E      ANDI	R24,0xFE
    0349 BB8B      OUT	0x1B,R24
(0660) 		   }
(0661) 		if((reset_close_count>=reset_l_close_time)&&(reset_close_count<255))
    034A 918000BA  LDS	R24,_reset_close_count
    034C 3580      CPI	R24,0x50
    034D F058      BCS	0x0359
    034E 3F8F      CPI	R24,0xFF
    034F F448      BCC	0x0359
(0662) 		   {
(0663) 		      //PORTC|=0x30;                //reset=1,reset_l=1
(0664) 			  DDRC|=0x30;
    0350 B384      IN	R24,0x14
    0351 6380      ORI	R24,0x30
    0352 BB84      OUT	0x14,R24
(0665) 		      PORTC&=0xcf;                //reset=0,reset_l=0
    0353 B385      IN	R24,0x15
    0354 7C8F      ANDI	R24,0xCF
    0355 BB85      OUT	0x15,R24
(0666) 			  PORTA&=0xdf;                //pa5=0 IR_SW关闭;这一轮板R1074应不装 
    0356 B38B      IN	R24,0x1B
    0357 7D8F      ANDI	R24,0xDF
    0358 BB8B      OUT	0x1B,R24
(0667) 		   }
(0668) 		 reset_close_count++;
    0359 918000BA  LDS	R24,_reset_close_count
    035B 5F8F      SUBI	R24,0xFF
    035C 938000BA  STS	_reset_close_count,R24
(0669) 		 rly_on_count++;
    035E 918000B9  LDS	R24,_rly_on_count
    0360 5F8F      SUBI	R24,0xFF
    0361 938000B9  STS	_rly_on_count,R24
(0670) 		 if((reset_close_count>rly_on_time)&&(reset_close_count<=255))
    0363 EC88      LDI	R24,0xC8
    0364 902000BA  LDS	R2,_reset_close_count
    0366 1582      CP	R24,R2
    0367 F420      BCC	0x036C
    0368 EF8F      LDI	R24,0xFF
    0369 1582      CP	R24,R2
    036A F008      BCS	0x036C
(0671) 		   {
(0672) 	         // DDRC|=0x04;
(0673) 		      //PORTC&=0xfb;                //rly_on=0
(0674) 			  PORTC|=0x04;                    //rly_on=1
    036B 9AAA      SBI	0x15,2
(0675) 			 // rly_on_count=0;
(0676) 		   }
(0677) 		 vs_on_close_count++;
    036C 918000B7  LDS	R24,_vs_on_close_count
    036E 5F8F      SUBI	R24,0xFF
    036F 938000B7  STS	_vs_on_close_count,R24
(0678) 		 if((reset_close_count>vs_on_close_time)&&(reset_close_count<255)) 
    0371 ED8C      LDI	R24,0xDC
    0372 902000BA  LDS	R2,_reset_close_count
    0374 1582      CP	R24,R2
    0375 F4C0      BCC	0x038E
    0376 2D82      MOV	R24,R2
    0377 3F8F      CPI	R24,0xFF
    0378 F4A8      BCC	0x038E
(0679) 		   {
(0680) 		     // PORTD&=0xbf;                //vs_on=0;
(0681) 			  PORTD|=0x40;               //vs_on=1
    0379 9A96      SBI	0x12,6
(0682) 			  vs_on_close_count=0;
    037A 2422      CLR	R2
    037B 922000B7  STS	_vs_on_close_count,R2
(0683) 			  reset_close_count=0;
    037D 922000BA  STS	_reset_close_count,R2
(0684) 			  rly_on_count=0;
    037F 922000B9  STS	_rly_on_count,R2
(0685) 			  close_to_open_station=1;
    0381 E081      LDI	R24,1
    0382 938000B2  STS	_close_to_open_station,R24
(0686) 			  machine_close_start=0;
    0384 922000AF  STS	_machine_close_start,R2
(0687) 			  PORTD&=0xef;
    0386 B382      IN	R24,0x12
    0387 7E8F      ANDI	R24,0xEF
    0388 BB82      OUT	0x12,R24
(0688) 		      PORTD|=0x20;                //指示灯
    0389 9A95      SBI	0x12,5
(0689) 			  port_close_machine_set();   //set the port after you close the machine
    038A DF3C      RCALL	_port_close_machine_set
(0690) 			  System_State=standby;
    038B 2422      CLR	R2
    038C 92200069  STS	_System_State,R2
(0691) 			   
(0692) 		   }
(0693) 		 if(reset_close_count>(vs_on_close_count+1)&&reset_close_count<=255)
    038E 918000B7  LDS	R24,_vs_on_close_count
    0390 5F8F      SUBI	R24,0xFF
    0391 902000BA  LDS	R2,_reset_close_count
    0393 1582      CP	R24,R2
    0394 F460      BCC	0x03A1
    0395 EF8F      LDI	R24,0xFF
    0396 1582      CP	R24,R2
    0397 F048      BCS	0x03A1
(0694) 		   {
(0695) 			  reset_close_count=0;
    0398 2422      CLR	R2
    0399 922000BA  STS	_reset_close_count,R2
(0696) 			  rly_on_count=0;
    039B 922000B9  STS	_rly_on_count,R2
(0697) 			  vs_on_close_count=0;
    039D 922000B7  STS	_vs_on_close_count,R2
(0698) 			  machine_close_start=0;
    039F 922000AF  STS	_machine_close_start,R2
(0699) 		   }                              //防止益处,出于稳定考虑,可以省略
(0700) 	  }
(0701) 
(0702) //////////////////////////////////////////////////////pw_key open the machine
(0703) /*##############################################################*/
(0704) 
(0705)   if(tv_state)  //开机时检测
    03A1 902000F9  LDS	R2,_tv_state
    03A3 2022      TST	R2
    03A4 F0F1      BEQ	0x03C3
(0706)   {
(0707)     if((PINA&0x08)==0)//开机时掉电检测PA3脚,如持续10ms则执行关机,开机操作
    03A5 99CB      SBIC	0x19,3
    03A6 C018      RJMP	0x03BF
(0708)      {
(0709) 	    power_down_count++;
    03A7 918000AC  LDS	R24,_power_down_count
    03A9 5F8F      SUBI	R24,0xFF
    03AA 938000AC  STS	_power_down_count,R24
(0710) 	    if((power_down_count>=20)&&(machine_open_start==0))//10ms检测
    03AC 3184      CPI	R24,0x14
    03AD F108      BCS	0x03CF
    03AE 902000B0  LDS	R2,_machine_open_start
    03B0 2022      TST	R2
    03B1 F4E9      BNE	0x03CF
(0711) 	      {
(0712) 		    power_down_count=0;
    03B2 2422      CLR	R2
    03B3 922000AC  STS	_power_down_count,R2
(0713) 			
(0714) 	        power_on_close_enable=1;       //关机使能
    03B5 E081      LDI	R24,1
    03B6 938000FA  STS	_power_on_close_enable,R24
(0715) 			open_to_close_station=0;      //取消20s状态
    03B8 922000B1  STS	_open_to_close_station,R2
(0716) 			//machine_open_start=0;         //清除10s限制
(0717) 			close_machine_enable=1;       //立即关机,没有10s限制
    03BA 938000AE  STS	_close_machine_enable,R24
(0718) 		    power_check_up=1;              //延时开机使能
    03BC 938000AB  STS	_power_check_up,R24
(0719) //			power_check_down=1;            //立即关机,没有10s限制
(0720) 			//open_machine();               //立即关机
(0721) 			
(0722) 	      }
(0723) 	 }
    03BE C010      RJMP	0x03CF
(0724)     else                                 //为0正常
(0725)      {
(0726) 	        power_down_count=0;              //计数器清零
    03BF 2422      CLR	R2
    03C0 922000AC  STS	_power_down_count,R2
(0727) 	 }
(0728)   }
    03C2 C00C      RJMP	0x03CF
(0729)   else         
(0730)   {                                   //关机时检测是否需要掉电开机
(0731)   
(0732)      if(power_check_up)               //开机
    03C3 902000AB  LDS	R2,_power_check_up
    03C5 2022      TST	R2
    03C6 F041      BEQ	0x03CF
(0733) 		{
(0734) 		 
(0735) 		  power_down_count=0;
    03C7 2422      CLR	R2
    03C8 922000AC  STS	_power_down_count,R2
(0736) 		  
(0737) 		  power_check_up=0;
    03CA 922000AB  STS	_power_check_up,R2
(0738) 		  power_key_open_enable=1;
    03CC E081      LDI	R24,1
    03CD 938000FB  STS	_power_key_open_enable,R24
(0739) 		
(0740) 		}
(0741)   }	 
(0742) 	  
(0743)  WDR();
    03CF 95A8      WDR
    03D0 9508      RET
_timer0_ovf_isr:
    03D1 922A      ST	R2,-Y
    03D2 938A      ST	R24,-Y
    03D3 939A      ST	R25,-Y
    03D4 B62F      IN	R2,0x3F
    03D5 922A      ST	R2,-Y
(0744)   
(0745) }
(0746) #pragma interrupt_handler timer0_ovf_isr:10
(0747) void timer0_ovf_isr(void)
(0748) {
(0749)  //WDR();
(0750)  TCNT0 = 0x8D; //reload counter value
    03D6 E88D      LDI	R24,0x8D
    03D7 BF82      OUT	0x32,R24
(0751)  time0_b=1;
    03D8 E081      LDI	R24,1
    03D9 938000A0  STS	_time0_b,R24
(0752)  time0_num++;
    03DB 918000A2  LDS	R24,_time0_num
    03DD 5F8F      SUBI	R24,0xFF
    03DE 938000A2  STS	_time0_num,R24
(0753)  time1_num++;
    03E0 918000A1  LDS	R24,_time1_num
    03E2 5F8F      SUBI	R24,0xFF
    03E3 938000A1  STS	_time1_num,R24
(0754)  
(0755)  
(0756)  if(time1_num>=50)//time时间计时
    03E5 3382      CPI	R24,0x32
    03E6 F030      BCS	0x03ED
(0757)    {
(0758)      time1_num=0;
    03E7 2422      CLR	R2
    03E8 922000A1  STS	_time1_num,R2
(0759)      time1_b=1;
    03EA E081      LDI	R24,1
    03EB 9380009F  STS	_time1_b,R24
(0760)    }
(0761)  if(key_open)     //按键保持时间计数
    03ED 902000A3  LDS	R2,_key_open
    03EF 2022      TST	R2
    03F0 F049      BEQ	0x03FA
(0762)  {
(0763)    keycl_num++;
    03F1 91800094  LDS	R24,_keycl_num
    03F3 91900095  LDS	R25,_keycl_num+1
    03F5 9601      ADIW	R24,1
    03F6 93900095  STS	_keycl_num+1,R25
    03F8 93800094  STS	_keycl_num,R24
(0764)  }
(0765)  if(irda_b)       //红外键处理
    03FA 902000F7  LDS	R2,_irda_b
    03FC 2022      TST	R2
    03FD F089      BEQ	0x040F
(0766)  {
(0767)     irda_num++;
    03FE 918000F8  LDS	R24,_irda_num
    0400 5F8F      SUBI	R24,0xFF
    0401 938000F8  STS	_irda_num,R24
(0768) 	if(irda_num>IRDA_WAIT)
    0403 EF8A      LDI	R24,0xFA
    0404 902000F8  LDS	R2,_irda_num
    0406 1582      CP	R24,R2
    0407 F438      BCC	0x040F
(0769) 	{
(0770) 	  TCCR2=0x02;
    0408 E082      LDI	R24,2
    0409 BD85      OUT	0x25,R24
(0771) 	  irda_b=0;
    040A 2422      CLR	R2
    040B 922000F7  STS	_irda_b,R2
(0772) 	  irda_num=0;
    040D 922000F8  STS	_irda_num,R2
(0773) 	}
(0774)  } 
    040F 9029      LD	R2,Y+
    0410 BE2F      OUT	0x3F,R2
    0411 9199      LD	R25,Y+
    0412 9189      LD	R24,Y+
    0413 9029      LD	R2,Y+
    0414 9518      RETI
(0775)  // WDR();
(0776) // TCNT0 = 0x8D; //reload counter value
(0777) }
(0778) //##########################原time1定时器代码
(0779) void time1_cl(void)
(0780) {
(0781)     if(machine_open_start==3)                       //开机进入第三阶段reset开始
_time1_cl:
    0415 918000B0  LDS	R24,_machine_open_start
    0417 3083      CPI	R24,3
    0418 F009      BEQ	0x041A
    0419 C04C      RJMP	0x0466
(0782)    {  
(0783) 	  if(reset_open_count>=port_open_machine_delaytime)//call port_open_machine_set
    041A 918000BB  LDS	R24,_reset_open_count
    041C 308C      CPI	R24,0xC

⌨️ 快捷键说明

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