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

📄 hptv.lis

📁 MCU控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -