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