📄 ps2simplesoft.lst
字号:
02C8 C00C RJMP 0x02D5
(0123) {
(0124) case 0xF0 : // a relase action
(0125) isUp = 1;
02C9 E081 LDI R24,1
02CA 93800062 STS 0x62,R24
(0126) break;
02CC C05B RJMP 0x0328
(0127) case 0x12 : // Left shift
(0128) shift = 1;
02CD E081 LDI R24,1
02CE 93800063 STS 0x63,R24
(0129) break;
02D0 C057 RJMP 0x0328
(0130) case 0x59 : // Right shift
(0131) shift = 1;
02D1 E081 LDI R24,1
02D2 93800063 STS 0x63,R24
(0132) break;
02D4 C053 RJMP 0x0328
(0133) default:
(0134) if(!shift) // If shift not pressed
02D5 90200063 LDS R2,0x63
02D7 2022 TST R2
02D8 F4D9 BNE 0x02F4
(0135) {
(0136) /*
(0137) for(i=0; unshifted[i][0]!=val && unshifted[i][0]; i++)
(0138) ;
(0139) 上述写法较为灵活,但KEIL非UNIXC标准,不能采用该写法
(0140) */
(0141) for(i=0; unshifted[i][0]!=val && i<59; i++)
02D9 2744 CLR R20
02DA C001 RJMP 0x02DC
02DB 9543 INC R20
02DC E082 LDI R24,2
02DD 9F84 MUL R24,R20
02DE 01F0 MOVW R30,R0
02DF E584 LDI R24,0x54
02E0 E090 LDI R25,0
02E1 0FE8 ADD R30,R24
02E2 1FF9 ADC R31,R25
02E3 91E4 LPM R30,0(Z)
02E4 17E0 CP R30,R16
02E5 F011 BEQ 0x02E8
02E6 334B CPI R20,0x3B
02E7 F398 BCS 0x02DB
(0142) ;
(0143) if(unshifted[i][0] == val)
02E8 E082 LDI R24,2
02E9 9F84 MUL R24,R20
02EA 01F0 MOVW R30,R0
02EB E584 LDI R24,0x54
02EC E090 LDI R25,0
02ED 0FE8 ADD R30,R24
02EE 1FF9 ADC R31,R25
02EF 91E4 LPM R30,0(Z)
02F0 17E0 CP R30,R16
02F1 F009 BEQ 0x02F3
02F2 C035 RJMP 0x0328
(0144) ; //状态指示
(0145)
(0146) }
02F3 C034 RJMP 0x0328
(0147) else // If shift pressed
(0148) {
(0149) /*
(0150) for(i=0; unshifted[i][0]!=val && unshifted[i][0]; i++)
(0151) ;
(0152) 上述写法较为灵活,但KEIL非UNIXC标准,不能采用该写法
(0153) */
(0154) for(i=0; shifted[i][0]!=val && i<59; i++)
02F4 2744 CLR R20
02F5 C001 RJMP 0x02F7
02F6 9543 INC R20
02F7 E082 LDI R24,2
02F8 9F84 MUL R24,R20
02F9 01F0 MOVW R30,R0
02FA EC8A LDI R24,0xCA
02FB E090 LDI R25,0
02FC 0FE8 ADD R30,R24
02FD 1FF9 ADC R31,R25
02FE 91E4 LPM R30,0(Z)
02FF 17E0 CP R30,R16
0300 F011 BEQ 0x0303
0301 334B CPI R20,0x3B
0302 F398 BCS 0x02F6
(0155) ;
(0156) if(shifted[i][0] == val)
0303 E082 LDI R24,2
0304 9F84 MUL R24,R20
0305 01F0 MOVW R30,R0
0306 EC8A LDI R24,0xCA
0307 E090 LDI R25,0
0308 0FE8 ADD R30,R24
0309 1FF9 ADC R31,R25
030A 91E4 LPM R30,0(Z)
030B 17E0 CP R30,R16
030C F4D9 BNE 0x0328
(0157) SHIFT_DATA_PORT = val;//状态指示
030D BB02 OUT 0x12,R16
(0158) }
(0159) }
(0160) }
030E C019 RJMP 0x0328
(0161) else
(0162) {
(0163) isUp=0;
030F 2422 CLR R2
0310 92200062 STS 0x62,R2
(0164) switch(val)
0312 2F40 MOV R20,R16
0313 2755 CLR R21
0314 3142 CPI R20,0x12
0315 E0E0 LDI R30,0
0316 075E CPC R21,R30
0317 F049 BEQ 0x0321
0318 3142 CPI R20,0x12
0319 E0E0 LDI R30,0
031A 075E CPC R21,R30
031B F064 BLT 0x0328
031C 3549 CPI R20,0x59
031D E0E0 LDI R30,0
031E 075E CPC R21,R30
031F F029 BEQ 0x0325
0320 C007 RJMP 0x0328
(0165) {
(0166) case 0x12 : // Left SHIFT
(0167) shift = 0;
0321 2422 CLR R2
0322 92200063 STS 0x63,R2
(0168) break;
0324 C003 RJMP 0x0328
(0169) case 0x59 : // Right SHIFT
(0170) shift = 0;
0325 2422 CLR R2
0326 92200063 STS 0x63,R2
(0171) break;
(0172) }
(0173) }
(0174) }
0328 940E03E9 CALL pop_gset1
032A 9508 RET
(0175) /*--------------------------------------------------------------------
(0176) 函数名称:
(0177) 函数功能:
(0178) 注意事项:
(0179) 提示说明:
(0180) 输 入:
(0181) 返 回:
(0182) --------------------------------------------------------------------*/
(0183) void main(void)
(0184) {
(0185) PRESS_DATA_DDR = 0XFF;
_main:
032B EF8F LDI R24,0xFF
032C BB8A OUT 0x1A,R24
(0186) SHIFT_DATA_DDR = 0XFF;
032D BB81 OUT 0x11,R24
(0187) IN_SDA;
032E 98B8 CBI 0x17,0
032F C008 RJMP 0x0338
(0188) while(1)
(0189) {
(0190) check();
0330 DF41 RCALL _check
(0191) if(rcvF)
0331 90200060 LDS R2,0x60
0333 2022 TST R2
0334 F019 BEQ 0x0338
(0192) keyHandle(keyVal);
0335 91000064 LDS R16,_keyVal
0337 DF71 RCALL _keyHandle
0338 CFF7 RJMP 0x0330
(0193) }
(0194) }
FILE: <library>
0339 9508 RET
push_arg4:
033A 933A ST R19,-Y
033B 932A ST R18,-Y
push_arg2:
033C 931A ST R17,-Y
033D 930A ST R16,-Y
033E 9508 RET
div32u:
033F 94E8 BCLR 6
0340 C001 RJMP 0x0342
mod32u:
0341 9468 BSET 6
0342 D02F RCALL long_div_prolog
0343 24CC CLR R12
0344 C008 RJMP 0x034D
div32s:
0345 94E8 BCLR 6
0346 C001 RJMP 0x0348
mod32s:
0347 9468 BSET 6
0348 D029 RCALL long_div_prolog
0349 FD37 SBRC R19,7
034A D053 RCALL neg_R16_R19
034B FDB7 SBRC R27,7
034C D05A RCALL neg_R24_R27
034D 2477 CLR R7
034E 2488 CLR R8
034F 2499 CLR R9
0350 24AA CLR R10
0351 24BB CLR R11
0352 D041 RCALL tst_R16_R19
0353 F0C1 BEQ 0x036C
0354 D044 RCALL tst_R24_R27
0355 F0B1 BEQ 0x036C
0356 E2E8 LDI R30,0x28
0357 0F00 LSL R16
0358 1F11 ROL R17
0359 1F22 ROL R18
035A 1F33 ROL R19
035B 1C77 ROL R7
035C 1C88 ROL R8
035D 1C99 ROL R9
035E 1CAA ROL R10
035F 1CBB ROL R11
0360 1688 CP R8,R24
0361 0699 CPC R9,R25
0362 06AA CPC R10,R26
0363 06BB CPC R11,R27
0364 F028 BCS 0x036A
0365 1A88 SUB R8,R24
0366 0A99 SBC R9,R25
0367 0AAA SBC R10,R26
0368 0ABB SBC R11,R27
0369 9503 INC R16
036A 95EA DEC R30
036B F759 BNE 0x0357
036C F426 BRTC 0x0371
036D 2D08 MOV R16,R8
036E 2D19 MOV R17,R9
036F 2D2A MOV R18,R10
0370 2D3B MOV R19,R11
0371 C013 RJMP long_div_epilog
long_div_prolog:
0372 927A ST R7,-Y
0373 928A ST R8,-Y
0374 929A ST R9,-Y
0375 92AA ST R10,-Y
0376 92BA ST R11,-Y
0377 92CA ST R12,-Y
0378 93EA ST R30,-Y
0379 938A ST R24,-Y
037A 939A ST R25,-Y
037B 93AA ST R26,-Y
037C 93BA ST R27,-Y
037D 858B LDD R24,Y+11
037E 859C LDD R25,Y+12
037F 85AD LDD R26,Y+13
0380 85BE LDD R27,Y+14
0381 2EC3 MOV R12,R19
0382 F00E BRTS 0x0384
0383 26CB EOR R12,R27
0384 9508 RET
long_div_epilog:
0385 FCC7 SBRC R12,7
0386 D017 RCALL neg_R16_R19
0387 91B9 LD R27,Y+
0388 91A9 LD R26,Y+
0389 9199 LD R25,Y+
038A 9189 LD R24,Y+
038B 91E9 LD R30,Y+
038C 90C9 LD R12,Y+
038D 90B9 LD R11,Y+
038E 90A9 LD R10,Y+
038F 9099 LD R9,Y+
0390 9089 LD R8,Y+
0391 9079 LD R7,Y+
0392 9624 ADIW R28,4
0393 9508 RET
tst_R16_R19:
0394 2FE0 MOV R30,R16
0395 2BE1 OR R30,R17
0396 2BE2 OR R30,R18
0397 2BE3 OR R30,R19
0398 9508 RET
tst_R24_R27:
0399 2FE8 MOV R30,R24
039A 2BE9 OR R30,R25
039B 2BEA OR R30,R26
039C 2BEB OR R30,R27
039D 9508 RET
neg_R16_R19:
039E 9500 COM R16
039F 9510 COM R17
03A0 9520 COM R18
03A1 9530 COM R19
03A2 5F0F SUBI R16,0xFF
03A3 4F1F SBCI R17,0xFF
03A4 4F2F SBCI R18,0xFF
03A5 4F3F SBCI R19,0xFF
03A6 9508 RET
neg_R24_R27:
03A7 9580 COM R24
03A8 9590 COM R25
03A9 95A0 COM R26
03AA 95B0 COM R27
03AB 5F8F SUBI R24,0xFF
03AC 4F9F SBCI R25,0xFF
03AD 4FAF SBCI R26,0xFF
03AE 4FBF SBCI R27,0xFF
03AF 9508 RET
empy32s:
empy32u:
03B0 940E0409 CALL long_prolog
03B2 927F PUSH R7
03B3 940E0422 CALL tstzero1
03B5 F139 BEQ 0x03DD
03B6 2477 CLR R7
03B7 940E0428 CALL tstzero2
03B9 F419 BNE 0x03BD
03BA 018C MOVW R16,R24
03BB 019D MOVW R18,R26
03BC C020 RJMP 0x03DD
03BD 9F08 MUL R16,R24
03BE 2CB0 MOV R11,R0
03BF 2CA1 MOV R10,R1
03C0 9F28 MUL R18,R24
03C1 2C90 MOV R9,R0
03C2 2C81 MOV R8,R1
03C3 9F18 MUL R17,R24
03C4 0CA0 ADD R10,R0
03C5 1C91 ADC R9,R1
03C6 1C87 ADC R8,R7
03C7 9F09 MUL R16,R25
03C8 0CA0 ADD R10,R0
03C9 1C91 ADC R9,R1
03CA 1C87 ADC R8,R7
03CB 9F19 MUL R17,R25
03CC 0C90 ADD R9,R0
03CD 1C81 ADC R8,R1
03CE 9F0A MUL R16,R26
03CF 0C90 ADD R9,R0
03D0 1C81 ADC R8,R1
03D1 9F38 MUL R19,R24
03D2 0C80 ADD R8,R0
03D3 9F29 MUL R18,R25
03D4 0C80 ADD R8,R0
03D5 9F1A MUL R17,R26
03D6 0C80 ADD R8,R0
03D7 9F0B MUL R16,R27
03D8 0C80 ADD R8,R0
03D9 2D0B MOV R16,R11
03DA 2D1A MOV R17,R10
03DB 2D29 MOV R18,R9
03DC 2D38 MOV R19,R8
03DD 907F POP R7
03DE 940C0417 JMP long_epilog
pop_gset2:
03E0 E0E2 LDI R30,2
03E1 940C03EA JMP pop
pop_gset4:
03E3 E0E8 LDI R30,0x8
03E4 940C03EA JMP pop
push_gset1:
03E6 935A ST R21,-Y
03E7 934A ST R20,-Y
03E8 9508 RET
pop_gset1:
03E9 E0E1 LDI R30,1
pop:
03EA 9149 LD R20,Y+
03EB 9159 LD R21,Y+
03EC FDE0 SBRC R30,0
03ED 9508 RET
03EE 9169 LD R22,Y+
03EF 9179 LD R23,Y+
03F0 FDE1 SBRC R30,1
03F1 9508 RET
03F2 90A9 LD R10,Y+
03F3 90B9 LD R11,Y+
03F4 FDE2 SBRC R30,2
03F5 9508 RET
03F6 90C9 LD R12,Y+
03F7 90D9 LD R13,Y+
03F8 FDE3 SBRC R30,3
03F9 9508 RET
03FA 90E9 LD R14,Y+
03FB 90F9 LD R15,Y+
03FC 9508 RET
push_gset2:
03FD 937A ST R23,-Y
03FE 936A ST R22,-Y
03FF 940C03E6 JMP push_gset1
push_gset3:
0401 92BA ST R11,-Y
0402 92AA ST R10,-Y
0403 940C03FD JMP push_gset2
push_gset4:
0405 92DA ST R13,-Y
0406 92CA ST R12,-Y
0407 940C0401 JMP push_gset3
long_prolog:
0409 928A ST R8,-Y
040A 929A ST R9,-Y
040B 92AA ST R10,-Y
040C 92BA ST R11,-Y
040D 93EA ST R30,-Y
040E 938A ST R24,-Y
040F 939A ST R25,-Y
0410 93AA ST R26,-Y
0411 93BA ST R27,-Y
0412 8589 LDD R24,Y+9
0413 859A LDD R25,Y+10
0414 85AB LDD R26,Y+11
0415 85BC LDD R27,Y+12
0416 9508 RET
long_epilog:
0417 91B9 LD R27,Y+
0418 91A9 LD R26,Y+
0419 9199 LD R25,Y+
041A 9189 LD R24,Y+
041B 91E9 LD R30,Y+
041C 90B9 LD R11,Y+
041D 90A9 LD R10,Y+
041E 9099 LD R9,Y+
041F 9089 LD R8,Y+
0420 9624 ADIW R28,4
0421 9508 RET
tstzero1:
0422 27EE CLR R30
0423 2BE0 OR R30,R16
0424 2BE1 OR R30,R17
0425 2BE2 OR R30,R18
0426 2BE3 OR R30,R19
0427 9508 RET
tstzero2:
0428 27EE CLR R30
0429 2BE8 OR R30,R24
042A 2BE9 OR R30,R25
042B 2BEA OR R30,R26
042C 2BEB OR R30,R27
042D 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -