📄 hptv.lis
字号:
03F0 .dbline 519
03F0 ; PORTC|=(1<<RS232_SW1); //1
03F0 AE9A sbi 0x15,6
03F2 .dbline 520
03F2 ; PORTC&=~(1<<RS232_SW2); //0 --串口初始化
03F2 AF98 cbi 0x15,7
03F4 .dbline 524
03F4 ;
03F4 ; // PORTC = 0x0c; //m103 output only 串口切换为00---mcu通道
03F4 ;
03F4 ; DDRC = 0xf4; //pwrbt 去掉更改为备用的实时的中断输入引脚;
03F4 84EF ldi R24,244
03F6 84BB out 0x14,R24
03F8 .dbline 525
03F8 ; PORTD = 0x60;
03F8 80E6 ldi R24,96
03FA 82BB out 0x12,R24
03FC .dbline 526
03FC ; DDRD = 0xF3;
03FC 83EF ldi R24,243
03FE 81BB out 0x11,R24
0400 .dbline 528
0400 ;
0400 ; WDR();
0400 A895 wdr
0402 .dbline -2
0402 L53:
0402 .dbline 0 ; func end
0402 0895 ret
0404 .dbend
0404 .dbfunc e watchdog_init _watchdog_init fV
.even
0404 _watchdog_init::
0404 .dbline -1
0404 .dbline 540
0404 ; }
0404 ;
0404 ;
0404 ;
0404 ;
0404 ;
0404 ; /******************************************
0404 ; //Watchdog initialize
0404 ; // prescale: 1024K
0404 ; ******************************************/
0404 ; void watchdog_init(void)
0404 ; {
0404 .dbline 541
0404 ; WDR(); //this prevents a timout on enabling
0404 A895 wdr
0406 .dbline 542
0406 ; WDTCR = 0x0E; //WATCHDOG ENABLED - dont forget to issue WDRs
0406 8EE0 ldi R24,14
0408 81BD out 0x21,R24
040A .dbline -2
040A L54:
040A .dbline 0 ; func end
040A 0895 ret
040C .dbend
040C .dbfunc e timer0_init _timer0_init fV
.even
040C _timer0_init::
040C .dbline -1
040C .dbline 556
040C ; }
040C ;
040C ;
040C ;
040C ; /*****************************************
040C ; //TIMER0 initialize - prescale:64
040C ; // WGM: Normal
040C ; // desired value: 1KHz
040C ; // actual value: 1.002KHz (0.2%)
040C ; //主要实现时序中的毫秒级的计数
040C ; //同时实现输入端口的电平检测
040C ; *****************************************/
040C ; void timer0_init(void)
040C ; {
040C .dbline 557
040C ; TCCR0 = 0x00; //stop
040C 2224 clr R2
040E 23BE out 0x33,R2
0410 .dbline 558
0410 ; TCNT0 = 0x8D; //set count
0410 8DE8 ldi R24,141
0412 82BF out 0x32,R24
0414 .dbline 559
0414 ; OCR0 = 0x73; //set compare
0414 83E7 ldi R24,115
0416 8CBF out 0x3c,R24
0418 .dbline 560
0418 ; TCCR0 = 0x03; //start timer
0418 83E0 ldi R24,3
041A 83BF out 0x33,R24
041C .dbline -2
041C L55:
041C .dbline 0 ; func end
041C 0895 ret
041E .dbend
041E .dbfunc e time0_cl _time0_cl fV
.even
041E _time0_cl::
041E .dbline -1
041E .dbline 563
041E ; }
041E ; void time0_cl(void)
041E ; {
041E .dbline 564
041E ; if(machine_open_start==1) //开机进入第一阶段reset未开始
041E 80914700 lds R24,_machine_open_start
0422 8130 cpi R24,1
0424 A9F5 brne L57
0426 .dbline 565
0426 ; {
0426 .dbline 573
0426 ;
0426 ; /* if(pwrbt_count>=0&&pwrbt_count<pwrbt_high_time)
0426 ; {
0426 ; DDRC|=0x08;
0426 ; PORTC|=0x08; //pwrbt=1
0426 ; }
0426 ; */
0426 ; if(pwrbt_count>=pwrbt_high_time&&pwrbt_count<pwrbt_low_time)
0426 80915300 lds R24,_pwrbt_count
042A 8A30 cpi R24,10
042C 38F0 brlo L59
042E 8F30 cpi R24,15
0430 28F4 brsh L59
0432 .dbline 574
0432 ; {
0432 .dbline 577
0432 ; // DDRC|=0x08;
0432 ; // PORTC&=0xf7; //pwrbt=0
0432 ; open_to_close_station=0; //强制赋值,出于稳定考虑,可以省略
0432 2224 clr R2
0434 20924800 sts _open_to_close_station,R2
0438 .dbline 578
0438 ; close_machine_enable=0; //强制赋值,出于稳定考虑,可以省略
0438 20924500 sts _close_machine_enable,R2
043C .dbline 579
043C ; }
043C L59:
043C .dbline 580
043C ; if(pwrbt_count>=pwrbt_low_time&&pwrbt_count<255)
043C 80915300 lds R24,_pwrbt_count
0440 8F30 cpi R24,15
0442 B8F0 brlo L61
0444 8F3F cpi R24,255
0446 A8F4 brsh L61
0448 .dbline 581
0448 ; {
0448 .dbline 583
0448 ; // PORTC|=0x04; //rly_on=1
0448 ; PORTC&=0xfb; //rly_on=0
0448 85B3 in R24,0x15
044A 8B7F andi R24,251
044C 85BB out 0x15,R24
044E .dbline 584
044E ; open_to_close_count=0;
044E 2224 clr R2
0450 3324 clr R3
0452 30925500 sts _open_to_close_count+1,R3
0456 20925400 sts _open_to_close_count,R2
045A .dbline 585
045A ; vs_on_open_count=0;
045A 20924F00 sts _vs_on_open_count,R2
045E .dbline 586
045E ; reset_open_count=0; //强制付值,出于稳定考虑,可以省略
045E 20925200 sts _reset_open_count,R2
0462 .dbline 587
0462 ; machine_open_start=2; //开机进入第二阶段reset开始
0462 82E0 ldi R24,2
0464 80934700 sts _machine_open_start,R24
0468 .dbline 588
0468 ; open_to_close_station=1; //开机计时,到20s可以关机
0468 81E0 ldi R24,1
046A 80934800 sts _open_to_close_station,R24
046E .dbline 589
046E ; pwrbt_count=0; //防止益处,出于稳定考虑,可以省略
046E 20925300 sts _pwrbt_count,R2
0472 .dbline 591
0472 ;
0472 ; }
0472 L61:
0472 .dbline 592
0472 ; pwrbt_count++;
0472 80915300 lds R24,_pwrbt_count
0476 8F5F subi R24,255 ; addi 1
0478 80935300 sts _pwrbt_count,R24
047C .dbline 593
047C ; if(pwrbt_count>=(pwrbt_low_time+1)&&pwrbt_count<=255)
047C 8031 cpi R24,16
047E 40F0 brlo L63
0480 8FEF ldi R24,255
0482 20905300 lds R2,_pwrbt_count
0486 8215 cp R24,R2
0488 18F0 brlo L63
048A .dbline 594
048A ; {
048A .dbline 595
048A ; pwrbt_count=0; //防止益处,出于稳定考虑,可以省略
048A 2224 clr R2
048C 20925300 sts _pwrbt_count,R2
0490 .dbline 596
0490 ; }
0490 L63:
0490 .dbline 613
0490 ; /*
0490 ; if((PINA&0x08)==0) //掉电检测
0490 ; {
0490 ; power_down_count++;
0490 ; if(power_down_count>=20) //10ms检测
0490 ; {
0490 ; power_down_count=0;
0490 ; // power_on_close_enable=1; //关机使能
0490 ; machine_open_start=0; //清除10s限制
0490 ; close_machine_enable=1; //立即关机,没有10s限制
0490 ; // power_check_up=1; //延时开机使能
0490 ; //power_check_down=1; //立即关机,没有10s限制
0490 ; //open_machine(); //立即关机
0490 ; //UDR=0x33;//测试
0490 ; }
0490 ; }*/
0490 ; }
0490 L57:
0490 .dbline 620
0490 ; // else
0490 ; // {
0490 ; // pwrbt_count=0; //防止益处,出于稳定考虑,可以省略
0490 ; // }
0490 ;
0490 ; //开机进入第二阶段reset开始 set vs_on
0490 ; if(machine_open_start==2)
0490 80914700 lds R24,_machine_open_start
0494 8230 cpi R24,2
0496 B1F4 brne L65
0498 .dbline 621
0498 ; {
0498 .dbline 622
0498 ; vs_on_open_count++;
0498 80914F00 lds R24,_vs_on_open_count
049C 8F5F subi R24,255 ; addi 1
049E 80934F00 sts _vs_on_open_count,R24
04A2 .dbline 623
04A2 ; if(vs_on_open_count>vs_on_open_time&&vs_on_open_count<=255)
04A2 84E1 ldi R24,20
04A4 20904F00 lds R2,_vs_on_open_count
04A8 8215 cp R24,R2
04AA 60F4 brsh L67
04AC 8FEF ldi R24,255
04AE 8215 cp R24,R2
04B0 48F0 brlo L67
04B2 .dbline 624
04B2 ; {
04B2 .dbline 626
04B2 ; // PORTD|=0x40; //vs_on=1
04B2 ; PORTD&=0xff; //vs_on=0
04B2 82B3 in R24,0x12
04B4 8F7F andi R24,255
04B6 82BB out 0x12,R24
04B8 .dbline 629
04B8 ; // PORTD&= 0xdf; //pin14 pd5=0
04B8 ; // PORTD&= 0xef; //pin13 pd4=0
04B8 ; machine_open_start=3;
04B8 83E0 ldi R24,3
04BA 80934700 sts _machine_open_start,R24
04BE .dbline 630
04BE ; vs_on_open_count=0; //防止益处,出于稳定考虑,可以省略
04BE 2224 clr R2
04C0 20924F00 sts _vs_on_open_count,R2
04C4 .dbline 631
04C4 ; }
04C4 L67:
04C4 .dbline 650
04C4 ; /****************
04C4 ; if((PINA&0x08)==0)//开机时掉电检测PA3脚,如持续10ms则执行关机,开机操作
04C4 ; {
04C4 ; power_down_count++;
04C4 ; if(power_down_count>=10)//10ms检测
04C4 ; {
04C4 ; power_down_count=0;
04C4 ; // power_on_close_enable=1; //关机使能
04C4 ;
04C4 ; // open_to_close_station=0; //取消20s状态
04C4 ; machine_open_start=0; //清除10s限制
04C4 ; close_machine_enable=1; //立即关机,没有10s限制
04C4 ; // power_check_up=1; //延时开机使能
04C4 ; //power_check_down=1; //立即关机,没有10s限制
04C4 ; //open_machine(); //立即关机
04C4 ; //UDR=0x33;//测试
04C4 ; }
04C4 ; }************/
04C4 ; }
04C4 L65:
04C4 .dbline 655
04C4 ;
04C4 ; //////////////////////////////////////////////////////////////
04C4 ;
04C4 ; /
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -