📄 ps2_kb.lst
字号:
(0063) up=0;
0195 2422 CLR R2
0196 922000C0 STS 0xC0,R2
(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 0xBF,R2
(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 0xBF,R24
(0071) shiftup=1;
01C5 938000C1 STS 0xC1,R24
(0072) }
(0073) case 0x59:{
(0074) shift=1;
01C7 E081 LDI R24,1
01C8 938000BF STS 0xBF,R24
(0075) shiftup=1;
01CA 938000C1 STS 0xC1,R24
(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 LPM R2,0(Z)
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 LPM R30,0(Z)
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 LPM R16,0(Z)
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 LPM R2,0(Z)
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 LPM R30,0(Z)
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 LPM R16,0(Z)
0217 DF32 RCALL _put_kbbuff
(0090) }
(0091) }
(0092) }
(0093) }
(0094) }
0218 D050 RCALL pop_gset3
0219 9508 RET
_int1_isr:
021A D06D RCALL push_lset
021B D04F 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 0x10,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 _bitcount,R24
(0106) break;}
0238 C028 RJMP 0x0261
(0107) case 2:{
(0108) bitcount--;
0239 91800103 LDS R24,_bitcount
023B 5081 SUBI R24,1
023C 93800103 STS _bitcount,R24
(0109) break;}
023E C022 RJMP 0x0261
(0110) case 1:{
(0111) bitcount--;
023F 91800103 LDS R24,_bitcount
0241 5081 SUBI R24,1
0242 93800103 STS _bitcount,R24
(0112) if ((PIN_KB&(1<<DATAPIN))==0)
0244 9982 SBIC 0x10,2
0245 C004 RJMP 0x024A
(0113) {
(0114) bitcount=11;
0246 E08B LDI R24,0xB
0247 93800103 STS _bitcount,R24
(0115) return;
0249 C017 RJMP 0x0261
(0116) }
(0117) else
(0118) {
(0119) bitcount=11;
024A E08B LDI R24,0xB
024B 93800103 STS _bitcount,R24
(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 0xC2,R2
(0125) if((PIN_KB&(1<<DATAPIN))!=0)
0256 9B82 SBIS 0x10,2
0257 C004 RJMP 0x025C
(0126) data|=0x80;
0258 2D82 MOV R24,R2
0259 6880 ORI R24,0x80
025A 938000C2 STS 0xC2,R24
(0127) bitcount--;
025C 91800103 LDS R24,_bitcount
025E 5081 SUBI R24,1
025F 93800103 STS _bitcount,R24
(0128) }
(0129) }
(0130) }
0261 D00C RCALL pop_gset1
0262 D03C RCALL pop_lset
0263 9518 RETI
FILE: E:\icc\iccavr\mega8\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 LPM R16,0(Z)
(0006) clr r17
0267 2711 CLR R17
(0007) ret
FILE: <library>
0268 9508 RET
pop_gset3:
0269 E0E4 LDI R30,4
026A C004 RJMP pop
push_gset1:
026B 935A ST R21,-Y
026C 934A ST R20,-Y
026D 9508 RET
pop_gset1:
026E E0E1 LDI R30,1
pop:
026F 9149 LD R20,Y+
0270 9159 LD R21,Y+
0271 FDE0 SBRC R30,0
0272 9508 RET
0273 9169 LD R22,Y+
0274 9179 LD R23,Y+
0275 FDE1 SBRC R30,1
0276 9508 RET
0277 90A9 LD R10,Y+
0278 90B9 LD R11,Y+
0279 FDE2 SBRC R30,2
027A 9508 RET
027B 90C9 LD R12,Y+
027C 90D9 LD R13,Y+
027D FDE3 SBRC R30,3
027E 9508 RET
027F 90E9 LD R14,Y+
0280 90F9 LD R15,Y+
0281 9508 RET
push_gset2:
0282 937A ST R23,-Y
0283 936A ST R22,-Y
0284 CFE6 RJMP push_gset1
push_gset3:
0285 92BA ST R11,-Y
0286 92AA ST R10,-Y
0287 CFFA RJMP push_gset2
push_lset:
0288 93FA ST R31,-Y
0289 93EA ST R30,-Y
028A 93BA ST R27,-Y
028B 93AA ST R26,-Y
028C 939A ST R25,-Y
028D 938A ST R24,-Y
028E 933A ST R19,-Y
028F 932A ST R18,-Y
0290 931A ST R17,-Y
0291 930A ST R16,-Y
0292 929A ST R9,-Y
0293 928A ST R8,-Y
0294 927A ST R7,-Y
0295 926A ST R6,-Y
0296 925A ST R5,-Y
0297 924A ST R4,-Y
0298 923A ST R3,-Y
0299 922A ST R2,-Y
029A 921A ST R1,-Y
029B 920A ST R0,-Y
029C B60F IN R0,0x3F
029D 920A ST R0,-Y
029E 9508 RET
pop_lset:
029F 9009 LD R0,Y+
02A0 BE0F OUT 0x3F,R0
02A1 9009 LD R0,Y+
02A2 9019 LD R1,Y+
02A3 9029 LD R2,Y+
02A4 9039 LD R3,Y+
02A5 9049 LD R4,Y+
02A6 9059 LD R5,Y+
02A7 9069 LD R6,Y+
02A8 9079 LD R7,Y+
02A9 9089 LD R8,Y+
02AA 9099 LD R9,Y+
02AB 9109 LD R16,Y+
02AC 9119 LD R17,Y+
02AD 9129 LD R18,Y+
02AE 9139 LD R19,Y+
02AF 9189 LD R24,Y+
02B0 9199 LD R25,Y+
02B1 91A9 LD R26,Y+
02B2 91B9 LD R27,Y+
02B3 91E9 LD R30,Y+
02B4 91F9 LD R31,Y+
02B5 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -