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

📄 hp.lst

📁 MCU控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    041D F008      BCS	0x041F
(0784) 	    {
(0785) 		   port_open_machine_set();              //delay 0.6s reset port
    041E DE9D      RCALL	_port_open_machine_set
(0786) 		}
(0787) 	  if(reset_open_count>=0&&reset_open_count<reset_open_time)
    041F 918000BB  LDS	R24,_reset_open_count
    0421 3080      CPI	R24,0
    0422 F040      BCS	0x042B
    0423 318C      CPI	R24,0x1C
    0424 F430      BCC	0x042B
(0788) 	    {
(0789) 		   //PORTC|=0x30;                          //reset=1,reset_l=1
(0790) 		   DDRC|=0x30;
    0425 B384      IN	R24,0x14
    0426 6380      ORI	R24,0x30
    0427 BB84      OUT	0x14,R24
(0791) 		   PORTC&=0xcf;                          //reset=0,reset_l=0
    0428 B385      IN	R24,0x15
    0429 7C8F      ANDI	R24,0xCF
    042A BB85      OUT	0x15,R24
(0792) 		}
(0793)      /* if(reset_open_count>=reset_open_time&&reset_open_count<reset_l_open_time)
(0794) 	    {
(0795) 		   PORTC|=0x10;
(0796) 		   PORTC&=0xdf;                          //reset=0,reset_l=1
(0797) 		}*/
(0798) 		
(0799) 	  if(reset_open_count>=reset_open_time&&reset_open_count<255)
    042B 918000BB  LDS	R24,_reset_open_count
    042D 318C      CPI	R24,0x1C
    042E F048      BCS	0x0438
    042F 3F8F      CPI	R24,0xFF
    0430 F438      BCC	0x0438
(0800) 	    {
(0801) 		   //PORTC&=0xcf;                          //reset=0,reset_l=0
(0802) 		   DDRC|=0x30;
    0431 B384      IN	R24,0x14
    0432 6380      ORI	R24,0x30
    0433 BB84      OUT	0x14,R24
(0803) 		   PORTC|=0x30;                          //reset=1,reset_l=1
    0434 B385      IN	R24,0x15
    0435 6380      ORI	R24,0x30
    0436 BB85      OUT	0x15,R24
(0804) //		   PORTD|=0x10;                          
(0805) //		   PORTD&=0xdf;                          //指示灯
(0806) 		   PORTA|=0x20;
    0437 9ADD      SBI	0x1B,5
(0807) 		}
(0808) 	  if(reset_open_count>=pa0_l_open_delay&&reset_open_count<=255)
    0438 918000BB  LDS	R24,_reset_open_count
    043A 3288      CPI	R24,0x28
    043B F060      BCS	0x0448
    043C EF8F      LDI	R24,0xFF
    043D 902000BB  LDS	R2,_reset_open_count
    043F 1582      CP	R24,R2
    0440 F038      BCS	0x0448
(0809) 	    {
(0810) 		   machine_open_start=0;
    0441 2422      CLR	R2
    0442 922000B0  STS	_machine_open_start,R2
(0811) 		   vs_on_open_count=0;
    0444 922000B8  STS	_vs_on_open_count,R2
(0812) 		   reset_open_count=0;                   //防止益处,出于稳定考虑,可以省略
    0446 922000BB  STS	_reset_open_count,R2
(0813) 		}
(0814)       reset_open_count++;
    0448 918000BB  LDS	R24,_reset_open_count
    044A 5F8F      SUBI	R24,0xFF
    044B 938000BB  STS	_reset_open_count,R24
(0815)       if((PINA&0x08)==0)//开机时掉电检测PA3脚,如持续10ms则执行关机,开机操作
    044D 99CB      SBIC	0x19,3
    044E C017      RJMP	0x0466
(0816)         {
(0817) //	        UDR=22;
(0818) 			power_down_count++;
    044F 918000AC  LDS	R24,_power_down_count
    0451 5F8F      SUBI	R24,0xFF
    0452 938000AC  STS	_power_down_count,R24
(0819) 	        if((power_down_count>=20)&&(machine_open_start==0))//10ms检测
    0454 3184      CPI	R24,0x14
    0455 F080      BCS	0x0466
    0456 902000B0  LDS	R2,_machine_open_start
    0458 2022      TST	R2
    0459 F461      BNE	0x0466
(0820) 	        {
(0821) 		        power_down_count=0;
    045A 2422      CLR	R2
    045B 922000AC  STS	_power_down_count,R2
(0822) //				UDR=0x22;								   
(0823) 	            power_on_close_enable=1;       //关机使能
    045D E081      LDI	R24,1
    045E 938000FA  STS	_power_on_close_enable,R24
(0824) 			
(0825) 			    open_to_close_station=0;      //取消20s状态
    0460 922000B1  STS	_open_to_close_station,R2
(0826) 			    machine_open_start=0;         //清除10s限制
    0462 922000B0  STS	_machine_open_start,R2
(0827) 				close_machine_enable=1;       //立即关机,没有10s限制
    0464 938000AE  STS	_close_machine_enable,R24
(0828) 		     //   power_check_up=1;              //延时开机使能
(0829) 			//power_check_down=1;            //立即关机,没有10s限制
(0830) 			//open_machine();               //立即关机
(0831) 			//UDR=0x33;//测试
(0832) 	        }
(0833) 		}	
(0834)    }
(0835)  ////////////////////////////////////////////////////////////  
(0836)                                                  //counting the time during opening the machine
(0837)  if(open_to_close_station>=1)  
    0466 918000B1  LDS	R24,_open_to_close_station
    0468 3081      CPI	R24,1
    0469 F140      BCS	0x0492
(0838)    { 
(0839)      if(open_to_close_count>=open_to_close_time) //>2s
    046A 918000BD  LDS	R24,_open_to_close_count
    046C 919000BE  LDS	R25,_open_to_close_count+1
    046E 338C      CPI	R24,0x3C
    046F E0E0      LDI	R30,0
    0470 079E      CPC	R25,R30
    0471 F040      BCS	0x047A
(0840) 	    {
(0841) 		   close_machine_enable=1;               //close machine enable
    0472 E081      LDI	R24,1
    0473 938000AE  STS	_close_machine_enable,R24
(0842) 		   PORTD&= 0xdf;   //pin14  pd5=0
    0475 B382      IN	R24,0x12
    0476 7D8F      ANDI	R24,0xDF
    0477 BB82      OUT	0x12,R24
(0843)            PORTD|= 0x10;   //pin13  pd4=1		   										 
    0478 9A94      SBI	0x12,4
(0844) 		  // start_iocheck();                      //10s后第一次检测io口状态
(0845) 		}
    0479 C003      RJMP	0x047D
(0846) 	 else
(0847) 	    {
(0848) 		   close_machine_enable=0;               //if <20s then you can not close the machine
    047A 2422      CLR	R2
    047B 922000AE  STS	_close_machine_enable,R2
(0849) 		}
(0850)      open_to_close_count++;
    047D 918000BD  LDS	R24,_open_to_close_count
    047F 919000BE  LDS	R25,_open_to_close_count+1
    0481 9601      ADIW	R24,1
    0482 939000BE  STS	_open_to_close_count+1,R25
    0484 938000BD  STS	_open_to_close_count,R24
(0851) 	 if(open_to_close_count>=(open_to_close_time+1))
    0486 338D      CPI	R24,0x3D
    0487 E0E0      LDI	R30,0
    0488 079E      CPC	R25,R30
    0489 F040      BCS	0x0492
(0852) 	    {
(0853) 		   open_to_close_count=0;
    048A 2422      CLR	R2
    048B 2433      CLR	R3
    048C 923000BE  STS	_open_to_close_count+1,R3
    048E 922000BD  STS	_open_to_close_count,R2
(0854) 		   open_to_close_station=0;             //防止益处,出于稳定考虑,可以省略
    0490 922000B1  STS	_open_to_close_station,R2
(0855) 		}
(0856) 	 
(0857)    }
(0858)  //////////////////////////////////////////////////////////  
(0859)                                                 //counting the time during closing the machine
(0860)  if(close_to_open_station>=1)  
    0492 918000B2  LDS	R24,_close_to_open_station
    0494 3081      CPI	R24,1
    0495 F108      BCS	0x04B7
(0861)    {
(0862)       if(close_to_open_count>=close_to_open_time&&close_to_open_count<255)//>2s
    0496 918000BF  LDS	R24,_close_to_open_count
    0498 3288      CPI	R24,0x28
    0499 F030      BCS	0x04A0
    049A 3F8F      CPI	R24,0xFF
    049B F420      BCC	0x04A0
(0863) 	    {
(0864) 		   open_machine_enable=1;               //open machine enable
    049C E081      LDI	R24,1
    049D 938000AD  STS	_open_machine_enable,R24
(0865) 		}
    049F C003      RJMP	0x04A3
(0866) 	 else
(0867) 	    {
(0868) 		   open_machine_enable=0;               //if <2s then you can not open the machine
    04A0 2422      CLR	R2
    04A1 922000AD  STS	_open_machine_enable,R2
(0869) 		}
(0870)      close_to_open_count++;
    04A3 918000BF  LDS	R24,_close_to_open_count
    04A5 5F8F      SUBI	R24,0xFF
    04A6 938000BF  STS	_close_to_open_count,R24
(0871) 	 if(close_to_open_count>=(close_to_open_time+1)&&close_to_open_count<=255)
    04A8 3289      CPI	R24,0x29
    04A9 F068      BCS	0x04B7
    04AA EF8F      LDI	R24,0xFF
    04AB 902000BF  LDS	R2,_close_to_open_count
    04AD 1582      CP	R24,R2
    04AE F040      BCS	0x04B7
(0872) 	    {
(0873) 		   open_to_close_count=0;
    04AF 2422      CLR	R2
    04B0 2433      CLR	R3
    04B1 923000BE  STS	_open_to_close_count+1,R3
    04B3 922000BD  STS	_open_to_close_count,R2
(0874) 		   close_to_open_station=0;             //防止益处,出于稳定考虑,可以省略
    04B5 922000B2  STS	_close_to_open_station,R2
(0875) 		}
(0876)    }
(0877)  WDR();
    04B7 95A8      WDR
    04B8 9508      RET
(0878) }
(0879) //ICC-AVR application builder : 2006-10-11 下午 02:37:20
(0880) // Target : M16
(0881) // Crystal: 7.3728Mhz
(0882) 
(0883) 
(0884) //TIMER1 initialize - prescale:1024
(0885) // WGM: 0) Normal, TOP=0xFFFF
(0886) // desired value: 9Sec
(0887) // actual value:  9.000Sec (0.0%)
(0888) void timer1_init(void)
(0889) {
(0890)  TCCR1B = 0x00; //stop
_timer1_init:
    04B9 2422      CLR	R2
    04BA BC2E      OUT	0x2E,R2
(0891)  TCNT1H = 0x02; //setup
    04BB E082      LDI	R24,2
    04BC BD8D      OUT	0x2D,R24
(0892)  TCNT1L = 0xE1;
    04BD EE81      LDI	R24,0xE1
    04BE BD8C      OUT	0x2C,R24
(0893)  OCR1AH = 0xFD;
    04BF EF8D      LDI	R24,0xFD
    04C0 BD8B      OUT	0x2B,R24
(0894)  OCR1AL = 0x1F;
    04C1 E18F      LDI	R24,0x1F
    04C2 BD8A      OUT	0x2A,R24
(0895)  OCR1BH = 0xFD;
    04C3 EF8D      LDI	R24,0xFD
    04C4 BD89      OUT	0x29,R24
(0896)  OCR1BL = 0x1F;
    04C5 E18F      LDI	R24,0x1F
    04C6 BD88      OUT	0x28,R24
(0897)  ICR1H  = 0xFD;
    04C7 EF8D      LDI	R24,0xFD
    04C8 BD87      OUT	0x27,R24
(0898)  ICR1L  = 0x1F;
    04C9 E18F      LDI	R24,0x1F
    04CA BD86      OUT	0x26,R24
(0899)  TCCR1A = 0x00;
    04CB BC2F      OUT	0x2F,R2
(0900)  TCCR1B = 0x05; //start Timer
    04CC E085      LDI	R24,5
    04CD BD8E      OUT	0x2E,R24
    04CE 9508      RET
_timer1_ovf_isr:
    04CF 938A      ST	R24,-Y
    04D0 B78F      IN	R24,0x3F
    04D1 938A      ST	R24,-Y
(0901) }
(0902) 
(0903) #pragma interrupt_handler timer1_ovf_isr:9
(0904) void timer1_ovf_isr(void)
(0905) {
(0906)  //TIMER1 has overflowed
(0907)  TCNT1H = 0x02; //reload counter high value
    04D2 E082      LDI	R24,2
    04D3 BD8D      OUT	0x2D,R24
(0908)  TCNT1L = 0xE1; //reload counter low value
    04D4 EE81      LDI	R24,0xE1
    04D5 BD8C      OUT	0x2C,R24
(0909)  timer1_b=1;    //9秒计数
    04D6 E081      LDI	R24,1
    04D7 9380009E  STS	_timer1_b,R24
    04D9 9189      LD	R24,Y+
    04DA BF8F      OUT	0x3F,R24
    04DB 9189      LD	R24,Y+
    04DC 9518      RETI
(0910) }
(0911) 
(0912) 
(0913) //For NEC Code
(0914) void timer2_init(void)
(0915) {
(0916)  TCCR2 = 0x00; //stop
_timer2_init:
    04DD 2422      CLR	R2
    04DE BC25      OUT	0x25,R2
(0917)  ASSR  = 0x00; //set async mode
    04DF BC22      OUT	0x22,R2
(0918)  TCNT2 = 0xA2; //setup
    04E0 EA82      LDI	R24,0xA2
    04E1 BD84      OUT	0x24,R24
(0919)  OCR2  = 0x5E;
    04E2 E58E      LDI	R24,0x5E
    04E3 BD83      OUT	0x23,R24
(0920)  TCCR2 = 0x02; //start
    04E4 E082      LDI	R24,2
    04E5 BD85      OUT	0x25,R24
    04E6 9508      RET
_timer2_ovf_isr:
    04E7 938A      ST	R24,-Y
    04E8 939A      ST	R25,-Y
    04E9 B78F      IN	R24,0x3F
    04EA 938A      ST	R24,-Y
(0921) }
(0922) 
(0923) //For RC5 Code
(0924) /*#pragma interrupt_handler timer2_ovf_isr:5
(0925) void timer2_ovf_isr(void)
(0926) {
(0927)  WDR();
(0928)  TCNT2 = 0xCD; //reload counter value
(0929)  ///////////////////////////////
(0930)  rc5_read();
(0931)  WDR();
(0932)  if(irda_b)//收到红外键后关闭250ms
(0933)  {TCCR2=0;
(0934)  }
(0935) // TCNT2 = 0xCD; //reload counter value
(0936) }
(0937) */
(0938) 
(0939) //For NEC Code
(0940) #pragma interrupt_handler timer2_ovf_isr:5
(0941) void timer2_ovf_isr(void)
(0942) {
(0943)  TCNT2 = 0xA2; //reload counter value
    04EB EA82      LDI	R24,0xA2
    04EC BD84      OUT	0x24,R24
(0944)  
(0945)  if(BNecFallEdge==1)
    04ED 91800112  LDS	R24,_BNecFallEdge
    04EF 3081      CPI	R24,1
    04F0 F429      BNE	0x04F6
(0946)  {
(0947)   	TimeNecFallEdge++;
    04F1 91800111  LDS	R24,_TimeNecFallEdge
    04F3 5F8F      SUBI	R24,0xFF
    04F4 93800111  STS	_TimeNecFallEdge,R24
(0948)  }
(0949)  if(BHasReceiveNec==1)
    04F6 91800106  LDS	R24,_BHasReceiveNec
    04F8 3081      CPI	R24,1
    04F9 F449      BNE	0x0503
(0950)  {
(0951)     NecRepeatCodeNum++;
    04FA 91800103  LDS	R24,_NecRepeatCodeNum
    04FC 91900104  LDS	R25,_NecRepeatCodeNum+1
    04FE 9601      ADIW	R24,1
    04FF 93900104  STS	_NecRepeatCodeNum+1,R25
    0501 93800103  STS	_NecRepeatCodeNum,R24
(0952)  }
    0503 9189      LD	R24,Y+
    0504 BF8F      OUT	0x3F,R24
    0505 9199      LD	R25,Y+
    0506 9189      LD	R24,Y+
    0507 9518      RETI
_int0_isr:
    0508 940E1177  CALL	push_lset
(0953) }
(0954) 
(0955) 
(0956) #pragma interrupt_handler int0_isr:2
(0957) void int0_is

⌨️ 快捷键说明

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