📄 drive.lis
字号:
03BA ; pas_flag=pas_flag<<1;
03BA AA0C lsl R10
03BC BB1C rol R11
03BE .dbline 289
03BE ; WDR();
03BE A895 wdr
03C0 .dbline 290
03C0 ; if(dd&0x40)
03C0 C6FE sbrs R12,6
03C2 02C0 rjmp L61
03C4 .dbline 291
03C4 ; temp2 &= 0x10;
03C4 4071 andi R20,16
03C6 5070 andi R21,0
03C8 L61:
03C8 .dbline 292
03C8 ; pas_flag=pas_flag<<1;
03C8 AA0C lsl R10
03CA BB1C rol R11
03CC .dbline 293
03CC ; if(dd&0x80)
03CC C7FE sbrs R12,7
03CE 02C0 rjmp L63
03D0 .dbline 294
03D0 ; temp2 &= 0x08;
03D0 4870 andi R20,8
03D2 5070 andi R21,0
03D4 L63:
03D4 .dbline 295
03D4 ; asm("nop");
03D4 0000 nop
03D6 .dbline 296
03D6 ; asm("nop");
03D6 0000 nop
03D8 .dbline 297
03D8 ; if(pas_flag!=0x40)
03D8 C501 movw R24,R10
03DA 8034 cpi R24,64
03DC E0E0 ldi R30,0
03DE 9E07 cpc R25,R30
03E0 11F0 breq L65
03E2 .dbline 298
03E2 ; RESET;
03E2 0C940000 jmp 0x000
03E6 L65:
03E6 .dbline 299
03E6 ; WDR();
03E6 A895 wdr
03E8 .dbline 300
03E8 ; }
03E8 L30:
03E8 .dbline 301
03E8 ; WDR();
03E8 A895 wdr
03EA .dbline 302
03EA ; switch(i)
03EA A02E mov R10,R16
03EC BB24 clr R11
03EE AA20 tst R10
03F0 11F4 brne X2
03F2 BB20 tst R11
03F4 B1F0 breq L70
03F6 X2:
03F6 C501 movw R24,R10
03F8 8130 cpi R24,1
03FA E0E0 ldi R30,0
03FC 9E07 cpc R25,R30
03FE A1F0 breq L71
0400 8230 cpi R24,2
0402 E0E0 ldi R30,0
0404 9E07 cpc R25,R30
0406 99F0 breq L72
0408 8330 cpi R24,3
040A E0E0 ldi R30,0
040C 9E07 cpc R25,R30
040E 91F0 breq L73
0410 8430 cpi R24,4
0412 E0E0 ldi R30,0
0414 9E07 cpc R25,R30
0416 89F0 breq L74
0418 8530 cpi R24,5
041A E0E0 ldi R30,0
041C 9E07 cpc R25,R30
041E 81F0 breq L75
0420 12C0 xjmp L67
0422 X3:
0422 .dbline 303
0422 ; {
0422 L70:
0422 .dbline 304
0422 ; case 0: PORTC=0x10; break;
0422 80E1 ldi R24,16
0424 88B9 out 0x8,R24
0426 .dbline 304
0426 11C0 xjmp L68
0428 L71:
0428 .dbline 305
0428 ; case 1: PORTC=0x90; break;
0428 80E9 ldi R24,144
042A 88B9 out 0x8,R24
042C .dbline 305
042C 0EC0 xjmp L68
042E L72:
042E .dbline 306
042E ; case 2: PORTC=0x50; break;
042E 80E5 ldi R24,80
0430 88B9 out 0x8,R24
0432 .dbline 306
0432 0BC0 xjmp L68
0434 L73:
0434 .dbline 307
0434 ; case 3: PORTC=0xd0; break;
0434 80ED ldi R24,208
0436 88B9 out 0x8,R24
0438 .dbline 307
0438 08C0 xjmp L68
043A L74:
043A .dbline 308
043A ; case 4: PORTC=0x30; break;
043A 80E3 ldi R24,48
043C 88B9 out 0x8,R24
043E .dbline 308
043E 05C0 xjmp L68
0440 L75:
0440 .dbline 309
0440 ; case 5: PORTC=0xb0; break;
0440 80EB ldi R24,176
0442 88B9 out 0x8,R24
0444 .dbline 309
0444 02C0 xjmp L68
0446 L67:
0446 .dbline 310
0446 ; default:RESET;
0446 0C940000 jmp 0x000
044A .dbline 311
044A ; }
044A L68:
044A .dbline 312
044A ; asm("nop");
044A 0000 nop
044C .dbline 313
044C ; asm("nop");
044C 0000 nop
044E .dbline 314
044E ; PORTE =temp1;
044E 6EB9 out 0xe,R22
0450 .dbline 315
0450 ; PORTG =temp2;
0450 44BB out 0x14,R20
0452 .dbline 317
0452 ;
0452 ; PORTC&=0xef;
0452 88B1 in R24,0x8
0454 8F7E andi R24,239
0456 88B9 out 0x8,R24
0458 .dbline 318
0458 ; WDR();
0458 A895 wdr
045A .dbline -2
045A L28:
045A 0E940000 xcall pop_gset4
045E .dbline 0 ; func end
045E 0895 ret
0460 .dbsym r temp2 20 i
0460 .dbsym r temp1 22 i
0460 .dbsym r pas_flag 10 i
0460 .dbsym l tt 10 c
0460 .dbsym r dd 12 c
0460 .dbsym r d 18 c
0460 .dbsym r i 16 c
0460 .dbend
0460 .dbfunc e led_clear _led_clear fV
0460 ; i -> R20
.even
0460 _led_clear::
0460 0E940000 xcall push_gset1
0464 .dbline -1
0464 .dbline 323
0464 ; }
0464 ;
0464 ;
0464 ; void led_clear(void) //LED复位函数
0464 ; {
0464 .dbline 325
0464 ; unsigned char i;
0464 ; for(i=0;i<48;i++)
0464 4427 clr R20
0466 03C0 xjmp L80
0468 L77:
0468 .dbline 326
0468 .dbline 327
0468 042F mov R16,R20
046A D6DE xcall _led_off
046C .dbline 328
046C L78:
046C .dbline 325
046C 4395 inc R20
046E L80:
046E .dbline 325
046E 4033 cpi R20,48
0470 D8F3 brlo L77
0472 .dbline -2
0472 L76:
0472 0E940000 xcall pop_gset1
0476 .dbline 0 ; func end
0476 0895 ret
0478 .dbsym r i 20 c
0478 .dbend
0478 .dbfunc e led7_clear _led7_clear fV
0478 ; p6 -> R16,R17
0478 ; p5 -> R18,R19
0478 ; p4 -> R20,R21
0478 ; p3 -> R22,R23
0478 ; p2 -> R10,R11
0478 ; p1 -> R12,R13
.even
0478 _led7_clear::
0478 0E940000 xcall push_gset4
047C .dbline -1
047C .dbline 334
047C ; {
047C ; led_off(i);
047C ; }
047C ; }
047C ;
047C ;
047C ;
047C ; void led7_clear(void) //七段码复位
047C ; {
047C .dbline 335
047C ; unsigned char *p1 = (unsigned char *) (addr_led7[0]);
047C C0900000 lds R12,_addr_led7
0480 D0900100 lds R13,_addr_led7+1
0484 .dbline 336
0484 ; unsigned char *p2 = (unsigned char *) (addr_led7[1]);
0484 A0900200 lds R10,_addr_led7+2
0488 B0900300 lds R11,_addr_led7+2+1
048C .dbline 337
048C ; unsigned char *p3 = (unsigned char *) (addr_led7[2]);
048C 60910400 lds R22,_addr_led7+4
0490 70910500 lds R23,_addr_led7+4+1
0494 .dbline 338
0494 ; unsigned char *p4 = (unsigned char *) (addr_led7[3]);
0494 40910600 lds R20,_addr_led7+6
0498 50910700 lds R21,_addr_led7+6+1
049C .dbline 339
049C ; unsigned char *p5 = (unsigned char *) (addr_led7[4]);
049C 20910800 lds R18,_addr_led7+8
04A0 30910900 lds R19,_addr_led7+8+1
04A4 .dbline 340
04A4 ; unsigned char *p6 = (unsigned char *) (addr_led7[5]);
04A4 00910A00 lds R16,_addr_led7+10
04A8 10910B00 lds R17,_addr_led7+10+1
04AC .dbline 341
04AC ; WDR();
04AC A895 wdr
04AE .dbline 342
04AE ; *p1= led7_data[0];
04AE 20900C00 lds R2,_led7_data
04B2 F601 movw R30,R12
04B4 2082 std z+0,R2
04B6 .dbline 343
04B6 ; *p2= led7_data[0];
04B6 20900C00 lds R2,_led7_data
04BA F501 movw R30,R10
04BC 2082 std z+0,R2
04BE .dbline 344
04BE ; *p3= led7_data[0];
04BE 20900C00 lds R2,_led7_data
04C2 FB01 movw R30,R22
04C4 2082 std z+0,R2
04C6 .dbline 345
04C6 ; *p4= led7_data[0];
04C6 20900C00 lds R2,_led7_data
04CA FA01 movw R30,R20
04CC 2082 std z+0,R2
04CE .dbline 346
04CE ; *p5= led7_data[0];
04CE 20900C00 lds R2,_led7_data
04D2 F901 movw R30,R18
04D4 2082 std z+0,R2
04D6 .dbline 347
04D6 ; *p6= led7_data[0];
04D6 20900C00 lds R2,_led7_data
04DA F801 movw R30,R16
04DC 2082 std z+0,R2
04DE .dbline -2
04DE L81:
04DE 0E940000 xcall pop_gset4
04E2 .dbline 0 ; func end
04E2 0895 ret
04E4 .dbsym r p6 16 pc
04E4 .dbsym r p5 18 pc
04E4 .dbsym r p4 20 pc
04E4 .dbsym r p3 22 pc
04E4 .dbsym r p2 10 pc
04E4 .dbsym r p1 12 pc
04E4 .dbend
04E4 .dbfunc e RUN_led _RUN_led fV
.even
04E4 _RUN_led::
04E4 .dbline -1
04E4 .dbline 351
04E4 ; }
04E4 ;
04E4 ; void RUN_led(void) //运行指示灯
04E4 ; {
04E4 .dbline 352
04E4 ; if(PINF&0x04)
04E4 7A9B sbis 0xf,2
04E6 02C0 rjmp L88
04E8 .dbline 353
04E8 ; PORTF &= ~(0x04);
04E8 8A98 cbi 0x11,2
04EA 01C0 xjmp L89
04EC L88:
04EC .dbline 355
04EC 8A9A sbi 0x11,2
04EE L89:
04EE .dbline -2
04EE L87:
04EE .dbline 0 ; func end
04EE 0895 ret
04F0 .dbend
04F0 .dbfunc e get_key _get_key fc
04F0 ; temp -> R16,R17
.even
04F0 _get_key::
04F0 .dbline -1
04F0 .dbline 360
04F0 ; else
04F0 ; PORTF |= 0x04;
04F0 ; }
04F0 ;
04F0 ;
04F0 ; unsigned char get_key(void) //键值读取函数
04F0 ; {
04F0 .dbline 363
04F0 ; unsigned temp;
04F0 ;
04F0 ; PORTC = addr_key;
04F0 80E7 ldi R24,112
04F2 88B9 out 0x8,R24
04F4 .dbline 364
04F4 ; WDR();
04F4 A895 wdr
04F6 .dbline 365
04F6 ; asm("nop");
04F6 0000 nop
04F8 .dbline 366
04F8 ; asm("nop");
04F8 0000 nop
04FA .dbline 367
04FA ; asm("nop");
04FA 0000 nop
04FC .dbline 368
04FC ; asm("nop");
04FC 0000 nop
04FE .dbline 369
04FE ; temp = PINB;
04FE 03B1 in R16,0x3
0500 1127 clr R17
0502 .dbline 371
0502 ;
0502 ; return temp;
0502 .dbline -2
0502 L90:
0502 .dbline 0 ; func end
0502 0895 ret
0504 .dbsym r temp 16 i
0504 .dbend
0504 .dbfunc e hardware_reset _hardware_reset fV
.even
0504 _hardware_reset::
0504 .dbline -1
0504 .dbline 376
0504 ;
0504 ; }
0504 ;
0504 ; void hardware_reset(void) //硬件层复位函数
0504 ; {
0504 .dbline 377
0504 ; led7_clear();
0504 B9DF xcall _led7_clear
0506 .dbline 378
0506 ; led_clear();
0506 ACDF xcall _led_clear
0508 .dbline 379
0508 ; relay_out_reset();
0508 79DE xcall _relay_out_reset
050A .dbline -2
050A L91:
050A .dbline 0 ; func end
050A 0895 ret
050C .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\drive.c
0000 _out_state::
0000 .blkb 1
0001 .dbsym e out_state _out_state c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -