📄 jianpan.lst
字号:
03A3 2FE4 MOV R30,R20
03A4 27FF CLR R31
03A5 0FE8 ADD R30,R24
03A6 1FF9 ADC R31,R25
03A7 91E4 LPM R30,0(Z)
03A8 30E2 CPI R30,2
03A9 F021 BEQ 0x03AE
03AA E081 LDI R24,1
03AB E090 LDI R25,0
03AC 016C MOVW R12,R24
03AD C002 RJMP 0x03B0
03AE 24CC CLR R12
03AF 24DD CLR R13
03B0 E584 LDI R24,0x54
03B1 E090 LDI R25,0
03B2 2FE4 MOV R30,R20
03B3 27FF CLR R31
03B4 0FE8 ADD R30,R24
03B5 1FF9 ADC R31,R25
03B6 91E4 LPM R30,0(Z)
03B7 30E3 CPI R30,3
03B8 F021 BEQ 0x03BD
03B9 E081 LDI R24,1
03BA E090 LDI R25,0
03BB 015C MOVW R10,R24
03BC C002 RJMP 0x03BF
03BD 24AA CLR R10
03BE 24BB CLR R11
03BF 0117 MOVW R2,R14
03C0 282C OR R2,R12
03C1 283D OR R3,R13
03C2 282A OR R2,R10
03C3 283B OR R3,R11
03C4 2022 TST R2
03C5 F411 BNE 0x03C8
03C6 2033 TST R3
03C7 F019 BEQ 0x03CB
03C8 306F CPI R22,0xF
03C9 F409 BNE 0x03CB
03CA DEC6 RCALL _edit
(0370)
(0371) }
(0372) }
(0373) display();
03CB DD69 RCALL _display
03CC 3F6F CPI R22,0xFF
03CD F009 BEQ 0x03CF
03CE CECD RJMP 0x029C
(0374) }
(0375) mode=FREE;
03CF E781 LDI R24,0x71
03D0 93800068 STS 0x68,R24
(0376) }
03D2 940E04B8 CALL pop_gset5
03D4 9508 RET
(0377)
(0378) void reset( void )
(0379) {
(0380) for(DelayCounter = 0; DelayCounter < 500;)
_reset:
03D5 2422 CLR R2
03D6 2433 CLR R3
03D7 92300062 STS 0x62,R3
03D9 92200061 STS 0x61,R2
03DB C006 RJMP 0x03E2
(0381) {
(0382) PORTA = 0xFF;
03DC EF8F LDI R24,0xFF
03DD BB8B OUT 0x1B,R24
(0383) PORTB <<= BIT(0);
03DE B228 IN R2,0x18
03DF 0C22 LSL R2
03E0 BA28 OUT 0x18,R2
(0384) WDR();
03E1 95A8 WDR
03E2 91800061 LDS R24,0x61
03E4 91900062 LDS R25,0x62
03E6 3F84 CPI R24,0xF4
03E7 E0E1 LDI R30,1
03E8 079E CPC R25,R30
03E9 F390 BCS 0x03DC
(0385) }
(0386) SysCounter = 0;
(0387) DelayCounter=0;
(0388) Cursor = 0;
(0389) CursorDir = 0;
03EA 2422 CLR R2
03EB 2433 CLR R3
03EC 92300064 STS 0x64,R3
03EE 92200063 STS 0x63,R2
03F0 92300062 STS 0x62,R3
03F2 92200061 STS 0x61,R2
03F4 9220006B STS 0x6B,R2
03F6 9220006C STS 0x6C,R2
(0390) //p_speed=speed_table[0];
(0391) }
03F8 9508 RET
(0392) //
(0393) void main(void)
(0394) {
(0395) uchar i;
(0396) init_devices();
_main:
KeyIndex --> R20
i --> R22
03F9 DD30 RCALL _init_devices
(0397) reset();
03FA DFDA RCALL _reset
(0398) send(7,0x79);
03FB E729 LDI R18,0x79
03FC E007 LDI R16,7
03FD DC71 RCALL _send
03FE C070 RJMP 0x046F
(0399) while( 1 )
(0400) {
(0401) mode=FREE;
(0402) WDR();
03FF E781 LDI R24,0x71
0400 93800068 STS 0x68,R24
0402 95A8 WDR
(0403) if( !(PIND & BIT(PD2)) ) // 检测按键状态
0403 9982 SBIC 0x10,2
0404 C02B RJMP 0x0430
(0404) {
(0405) display(); //延时
0405 DD2F RCALL _display
(0406) display(); //延时
0406 DD2E RCALL _display
(0407) if( !(PIND & BIT(PD2)) ) //再次检测按键状态
0407 9982 SBIC 0x10,2
0408 C066 RJMP 0x046F
(0408) {
(0409) uchar KeyIndex = scan_key(); // 读取扫描序号
0409 DC94 RCALL _scan_key
040A 2F40 MOV R20,R16
040B C002 RJMP 0x040E
(0410) while( !(PIND & BIT(PD2)) ) { WDR(); display(); }; //等待按键松开
040C 95A8 WDR
040D DD27 RCALL _display
040E 9B82 SBIS 0x10,2
040F CFFC RJMP 0x040C
(0411) for( i = 0; i < 5; i ++ ) { display(); } //延时
0410 2766 CLR R22
0411 C002 RJMP 0x0414
0412 DD22 RCALL _display
0413 9563 INC R22
0414 3065 CPI R22,5
0415 F3E0 BCS 0x0412
(0412) //按下编辑键
(0413) if(KeySet[KeyIndex]==EDIT)
0416 E584 LDI R24,0x54
0417 E090 LDI R25,0
0418 2FE4 MOV R30,R20
0419 27FF CLR R31
041A 0FE8 ADD R30,R24
041B 1FF9 ADC R31,R25
041C 91E4 LPM R30,0(Z)
041D 30EE CPI R30,0xE
041E F429 BNE 0x0424
(0414) {
(0415) mode=0x79; //''E'
(0416) edit();
041F E789 LDI R24,0x79
0420 93800068 STS 0x68,R24
0422 DE6E RCALL _edit
(0417) }
0423 C04B RJMP 0x046F
(0418) else if(KeySet[KeyIndex]==ENTER)
0424 E584 LDI R24,0x54
0425 E090 LDI R25,0
0426 2FE4 MOV R30,R20
0427 27FF CLR R31
0428 0FE8 ADD R30,R24
0429 1FF9 ADC R31,R25
042A 91E4 LPM R30,0(Z)
042B 30EF CPI R30,0xF
042C F009 BEQ 0x042E
042D C041 RJMP 0x046F
(0419) {
(0420) transmit();
042E DC95 RCALL _transmit
(0421) }
(0422) }
(0423) }
042F C03F RJMP 0x046F
(0424) else
(0425) {
(0426) if( SysCounter > 500 )
0430 EF84 LDI R24,0xF4
0431 E091 LDI R25,1
0432 90200063 LDS R2,0x63
0434 90300064 LDS R3,0x64
0436 1582 CP R24,R2
0437 0593 CPC R25,R3
0438 F528 BCC 0x045E
(0427) {
(0428) SysCounter = 0;
(0429) if( CursorDir == 0 )
0439 2422 CLR R2
043A 2433 CLR R3
043B 92300064 STS 0x64,R3
043D 92200063 STS 0x63,R2
043F 9020006C LDS R2,0x6C
0441 2022 TST R2
0442 F461 BNE 0x044F
(0430) {
(0431) if( ++Cursor == 7 ) { CursorDir = 1; }
0443 9180006B LDS R24,0x6B
0445 5F8F SUBI R24,0xFF
0446 2E28 MOV R2,R24
0447 9220006B STS 0x6B,R2
0449 3087 CPI R24,7
044A F499 BNE 0x045E
044B E081 LDI R24,1
044C 9380006C STS 0x6C,R24
(0432) }
044E C00F RJMP 0x045E
(0433) else if( CursorDir == 1 )
044F 9180006C LDS R24,0x6C
0451 3081 CPI R24,1
0452 F459 BNE 0x045E
(0434) {
(0435) if( --Cursor == 0 ) { CursorDir = 0; }
0453 9180006B LDS R24,0x6B
0455 5081 SUBI R24,1
0456 2E28 MOV R2,R24
0457 9220006B STS 0x6B,R2
0459 2388 TST R24
045A F419 BNE 0x045E
045B 2422 CLR R2
045C 9220006C STS 0x6C,R2
(0436) }
(0437) }
(0438) PORTA = 0x40; //显示'_'
045E E480 LDI R24,0x40
045F BB8B OUT 0x1B,R24
(0439) PORTB = 0xFF;
0460 EF8F LDI R24,0xFF
0461 BB88 OUT 0x18,R24
(0440) PORTB &= ~BIT( Cursor );
0462 9110006B LDS R17,0x6B
0464 E001 LDI R16,1
0465 940E04E2 CALL lsl8
0467 2E20 MOV R2,R16
0468 9420 COM R2
0469 B238 IN R3,0x18
046A 2032 AND R3,R2
046B BA38 OUT 0x18,R3
(0441) delay(1);
046C E001 LDI R16,1
046D E010 LDI R17,0
046E DBF0 RCALL _delay
046F CF8F RJMP 0x03FF
(0442) }
(0443) }
(0444) }
FILE: <library>
0470 9508 RET
mod16u:
0471 9468 BSET 6
0472 C001 RJMP xdiv16u
div16u:
0473 94E8 BCLR 6
xdiv16u:
0474 92EA ST R14,-Y
0475 92FA ST R15,-Y
0476 938A ST R24,-Y
0477 24EE CLR R14
0478 24FF CLR R15
0479 E180 LDI R24,0x10
047A 0F00 LSL R16
047B 1F11 ROL R17
047C 1CEE ROL R14
047D 1CFF ROL R15
047E 16E2 CP R14,R18
047F 06F3 CPC R15,R19
0480 F018 BCS 0x0484
0481 1AE2 SUB R14,R18
0482 0AF3 SBC R15,R19
0483 9503 INC R16
0484 958A DEC R24
0485 F7A1 BNE 0x047A
0486 F416 BRTC 0x0489
0487 2D0E MOV R16,R14
0488 2D1F MOV R17,R15
0489 9189 LD R24,Y+
048A 90F9 LD R15,Y+
048B 90E9 LD R14,Y+
048C 9508 RET
mod8u:
048D 9468 BSET 6
048E C001 RJMP xdiv8u
div8u:
048F 94E8 BCLR 6
xdiv8u:
0490 932A ST R18,-Y
0491 92FA ST R15,-Y
0492 92EA ST R14,-Y
0493 24FF CLR R15
0494 24EE CLR R14
0495 E120 LDI R18,0x10
0496 0F00 LSL R16
0497 1CFF ROL R15
0498 1CEE ROL R14
0499 16E1 CP R14,R17
049A F010 BCS 0x049D
049B 1AE1 SUB R14,R17
049C 9503 INC R16
049D 952A DEC R18
049E F7B9 BNE 0x0496
049F F40E BRTC 0x04A1
04A0 2D0E MOV R16,R14
04A1 90E9 LD R14,Y+
04A2 90F9 LD R15,Y+
04A3 9129 LD R18,Y+
04A4 9508 RET
empy16s:
04A5 920A ST R0,-Y
04A6 921A ST R1,-Y
04A7 938A ST R24,-Y
04A8 939A ST R25,-Y
04A9 9F02 MUL R16,R18
04AA 01C0 MOVW R24,R0
04AB 9F12 MUL R17,R18
04AC 0D90 ADD R25,R0
04AD 9F03 MUL R16,R19
04AE 0D90 ADD R25,R0
04AF 018C MOVW R16,R24
04B0 9199 LD R25,Y+
04B1 9189 LD R24,Y+
04B2 9019 LD R1,Y+
04B3 9009 LD R0,Y+
04B4 9508 RET
pop_gset2:
04B5 E0E2 LDI R30,2
04B6 940C04BF JMP pop
pop_gset5:
04B8 27EE CLR R30
04B9 940C04BF JMP pop
push_gset1:
04BB 935A ST R21,-Y
04BC 934A ST R20,-Y
04BD 9508 RET
pop_gset1:
04BE E0E1 LDI R30,1
pop:
04BF 9149 LD R20,Y+
04C0 9159 LD R21,Y+
04C1 FDE0 SBRC R30,0
04C2 9508 RET
04C3 9169 LD R22,Y+
04C4 9179 LD R23,Y+
04C5 FDE1 SBRC R30,1
04C6 9508 RET
04C7 90A9 LD R10,Y+
04C8 90B9 LD R11,Y+
04C9 FDE2 SBRC R30,2
04CA 9508 RET
04CB 90C9 LD R12,Y+
04CC 90D9 LD R13,Y+
04CD FDE3 SBRC R30,3
04CE 9508 RET
04CF 90E9 LD R14,Y+
04D0 90F9 LD R15,Y+
04D1 9508 RET
push_gset2:
04D2 937A ST R23,-Y
04D3 936A ST R22,-Y
04D4 940C04BB JMP push_gset1
push_gset3:
04D6 92BA ST R11,-Y
04D7 92AA ST R10,-Y
04D8 940C04D2 JMP push_gset2
push_gset4:
04DA 92DA ST R13,-Y
04DB 92CA ST R12,-Y
04DC 940C04D6 JMP push_gset3
push_gset5:
04DE 92FA ST R15,-Y
04DF 92EA ST R14,-Y
04E0 940C04DA JMP push_gset4
lsl8:
04E2 2311 TST R17
04E3 F019 BEQ 0x04E7
04E4 0F00 LSL R16
04E5 951A DEC R17
04E6 CFFB RJMP lsl8
04E7 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -