📄 hp.lst
字号:
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 + -