📄 keypaddrive.ls1
字号:
191 ; SOURCE LINE # 50
0017 E6 192 MOV A,@R0
0018 540F 193 ANL A,#0FH
001A FF 194 MOV R7,A
001B F6 195 MOV @R0,A
196 ; BufFlag=NOTEMPTY;
197 ; SOURCE LINE # 51
001C 900000 F 198 MOV DPTR,#BufFlag
001F 7402 199 MOV A,#02H
0021 F0 200 MOVX @DPTR,A
201 ; if (Real==Front)
202 ; SOURCE LINE # 52
0022 08 203 INC R0
0023 E6 204 MOV A,@R0
0024 B50703 205 CJNE A,AR7,?C0003
206 ; BufFlag=FULL;
207 ; SOURCE LINE # 53
0027 7401 208 MOV A,#01H
0029 F0 209 MOVX @DPTR,A
210 ; }
211 ; SOURCE LINE # 54
212 ; }
213 ; SOURCE LINE # 55
002A 214 ?C0003:
002A 22 215 RET
216 ; END OF _PutInBuf
217
218 ; //----------------------------------------
219 ; // get char from the key bufffer
220 ; //---------------------------------------
221 ;
222 ; unchar GetKey()
223
---- 224 RSEG ?PR?GetKey?KEYPADDRIVE
0000 225 GetKey:
226 USING 0
227 ; SOURCE LINE # 60
228 ; { unchar x;
229 ; SOURCE LINE # 61
230 ; if (BufFlag!=EMPTY)
231 ; SOURCE LINE # 62
0000 900000 F 232 MOV DPTR,#BufFlag
0003 E0 233 MOVX A,@DPTR
0004 6022 234 JZ ?C0004
235 ; {
236 ; SOURCE LINE # 63
237 ; x=KeyBuf[Front];
238 ; SOURCE LINE # 64
0006 7800 F 239 MOV R0,#LOW (Front)
0008 E6 240 MOV A,@R0
0009 2400 F 241 ADD A,#LOW (KeyBuf)
000B F582 242 MOV DPL,A
000D E4 243 CLR A
000E 3400 F 244 ADDC A,#HIGH (KeyBuf)
0010 F583 245 MOV DPH,A
0012 E0 246 MOVX A,@DPTR
0013 FF 247 MOV R7,A
248 ;---- Variable 'x?141' assigned to Register 'R7' ----
249 ; Front++;
250 ; SOURCE LINE # 65
0014 06 251 INC @R0
252 ; Front&=0x0f;
253 ; SOURCE LINE # 66
0015 E6 254 MOV A,@R0
0016 540F 255 ANL A,#0FH
A51 MACRO ASSEMBLER KEYPADDRIVE 06/29/2005 15:41:36 PAGE 5
0018 FE 256 MOV R6,A
0019 F6 257 MOV @R0,A
258 ; BufFlag=NOTFULL;
259 ; SOURCE LINE # 67
001A 900000 F 260 MOV DPTR,#BufFlag
001D 7403 261 MOV A,#03H
001F F0 262 MOVX @DPTR,A
263 ; if (Real==Front)
264 ; SOURCE LINE # 68
0020 18 265 DEC R0
0021 E6 266 MOV A,@R0
0022 B50602 267 CJNE A,AR6,?C0005
268 ; BufFlag=EMPTY;
269 ; SOURCE LINE # 69
0025 E4 270 CLR A
0026 F0 271 MOVX @DPTR,A
0027 272 ?C0005:
273 ; return(x);
274 ; SOURCE LINE # 70
0027 22 275 RET
276 ; }
277 ; SOURCE LINE # 71
0028 278 ?C0004:
279 ; //else
280 ; return(0);
281 ; SOURCE LINE # 73
0028 7F00 282 MOV R7,#00H
283 ; }
284 ; SOURCE LINE # 74
002A 285 ?C0006:
002A 22 286 RET
287 ; END OF GetKey
288
289 ;
290 ; //--------------------------------------
291 ; // key scan function
292 ; // scan the key and put the key into key buffer
293 ; //-----------------------------------------------
294 ; KeyScan()
295
---- 296 RSEG ?PR?KeyScan?KEYPADDRIVE
0000 297 KeyScan:
298 USING 0
299 ; SOURCE LINE # 80
300 ; {unchar x0,x1,x2,x3;
301 ; SOURCE LINE # 81
302 ;
303 ; switch(KeyPadStatus)
304 ; SOURCE LINE # 83
0000 7800 F 305 MOV R0,#LOW (KeyPadStatus)
0002 E6 306 MOV A,@R0
0003 14 307 DEC A
0004 7003 308 JNZ $ + 5H
0006 020000 F 309 LJMP ?C0029
0009 14 310 DEC A
000A 7003 311 JNZ $ + 5H
000C 020000 F 312 LJMP ?C0031
000F 14 313 DEC A
0010 7003 314 JNZ $ + 5H
0012 020000 F 315 LJMP ?C0053
0015 14 316 DEC A
0016 7003 317 JNZ $ + 5H
0018 020000 F 318 LJMP ?C0055
001B 2404 319 ADD A,#04H
001D 6003 320 JZ $ + 5H
001F 020000 F 321 LJMP ?C0065
A51 MACRO ASSEMBLER KEYPADDRIVE 06/29/2005 15:41:36 PAGE 6
322 ; {
323 ; SOURCE LINE # 84
324 ; case 0 :
325 ; SOURCE LINE # 85
0022 326 ?C0008:
327 ; //--------------------------------------------------------------------------
328 ; // scan the first row
329 ; //--------------------------------------------------------------------------
330 ; KEY_ROW = Row[0];
331 ; SOURCE LINE # 89
0022 900000 F 332 MOV DPTR,#Row
0025 E4 333 CLR A
0026 93 334 MOVC A,@A+DPTR
0027 902000 335 MOV DPTR,#02000H
002A F0 336 MOVX @DPTR,A
337 ;
338 ; Key=KEY_VERTICAL;
339 ; SOURCE LINE # 91
002B 90A000 340 MOV DPTR,#0A000H
002E E0 341 MOVX A,@DPTR
002F F500 F 342 MOV Key,A
343 ; // while(1);
344 ;
345 ; if (Key )
346 ; SOURCE LINE # 94
0031 6024 347 JZ ?C0009
348 ; {
349 ; SOURCE LINE # 95
350 ; if (Vertical0)
351 ; SOURCE LINE # 96
0033 300006 F 352 JNB Vertical0,?C0010
353 ; {
354 ; SOURCE LINE # 97
355 ; Temp=KeyElement0[0];
356 ; SOURCE LINE # 98
0036 900000 F 357 MOV DPTR,#KeyElement0
358 ; KeyPadStatus=1;
359 ; SOURCE LINE # 99
360 ; break;
361 ; SOURCE LINE # 100
0039 020000 F 362 LJMP ?C0080
363 ; }
364 ; SOURCE LINE # 101
003C 365 ?C0010:
366 ;
367 ; if (Vertical1)
368 ; SOURCE LINE # 103
003C 300006 F 369 JNB Vertical1,?C0011
370 ; {
371 ; SOURCE LINE # 104
372 ; Temp=KeyElement0[1];
373 ; SOURCE LINE # 105
003F 900000 F 374 MOV DPTR,#KeyElement0+01H
0042 375 ?C0066:
376 ;
377 ; KeyPadStatus=1;
378 ; SOURCE LINE # 107
379 ; break;
380 ; SOURCE LINE # 108
0042 020000 F 381 LJMP ?C0080
382 ; }
383 ; SOURCE LINE # 109
0045 384 ?C0011:
385 ; if (Vertical2)
386 ; SOURCE LINE # 110
0045 300006 F 387 JNB Vertical2,?C0012
A51 MACRO ASSEMBLER KEYPADDRIVE 06/29/2005 15:41:36 PAGE 7
388 ; {
389 ; SOURCE LINE # 111
390 ; Temp=KeyElement0[2];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -