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

📄 hptv.lis

📁 MCU控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0004           ; 
 0004           ; 
 0004           ; 
 0004           ; 
 0004           ; void Clear_Timer_Close_Machine()
 0004           ; {
 0004                   .dbline 280
 0004           ;  CloseTime_b=0;
 0004 2224              clr R2
 0006 20923000          sts _CloseTime_b,R2
 000A                   .dbline 281
 000A           ;  CloseTime.Cstime=0;
 000A 40E0              ldi R20,0
 000C 50E0              ldi R21,0
 000E 60E0              ldi R22,0
 0010 70E0              ldi R23,0
 0012 50930E00          sts _CloseTime+1,R21
 0016 40930D00          sts _CloseTime,R20
 001A 70931000          sts _CloseTime+2+1,R23
 001E 60930F00          sts _CloseTime+2,R22
 0022                   .dbline 282
 0022           ;  closetime_min=0;
 0022 20922E00          sts _closetime_min,R2
 0026                   .dbline 283
 0026           ;  CloseTimeMin_b=0;
 0026 20921500          sts _CloseTimeMin_b,R2
 002A                   .dbline -2
 002A           L2:
 002A 0E940000          xcall pop_gset2
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbend
 0030                   .dbfunc e start_iocheck _start_iocheck fV
 0030           ;              i -> R20
                        .even
 0030           _start_iocheck::
 0030 0E940000          xcall push_gset1
 0034                   .dbline -1
 0034                   .dbline 287
 0034           ; }
 0034           ; 
 0034           ; void start_iocheck(void)  //上电检测io,为0则需要发送状态
 0034           ; {
 0034                   .dbline 289
 0034           ;    uchar i;
 0034           ;     pb_state=PINB&0x7f;   //保存上电后io状态
 0034 86B3              in R24,0x16
 0036 8F77              andi R24,127
 0038 80932600          sts _pb_state,R24
 003C                   .dbline 290
 003C           ;       if(pb_state!=0x7f)  //第一次检测io
 003C 8F37              cpi R24,127
 003E F9F0              breq L4
 0040                   .dbline 291
 0040           ;       {
 0040                   .dbline 293
 0040           ;       
 0040           ;          for(i=0;i<6;i++)
 0040 4427              clr R20
 0042 12C0              xjmp L9
 0044           L6:
 0044                   .dbline 294
 0044           ;          {
 0044                   .dbline 295
 0044           ;            if((pb_state&(1<<i))==0)
 0044 01E0              ldi R16,1
 0046 142F              mov R17,R20
 0048 0E940000          xcall lsl8
 004C 20902600          lds R2,_pb_state
 0050 2022              and R2,R16
 0052 49F4              brne L10
 0054                   .dbline 296
 0054           ;                {
 0054                   .dbline 297
 0054           ;                  i2c_public|=1<<i;  //相应位置位
 0054 01E0              ldi R16,1
 0056 142F              mov R17,R20
 0058 0E940000          xcall lsl8
 005C 20900000          lds R2,_i2c_public
 0060 202A              or R2,R16
 0062 20920000          sts _i2c_public,R2
 0066                   .dbline 298
 0066           ;                }  
 0066           L10:
 0066                   .dbline 299
 0066           L7:
 0066                   .dbline 293
 0066 4395              inc R20
 0068           L9:
 0068                   .dbline 293
 0068 4630              cpi R20,6
 006A 60F3              brlo L6
 006C                   .dbline 300
 006C           ;          }
 006C           ;         if((pb_state&(1<<6))==0)
 006C 20902600          lds R2,_pb_state
 0070 26FC              sbrc R2,6
 0072 05C0              rjmp L12
 0074                   .dbline 301
 0074           ;          {
 0074                   .dbline 302
 0074           ;            i2c_public|=1<<5;
 0074 80910000          lds R24,_i2c_public
 0078 8062              ori R24,32
 007A 80930000          sts _i2c_public,R24
 007E                   .dbline 303
 007E           ;          }
 007E           L12:
 007E                   .dbline 304
 007E           L4:
 007E                   .dbline -2
 007E           L3:
 007E 0E940000          xcall pop_gset1
 0082                   .dbline 0 ; func end
 0082 0895              ret
 0084                   .dbsym r i 20 c
 0084                   .dbend
 0084                   .dbfunc e io_check _io_check fV
 0084           ;              i -> R20
                        .even
 0084           _io_check::
 0084 0E940000          xcall push_gset1
 0088                   .dbline -1
 0088                   .dbline 308
 0088           ;       }
 0088           ;       //UDR=pb_state;
 0088           ; }
 0088           ; void io_check(void)     //io状态变化检测函数 0.5s检测一次
 0088           ; {
 0088                   .dbline 311
 0088           ;  uchar i;
 0088           ; 
 0088           ;       if(pb_state!=(PINB&0x7f))
 0088 86B3              in R24,0x16
 008A 8F77              andi R24,127
 008C 20902600          lds R2,_pb_state
 0090 2816              cp R2,R24
 0092 29F0              breq L15
 0094                   .dbline 312
 0094           ;       {
 0094                   .dbline 313
 0094           ;         pbcheck_num++;
 0094 80912400          lds R24,_pbcheck_num
 0098 8F5F              subi R24,255    ; addi 1
 009A 80932400          sts _pbcheck_num,R24
 009E                   .dbline 314
 009E           ;       }
 009E           L15:
 009E                   .dbline 316
 009E           ;       
 009E           ;       if(pbcheck_num>1)  //确认有变化
 009E 81E0              ldi R24,1
 00A0 20902400          lds R2,_pbcheck_num
 00A4 8215              cp R24,R2
 00A6 08F0              brlo X0
 00A8 3FC0              xjmp L17
 00AA           X0:
 00AA                   .dbline 317
 00AA           ;       {
 00AA                   .dbline 318
 00AA           ;          for(i=0;i<6;i++)
 00AA 4427              clr R20
 00AC 24C0              xjmp L22
 00AE           L19:
 00AE                   .dbline 319
 00AE           ;          {
 00AE                   .dbline 320
 00AE           ;               if((pb_state&(1<<i))!=((PINB&(1<<i))))//位比较,相同则调用函数
 00AE 242F              mov R18,R20
 00B0 3327              clr R19
 00B2 01E0              ldi R16,1
 00B4 10E0              ldi R17,0
 00B6 0E940000          xcall lsl16
 00BA 26B2              in R2,0x16
 00BC 3324              clr R3
 00BE 2022              and R2,R16
 00C0 3122              and R3,R17
 00C2 40902600          lds R4,_pb_state
 00C6 5524              clr R5
 00C8 4022              and R4,R16
 00CA 5122              and R5,R17
 00CC 4214              cp R4,R2
 00CE 5304              cpc R5,R3
 00D0 89F0              breq L23
 00D2                   .dbline 321
 00D2           ;               {
 00D2                   .dbline 323
 00D2           ;                          
 00D2           ;                          i2c_public|=(1<<i);   //相应位置位
 00D2 01E0              ldi R16,1
 00D4 142F              mov R17,R20
 00D6 0E940000          xcall lsl8
 00DA 20900000          lds R2,_i2c_public
 00DE 202A              or R2,R16
 00E0 20920000          sts _i2c_public,R2
 00E4                   .dbline 324
 00E4           ;                          pb_state=PINB&0x7f; //保存新的状态位
 00E4 86B3              in R24,0x16
 00E6 8F77              andi R24,127
 00E8 80932600          sts _pb_state,R24
 00EC                   .dbline 325
 00EC           ;                          STATE=(~pb_state)&0x7f;
 00EC 8095              com R24
 00EE 8F77              andi R24,127
 00F0 80931600          sts _STATE,R24
 00F4                   .dbline 326
 00F4           ;               }
 00F4           L23:
 00F4                   .dbline 327
 00F4           L20:
 00F4                   .dbline 318
 00F4 4395              inc R20
 00F6           L22:
 00F6                   .dbline 318
 00F6 4630              cpi R20,6
 00F8 D0F2              brlo L19
 00FA                   .dbline 328
 00FA           ;               }       
 00FA           ;          if((pb_state&(1<<6))!=(PINB&(1<<6)))  //由于i2c_public只有8位第7位单独处理
 00FA 86B3              in R24,0x16
 00FC 8074              andi R24,64
 00FE 90912600          lds R25,_pb_state
 0102 9074              andi R25,64
 0104 9817              cp R25,R24
 0106 69F0              breq L25
 0108                   .dbline 329
 0108           ;          {                                   //第5位第6位用相同申请项
 0108                   .dbline 330
 0108           ;                          i2c_public|=(1<<5);   //相应位置位
 0108 80910000          lds R24,_i2c_public
 010C 8062              ori R24,32
 010E 80930000          sts _i2c_public,R24
 0112                   .dbline 331
 0112           ;                          pb_state=PINB&0x7f; //保存新的状态位
 0112 86B3              in R24,0x16
 0114 8F77              andi R24,127
 0116 80932600          sts _pb_state,R24
 011A                   .dbline 332
 011A           ;                          STATE=(~pb_state)&0x7f; //
 011A 8095              com R24
 011C 8F77              andi R24,127
 011E 80931600          sts _STATE,R24
 0122                   .dbline 333
 0122           ;          }
 0122           L25:
 0122                   .dbline 334
 0122 2224              clr R2
 0124 20922400          sts _pbcheck_num,R2
 0128                   .dbline 335
 0128           L17:
 0128                   .dbline -2
 0128           L14:
 0128 0E940000          xcall pop_gset1
 012C                   .dbline 0 ; func end
 012C 0895              ret
 012E                   .dbsym r i 20 c
 012E                   .dbend
 012E                   .dbfunc e open_machine _open_machine fV
                        .even
 012E           _open_machine::
 012E                   .dbline -1
 012E                   .dbline 344
 012E           ;         pbcheck_num=0; 
 012E           ;       }
 012E           ;       //UDR=pb_state;
 012E           ; }
 012E           ; /*********************************************
 012E           ; //开机函数
 012E           ; //此函数用于设置开机时序
 012E           ; 
 012E           ; *********************************************/
 012E           ; void open_machine(void)
 012E           ; {
 012E                   .dbline 345
 012E           ;    WDR();
 012E A895              wdr
 0130                   .dbline 347
 0130           ;    //PORTC|=0x38;                               //pwrbt=1,reset=1,eset_l=1
 0130           ;    pwrbt_count=0;
 0130 2224              clr R2
 0132 20925300          sts _pwrbt_count,R2
 0136                   .dbline 348
 0136           ;    reset_open_count=0;
 0136 20925200          sts _reset_open_count,R2
 013A                   .dbline 349
 013A           ;    vs_on_open_count=0;
 013A 20924F00          sts _vs_on_open_count,R2
 013E                   .dbline 350
 013E           ;    machine_open_start=1;
 013E 81E0              ldi R24,1
 0140 80934700          sts _machine_open_start,R24
 0144                   .dbline 351
 0144           ;    open_to_close_station=0;
 0144 20924800          sts _open_to_close_station,R2
 0148                   .dbline 352
 0148           ;    open_to_close_count=0;
 0148 3324              clr R3
 014A 30925500          sts _open_to_close_count+1,R3
 014E 20925400          sts _open_to_close_count,R2
 0152                   .dbline 353
 0152           ;    close_machine_enable=0;
 0152 20924500          sts _close_machine_enable,R2
 0156                   .dbline 354

⌨️ 快捷键说明

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