📄 ps2_kb.lst
字号:
(0063) up=0;
0195 2422 CLR R2
0196 922000C0 STS R2,0xC0
(0064) if ((sc==0x12)|(sc==0x59)) shift=0;
0198 3162 CPI R22,0x12
0199 F421 BNE 0x019E
019A E081 LDI R24,1
019B E090 LDI R25,0
019C 015C MOVW R10,R24
019D C002 RJMP 0x01A0
019E 24AA CLR R10
019F 24BB CLR R11
01A0 3569 CPI R22,0x59
01A1 F419 BNE 0x01A5
01A2 E041 LDI R20,1
01A3 E050 LDI R21,0
01A4 C002 RJMP 0x01A7
01A5 2744 CLR R20
01A6 2755 CLR R21
01A7 0115 MOVW R2,R10
01A8 2A24 OR R2,R20
01A9 2A35 OR R3,R21
01AA 2022 TST R2
01AB F419 BNE 0x01AF
01AC 2033 TST R3
01AD F409 BNE 0x01AF
01AE C069 RJMP 0x0218
01AF 2422 CLR R2
01B0 922000BF STS R2,0xBF
(0065) return;
01B2 C065 RJMP 0x0218
(0066) }
(0067) switch (sc)
01B3 2F46 MOV R20,R22
01B4 2755 CLR R21
01B5 3142 CPI R20,0x12
01B6 E0E0 LDI R30,0
01B7 075E CPC R21,R30
01B8 F049 BEQ 0x01C2
01B9 3142 CPI R20,0x12
01BA E0E0 LDI R30,0
01BB 075E CPC R21,R30
01BC F07C BLT 0x01CC
01BD 3549 CPI R20,0x59
01BE E0E0 LDI R30,0
01BF 075E CPC R21,R30
01C0 F031 BEQ 0x01C7
01C1 C00A RJMP 0x01CC
(0068) {
(0069) case 0x12:{
(0070) shift=1;
01C2 E081 LDI R24,1
01C3 938000BF STS R24,0xBF
(0071) shiftup=1;
01C5 938000C1 STS R24,0xC1
(0072) }
(0073) case 0x59:{
(0074) shift=1;
01C7 E081 LDI R24,1
01C8 938000BF STS R24,0xBF
(0075) shiftup=1;
01CA 938000C1 STS R24,0xC1
(0076) }
(0077) default:{
(0078) if (shift==0)
01CC 902000BF LDS R2,0xBF
01CE 2022 TST R2
01CF F529 BNE 0x01F5
(0079) {
(0080) for(i = 0;unshifted[i][0]!=sc && unshifted[i][0]; i++);
01D0 2744 CLR R20
01D1 C001 RJMP 0x01D3
01D2 9543 INC R20
01D3 E082 LDI R24,2
01D4 9F84 MUL R24,R20
01D5 01F0 MOVW R30,R0
01D6 E286 LDI R24,0x26
01D7 E090 LDI R25,0
01D8 0FE8 ADD R30,R24
01D9 1FF9 ADC R31,R25
01DA 9024 LD R2,R2
01DB 2433 CLR R3
01DC 1626 CP R2,R22
01DD F011 BEQ 0x01E0
01DE 2022 TST R2
01DF F791 BNE 0x01D2
(0081) if (unshifted[i][0] == sc)
01E0 E082 LDI R24,2
01E1 9F84 MUL R24,R20
01E2 01F0 MOVW R30,R0
01E3 E286 LDI R24,0x26
01E4 E090 LDI R25,0
01E5 0FE8 ADD R30,R24
01E6 1FF9 ADC R31,R25
01E7 91E4 LD R30,R30
01E8 17E6 CP R30,R22
01E9 F009 BEQ 0x01EB
01EA C02D RJMP 0x0218
(0082) put_kbbuff(unshifted[i][1]);
01EB E082 LDI R24,2
01EC 9F84 MUL R24,R20
01ED 01F0 MOVW R30,R0
01EE E287 LDI R24,0x27
01EF E090 LDI R25,0
01F0 0FE8 ADD R30,R24
01F1 1FF9 ADC R31,R25
01F2 9104 LD R16,R16
01F3 DF56 RCALL _put_kbbuff
(0083) }
01F4 C023 RJMP 0x0218
(0084) else
(0085) {
(0086) for(i = 0;shifted[i][0]!=sc && shifted[i][0]; i++);
01F5 2744 CLR R20
01F6 C001 RJMP 0x01F8
01F7 9543 INC R20
01F8 E082 LDI R24,2
01F9 9F84 MUL R24,R20
01FA 01F0 MOVW R30,R0
01FB EA8E LDI R24,0xAE
01FC E090 LDI R25,0
01FD 0FE8 ADD R30,R24
01FE 1FF9 ADC R31,R25
01FF 9024 LD R2,R2
0200 2433 CLR R3
0201 1626 CP R2,R22
0202 F011 BEQ 0x0205
0203 2022 TST R2
0204 F791 BNE 0x01F7
(0087) if (shifted[i][0] == sc)
0205 E082 LDI R24,2
0206 9F84 MUL R24,R20
0207 01F0 MOVW R30,R0
0208 EA8E LDI R24,0xAE
0209 E090 LDI R25,0
020A 0FE8 ADD R30,R24
020B 1FF9 ADC R31,R25
020C 91E4 LD R30,R30
020D 17E6 CP R30,R22
020E F449 BNE 0x0218
(0088) {
(0089) put_kbbuff(shifted[i][1]);
020F E082 LDI R24,2
0210 9F84 MUL R24,R20
0211 01F0 MOVW R30,R0
0212 EA8F LDI R24,0xAF
0213 E090 LDI R25,0
0214 0FE8 ADD R30,R24
0215 1FF9 ADC R31,R25
0216 9104 LD R16,R16
0217 DF32 RCALL _put_kbbuff
(0090) }
(0091) }
(0092) }
(0093) }
(0094) }
0218 D09B RCALL pop_gset3
0219 9508 RET
_int1_isr:
021A D04E RCALL push_lset
021B D07B RCALL push_gset1
(0095) #pragma interrupt_handler int1_isr:iv_INT1
(0096) void int1_isr(void)
(0097) {
(0098) static unsigned char data;
(0099) switch (bitcount)
021C 91400103 LDS R20,_bitcount
021E 2755 CLR R21
021F 3041 CPI R20,1
0220 E0E0 LDI R30,0
0221 075E CPC R21,R30
0222 F0E1 BEQ 0x023F
0223 3042 CPI R20,2
0224 E0E0 LDI R30,0
0225 075E CPC R21,R30
0226 F091 BEQ 0x0239
0227 3041 CPI R20,1
0228 E0E0 LDI R30,0
0229 075E CPC R21,R30
022A F134 BLT 0x0251
022B 304B CPI R20,0xB
022C E0E0 LDI R30,0
022D 075E CPC R21,R30
022E F009 BEQ 0x0230
022F C021 RJMP 0x0251
(0100) {
(0101) case 11:{
(0102) if ((PIN_KB&(1<<DATAPIN))!=0)
0230 9B82 SBIS P10,2
0231 C001 RJMP 0x0233
(0103) return;
0232 C02E RJMP 0x0261
(0104) else
(0105) bitcount--;
0233 91800103 LDS R24,_bitcount
0235 5081 SUBI R24,1
0236 93800103 STS R24,_bitcount
(0106) break;}
0238 C028 RJMP 0x0261
(0107) case 2:{
(0108) bitcount--;
0239 91800103 LDS R24,_bitcount
023B 5081 SUBI R24,1
023C 93800103 STS R24,_bitcount
(0109) break;}
023E C022 RJMP 0x0261
(0110) case 1:{
(0111) bitcount--;
023F 91800103 LDS R24,_bitcount
0241 5081 SUBI R24,1
0242 93800103 STS R24,_bitcount
(0112) if ((PIN_KB&(1<<DATAPIN))==0)
0244 9982 SBIC P10,2
0245 C004 RJMP 0x024A
(0113) {
(0114) bitcount=11;
0246 E08B LDI R24,0xB
0247 93800103 STS R24,_bitcount
(0115) return;
0249 C017 RJMP 0x0261
(0116) }
(0117) else
(0118) {
(0119) bitcount=11;
024A E08B LDI R24,0xB
024B 93800103 STS R24,_bitcount
(0120) decode(data);
024D 910000C2 LDS R16,0xC2
024F DF39 RCALL _decode
(0121) }
(0122) break;}
0250 C010 RJMP 0x0261
(0123) default:{
(0124) data = (data >> 1);
0251 902000C2 LDS R2,0xC2
0253 9426 LSR R2
0254 922000C2 STS R2,0xC2
(0125) if((PIN_KB&(1<<DATAPIN))!=0)
0256 9B82 SBIS P10,2
0257 C004 RJMP 0x025C
(0126) data|=0x80;
0258 2D82 MOV R24,R2
0259 6880 ORI R24,0x80
025A 938000C2 STS R24,0xC2
(0127) bitcount--;
025C 91800103 LDS R24,_bitcount
025E 5081 SUBI R24,1
025F 93800103 STS R24,_bitcount
(0128) }
(0129) }
(0130) }
0261 D038 RCALL pop_gset1
0262 D01D RCALL pop_lset
0263 9518 RETI
FILE: C:\mega8\uart\read_flash.s
(0001) ;unsigned char read_flash(unsigned int add);
(0002) _read_flash::
(0003) mov r31,r17
_read_flash:
0264 2FF1 MOV R31,R17
(0004) mov r30,r16
0265 2FE0 MOV R30,R16
(0005) lpm r16,z
0266 9104 LD R16,R16
(0006) clr r17
0267 2711 CLR R17
(0007) ret FILE: <library>
0268 9508 RET
push_lset:
0269 93FA ST R31,-Y
026A 93EA ST R30,-Y
026B 93BA ST R27,-Y
026C 93AA ST R26,-Y
026D 939A ST R25,-Y
026E 938A ST R24,-Y
026F 933A ST R19,-Y
0270 932A ST R18,-Y
0271 931A ST R17,-Y
0272 930A ST R16,-Y
0273 929A ST R9,-Y
0274 928A ST R8,-Y
0275 927A ST R7,-Y
0276 926A ST R6,-Y
0277 925A ST R5,-Y
0278 924A ST R4,-Y
0279 923A ST R3,-Y
027A 922A ST R2,-Y
027B 921A ST R1,-Y
027C 920A ST R0,-Y
027D B60F IN R0,P3F
027E 920A ST R0,-Y
027F 9508 RET
pop_lset:
0280 9009 LD R0,Y+
0281 BE0F OUT P3F,R0
0282 9009 LD R0,Y+
0283 9019 LD R1,Y+
0284 9029 LD R2,Y+
0285 9039 LD R3,Y+
0286 9049 LD R4,Y+
0287 9059 LD R5,Y+
0288 9069 LD R6,Y+
0289 9079 LD R7,Y+
028A 9089 LD R8,Y+
028B 9099 LD R9,Y+
028C 9109 LD R16,Y+
028D 9119 LD R17,Y+
028E 9129 LD R18,Y+
028F 9139 LD R19,Y+
0290 9189 LD R24,Y+
0291 9199 LD R25,Y+
0292 91A9 LD R26,Y+
0293 91B9 LD R27,Y+
0294 91E9 LD R30,Y+
0295 91F9 LD R31,Y+
0296 9508 RET
push_gset1:
0297 935A ST R21,-Y
0298 934A ST R20,-Y
0299 9508 RET
pop_gset1:
029A E0E1 LDI R30,1
pop:
029B 9149 LD R20,Y+
029C 9159 LD R21,Y+
029D FDE0 SBRC R30,0
029E 9508 RET
029F 9169 LD R22,Y+
02A0 9179 LD R23,Y+
02A1 FDE1 SBRC R30,1
02A2 9508 RET
02A3 90A9 LD R10,Y+
02A4 90B9 LD R11,Y+
02A5 FDE2 SBRC R30,2
02A6 9508 RET
02A7 90C9 LD R12,Y+
02A8 90D9 LD R13,Y+
02A9 FDE3 SBRC R30,3
02AA 9508 RET
02AB 90E9 LD R14,Y+
02AC 90F9 LD R15,Y+
02AD 9508 RET
push_gset2:
02AE 937A ST R23,-Y
02AF 936A ST R22,-Y
02B0 CFE6 RJMP push_gset1
push_gset3:
02B1 92BA ST R11,-Y
02B2 92AA ST R10,-Y
02B3 CFFA RJMP push_gset2
pop_gset3:
02B4 E0E4 LDI R30,4
02B5 CFE5 RJMP pop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -