📄 训练项目九:ps2键盘的使用.lst
字号:
NO DEBUG INFORMATION AVAILABLE!
__text_start:
__start:
AA EFCF LDI R28,0xFF
AB E0DF LDI R29,0xF
AC BFCD OUT 0x3D,R28
AD BFDE OUT 0x3E,R29
AE 51C0 SUBI R28,0x10
AF 40D0 SBCI R29,0
B0 EA0A LDI R16,0xAA
B1 8308 STD Y+0,R16
B2 2400 CLR R0
B3 E5E3 LDI R30,0x53
B4 E0F1 LDI R31,1
B5 E011 LDI R17,1
B6 35E3 CPI R30,0x53
B7 07F1 CPC R31,R17
B8 F011 BEQ 0x00BB
B9 9201 ST R0,Z+
BA CFFB RJMP 0x00B6
BB 8300 STD Z+0,R16
BC E6E0 LDI R30,0x60
BD E0F0 LDI R31,0
BE E6A0 LDI R26,0x60
BF E0B0 LDI R27,0
C0 E011 LDI R17,1
C1 E000 LDI R16,0
C2 BF0B OUT 0x3B,R16
C3 35E3 CPI R30,0x53
C4 07F1 CPC R31,R17
C5 F021 BEQ 0x00CA
C6 95C8 LPM
C7 9631 ADIW R30,1
C8 920D ST R0,X+
C9 CFF9 RJMP 0x00C3
CA 940E 0189 CALL _main
_exit:
CC CFFF RJMP _exit
_ps:
CD 921A ST R1,-Y
CE 922A ST R2,-Y
CF 938A ST R24,-Y
D0 939A ST R25,-Y
D1 B61F IN R1,0x3F
D2 921A ST R1,-Y
D3 9020 0064 LDS R2,count
D5 E080 LDI R24,0
D6 1582 CP R24,R2
D7 F4C0 BCC 0x00F0
D8 2D82 MOV R24,R2
D9 3089 CPI R24,0x9
DA F4A8 BCC 0x00F0
DB 2422 CLR R2
DC 9220 0063 STS flag,R2
DE 9020 0060 LDS R2,key
E0 9426 LSR R2
E1 9220 0060 STS key,R2
E3 9B0D SBIS 0x01,5
E4 C005 RJMP 0x00EA
E5 2D82 MOV R24,R2
E6 6880 ORI R24,0x80
E7 9380 0060 STS key,R24
E9 C009 RJMP 0x00F3
EA 9180 0060 LDS R24,key
EC 778F ANDI R24,0x7F
ED 9380 0060 STS key,R24
EF C003 RJMP 0x00F3
F0 E081 LDI R24,1
F1 9380 0063 STS flag,R24
F3 9180 0064 LDS R24,count
F5 5F8F SUBI R24,0xFF
F6 9380 0064 STS count,R24
F8 9B0C SBIS 0x01,4
F9 CFFE RJMP 0x00F8
FA E08A LDI R24,0xA
FB 9020 0064 LDS R2,count
FD 1582 CP R24,R2
FE F418 BCC 0x0102
FF 2422 CLR R2
100 9220 0064 STS count,R2
102 9019 LD R1,Y+
103 BE1F OUT 0x3F,R1
104 9199 LD R25,Y+
105 9189 LD R24,Y+
106 9029 LD R2,Y+
107 9019 LD R1,Y+
108 9518 RETI
_key_check:
109 940E 0242 CALL push_xgsetF000
10B 2744 CLR R20
10C 2F60 MOV R22,R16
10D 2777 CLR R23
10E 3569 CPI R22,0x59
10F E0E0 LDI R30,0
110 077E CPC R23,R30
111 F109 BEQ 0x0133
112 E589 LDI R24,0x59
113 E090 LDI R25,0
114 1786 CP R24,R22
115 0797 CPC R25,R23
116 F02C BLT 0x011C
117 3162 CPI R22,0x12
118 E0E0 LDI R30,0
119 077E CPC R23,R30
11A F059 BEQ 0x0126
11B C024 RJMP 0x0140
11C 3F60 CPI R22,0xF0
11D E0E0 LDI R30,0
11E 077E CPC R23,R30
11F F009 BEQ 0x0121
120 C01F RJMP 0x0140
121 E081 LDI R24,1
122 9380 0062 STS up,R24
124 2700 CLR R16
125 C061 RJMP 0x0187
126 9020 0062 LDS R2,up
128 2022 TST R2
129 F419 BNE 0x012D
12A E061 LDI R22,1
12B E070 LDI R23,0
12C C002 RJMP 0x012F
12D 2766 CLR R22
12E 2777 CLR R23
12F 9360 0061 STS shift,R22
131 2700 CLR R16
132 C054 RJMP 0x0187
133 9020 0062 LDS R2,up
135 2022 TST R2
136 F419 BNE 0x013A
137 E061 LDI R22,1
138 E070 LDI R23,0
139 C002 RJMP 0x013C
13A 2766 CLR R22
13B 2777 CLR R23
13C 9360 0061 STS shift,R22
13E 2700 CLR R16
13F C047 RJMP 0x0187
140 9020 0062 LDS R2,up
142 2022 TST R2
143 F009 BEQ 0x0145
144 C03E RJMP 0x0183
145 9020 0061 LDS R2,shift
147 2022 TST R2
148 F4D9 BNE 0x0164
149 2744 CLR R20
14A C016 RJMP 0x0161
14B E685 LDI R24,0x65
14C E090 LDI R25,0
14D 2FE4 MOV R30,R20
14E 27FF CLR R31
14F 0FEE LSL R30
150 1FFF ROL R31
151 0FE8 ADD R30,R24
152 1FF9 ADC R31,R25
153 8020 LDD R2,Z+0
154 1620 CP R2,R16
155 F451 BNE 0x0160
156 E686 LDI R24,0x66
157 E090 LDI R25,0
158 2FE4 MOV R30,R20
159 27FF CLR R31
15A 0FEE LSL R30
15B 1FFF ROL R31
15C 0FE8 ADD R30,R24
15D 1FF9 ADC R31,R25
15E 8100 LDD R16,Z+0
15F C027 RJMP 0x0187
160 9543 INC R20
161 334C CPI R20,0x3C
162 F340 BCS 0x014B
163 C023 RJMP 0x0187
164 9180 0061 LDS R24,shift
166 3081 CPI R24,1
167 F4F9 BNE 0x0187
168 2744 CLR R20
169 C016 RJMP 0x0180
16A ED8D LDI R24,0xDD
16B E090 LDI R25,0
16C 2FE4 MOV R30,R20
16D 27FF CLR R31
16E 0FEE LSL R30
16F 1FFF ROL R31
170 0FE8 ADD R30,R24
171 1FF9 ADC R31,R25
172 8020 LDD R2,Z+0
173 1620 CP R2,R16
174 F451 BNE 0x017F
175 ED8E LDI R24,0xDE
176 E090 LDI R25,0
177 2FE4 MOV R30,R20
178 27FF CLR R31
179 0FEE LSL R30
17A 1FFF ROL R31
17B 0FE8 ADD R30,R24
17C 1FF9 ADC R31,R25
17D 8100 LDD R16,Z+0
17E C008 RJMP 0x0187
17F 9543 INC R20
180 334B CPI R20,0x3B
181 F340 BCS 0x016A
182 C004 RJMP 0x0187
183 2422 CLR R2
184 9220 0062 STS up,R2
186 2700 CLR R16
187 940C 0247 JMP pop_xgsetF000
_main:
189 9722 SBIW R28,2
18A 24AA CLR R10
18B 2422 CLR R2
18C BE25 OUT 0x35,R2
18D 9478 BSET 7
18E 940E 01C7 CALL _lcd_init
190 B182 IN R24,0x02
191 7C8F ANDI R24,0xCF
192 B982 OUT 0x02,R24
193 E180 LDI R24,0x10
194 BF89 OUT 0x39,R24
195 E082 LDI R24,2
196 BF8A OUT 0x3A,R24
197 940E 01DF CALL _lcd_clear
199 C00E RJMP 0x01A8
19A 9100 0060 LDS R16,key
19C DF6C RCALL _key_check
19D 2EA0 MOV R10,R16
19E 2C2A MOV R2,R10
19F 2433 CLR R3
1A0 8239 STD Y+1,R3
1A1 8228 STD Y+0,R2
1A2 2722 CLR R18
1A3 2733 CLR R19
1A4 2700 CLR R16
1A5 2711 CLR R17
1A6 940E 0229 CALL _lcd_putss
1A8 CFF1 RJMP 0x019A
1A9 9622 ADIW R28,2
1AA 9508 RET
_delay:
1AB 934A ST R20,-Y
1AC E041 LDI R20,1
1AD C001 RJMP 0x01AF
1AE 9543 INC R20
1AF 2E24 MOV R2,R20
1B0 2433 CLR R3
1B1 1620 CP R2,R16
1B2 0631 CPC R3,R17
1B3 F3D0 BCS 0x01AE
1B4 9149 LD R20,Y+
1B5 9508 RET
_lcd_w:
1B6 934A ST R20,-Y
1B7 935A ST R21,-Y
1B8 E040 LDI R20,0
1B9 E950 LDI R21,0x90
1BA 990F SBIC 0x01,7
1BB CFFE RJMP 0x01BA
1BC 9AC0 SBI 0x18,0
1BD 01FA MOVW R30,R20
1BE 8300 STD Z+0,R16
1BF 98C0 CBI 0x18,0
1C0 9A1E SBI 0x03,6
1C1 9B0F SBIS 0x01,7
1C2 CFFE RJMP 0x01C1
1C3 981E CBI 0x03,6
1C4 9159 LD R21,Y+
1C5 9149 LD R20,Y+
1C6 9508 RET
_lcd_init:
1C7 B785 IN R24,0x35
1C8 6880 ORI R24,0x80
1C9 BF85 OUT 0x35,R24
1CA 9AB8 SBI 0x17,0
1CB B388 IN R24,0x18
1CC 7F8E ANDI R24,0xFE
1CD BB88 OUT 0x18,R24
1CE E480 LDI R24,0x40
1CF B982 OUT 0x02,R24
1D0 EF8F LDI R24,0xFF
1D1 B983 OUT 0x03,R24
1D2 98AB CBI 0x15,3
1D3 E00A LDI R16,0xA
1D4 E010 LDI R17,0
1D5 DFD5 RCALL _delay
1D6 9AAB SBI 0x15,3
1D7 E00A LDI R16,0xA
1D8 E010 LDI R17,0
1D9 DFD1 RCALL _delay
1DA 981E CBI 0x03,6
1DB E00A LDI R16,0xA
1DC E010 LDI R17,0
1DD DFCD RCALL _delay
1DE 9508 RET
_lcd_clear:
1DF EF04 LDI R16,0xF4
1E0 DFD5 RCALL _lcd_w
1E1 9508 RET
_lcd_putsc:
1E2 940E 024C CALL push_xgsetF00C
1E4 2EA2 MOV R10,R18
1E5 2F60 MOV R22,R16
1E6 814E LDD R20,Y+6
1E7 815F LDD R21,Y+7
1E8 5F6E SUBI R22,0xFE
1E9 C018 RJMP 0x0202
1EA EF00 LDI R16,0xF0
1EB DFCA RCALL _lcd_w
1EC 2F06 MOV R16,R22
1ED DFC8 RCALL _lcd_w
1EE 2D0A MOV R16,R10
1EF DFC6 RCALL _lcd_w
1F0 01FA MOVW R30,R20
1F1 8100 LDD R16,Z+0
1F2 5A00 SUBI R16,0xA0
1F3 DFC2 RCALL _lcd_w
1F4 5F4F SUBI R20,0xFF
1F5 4F5F SBCI R21,0xFF
1F6 01FA MOVW R30,R20
1F7 8100 LDD R16,Z+0
1F8 5A00 SUBI R16,0xA0
1F9 DFBC RCALL _lcd_w
1FA 5F4F SUBI R20,0xFF
1FB 4F5F SBCI R21,0xFF
1FC 3069 CPI R22,0x9
1FD F018 BCS 0x0201
1FE E062 LDI R22,2
1FF 94A3 INC R10
200 C001 RJMP 0x0202
201 9563 INC R22
202 01FA MOVW R30,R20
203 8020 LDD R2,Z+0
204 2022 TST R2
205 F721 BNE 0x01EA
206 940C 0253 JMP pop_xgsetF00C
_lcd_putse:
208 940E 024C CALL push_xgsetF00C
20A 2EA2 MOV R10,R18
20B 2F40 MOV R20,R16
20C 816E LDD R22,Y+6
20D 817F LDD R23,Y+7
20E 5F4C SUBI R20,0xFC
20F C013 RJMP 0x0223
210 EF01 LDI R16,0xF1
211 DFA4 RCALL _lcd_w
212 2F04 MOV R16,R20
213 DFA2 RCALL _lcd_w
214 2D0A MOV R16,R10
215 DFA0 RCALL _lcd_w
216 01FB MOVW R30,R22
217 8100 LDD R16,Z+0
218 DF9D RCALL _lcd_w
219 5F6F SUBI R22,0xFF
21A 4F7F SBCI R23,0xFF
21B 3143 CPI R20,0x13
21C F028 BCS 0x0222
21D E044 LDI R20,4
21E 2D8A MOV R24,R10
21F 5F88 SUBI R24,0xF8
220 2EA8 MOV R10,R24
221 C001 RJMP 0x0223
222 9543 INC R20
223 01FB MOVW R30,R22
224 8020 LDD R2,Z+0
225 2022 TST R2
226 F749 BNE 0x0210
227 940C 0253 JMP pop_xgsetF00C
_lcd_putss:
229 940E 0238 CALL push_xgset300C
22B 2EA2 MOV R10,R18
22C 2F40 MOV R20,R16
22D 5F4C SUBI R20,0xFC
22E EF01 LDI R16,0xF1
22F DF86 RCALL _lcd_w
230 2F04 MOV R16,R20
231 DF84 RCALL _lcd_w
232 2D0A MOV R16,R10
233 DF82 RCALL _lcd_w
234 810C LDD R16,Y+4
235 DF80 RCALL _lcd_w
236 940C 023D JMP pop_xgset300C
push_xgset300C:
238 935A ST R21,-Y
239 934A ST R20,-Y
23A 92BA ST R11,-Y
23B 92AA ST R10,-Y
23C 9508 RET
pop_xgset300C:
23D 90A9 LD R10,Y+
23E 90B9 LD R11,Y+
23F 9149 LD R20,Y+
240 9159 LD R21,Y+
241 9508 RET
push_xgsetF000:
242 937A ST R23,-Y
243 936A ST R22,-Y
244 935A ST R21,-Y
245 934A ST R20,-Y
246 9508 RET
pop_xgsetF000:
247 9149 LD R20,Y+
248 9159 LD R21,Y+
249 9169 LD R22,Y+
24A 9179 LD R23,Y+
24B 9508 RET
push_xgsetF00C:
24C 937A ST R23,-Y
24D 936A ST R22,-Y
24E 935A ST R21,-Y
24F 934A ST R20,-Y
250 92BA ST R11,-Y
251 92AA ST R10,-Y
252 9508 RET
pop_xgsetF00C:
253 90A9 LD R10,Y+
254 90B9 LD R11,Y+
255 9149 LD R20,Y+
256 9159 LD R21,Y+
257 9169 LD R22,Y+
258 9179 LD R23,Y+
259 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -