📄 hptv.lis
字号:
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 + -