📄 hal_key.lst
字号:
\ 000039 EF MOV A,R7
\ 00003A D2E0 SETB 0xE0 /* A */.0
\ ??HalKeyRead_6:
\ 00003C FF MOV R7,A
\ 00003D 804A SJMP ??HalKeyRead_4
373 }
374 else if ((adc >= 75) && (adc <= 85))
\ ??HalKeyRead_3:
\ 00003F C3 CLR C
\ 000040 944B SUBB A,#0x4b
\ 000042 EA MOV A,R2
\ 000043 400A JC ??HalKeyRead_7
\ 000045 C3 CLR C
\ 000046 9456 SUBB A,#0x56
\ 000048 503F JNC ??HalKeyRead_4
375 {
376 ksave0 |= HAL_KEY_RIGHT;
\ ??HalKeyRead_8:
\ 00004A EF MOV A,R7
\ 00004B D2E1 SETB 0xE0 /* A */.1
\ 00004D 80ED SJMP ??HalKeyRead_6
377 }
378 else if ((adc >= 45) && (adc <= 55))
\ ??HalKeyRead_7:
\ 00004F C3 CLR C
\ 000050 942D SUBB A,#0x2d
\ 000052 400B JC ??HalKeyRead_9
\ 000054 EA MOV A,R2
\ 000055 C3 CLR C
\ 000056 9438 SUBB A,#0x38
\ 000058 502F JNC ??HalKeyRead_4
379 {
380 ksave0 |= HAL_KEY_LEFT;
\ ??HalKeyRead_10:
\ 00005A EF MOV A,R7
\ 00005B D2E3 SETB 0xE0 /* A */.3
\ 00005D 80DD SJMP ??HalKeyRead_6
381 }
382 else if (adc <= 10)
\ ??HalKeyRead_9:
\ 00005F EA MOV A,R2
\ 000060 C3 CLR C
\ 000061 940B SUBB A,#0xb
\ 000063 5024 JNC ??HalKeyRead_4
383 {
384 ksave0 |= HAL_KEY_DOWN;
\ 000065 EF MOV A,R7
\ 000066 D2E4 SETB 0xE0 /* A */.4
\ 000068 80D2 SJMP ??HalKeyRead_6
385 }
386 else if ((adc >= 101) && (adc <= 115))
387 {
388 }
389 }
390 else
391 {
392 /* Rev C */
393 if ((adc >= 90) && (adc <= 104))
\ ??HalKeyRead_2:
\ 00006A EA MOV A,R2
\ 00006B C3 CLR C
\ 00006C 945A SUBB A,#0x5a
\ 00006E EA MOV A,R2
\ 00006F 4007 JC ??HalKeyRead_11
\ 000071 C3 CLR C
\ 000072 9469 SUBB A,#0x69
\ 000074 5013 JNC ??HalKeyRead_4
\ 000076 80C1 SJMP ??HalKeyRead_5
394 {
395 ksave0 |= HAL_KEY_UP;
396 }
397 else if ((adc >= 75) && (adc <= 89))
\ ??HalKeyRead_11:
\ 000078 C3 CLR C
\ 000079 944B SUBB A,#0x4b
\ 00007B 50CD JNC ??HalKeyRead_8
398 {
399 ksave0 |= HAL_KEY_RIGHT;
400 }
401 else if ((adc >= 45) && (adc <= 56))
\ 00007D EA MOV A,R2
\ 00007E C3 CLR C
\ 00007F 942D SUBB A,#0x2d
\ 000081 40DC JC ??HalKeyRead_9
\ 000083 EA MOV A,R2
\ 000084 C3 CLR C
\ 000085 9439 SUBB A,#0x39
\ 000087 40D1 JC ??HalKeyRead_10
402 {
403 ksave0 |= HAL_KEY_LEFT;
404 }
405 else if (adc <= 10)
406 {
407 ksave0 |= HAL_KEY_DOWN;
408 }
409 else if ((adc >= 105) && (adc <= 121))
410 {
411 }
412 }
413
414 } while (ksave0 != ksave1);
\ ??HalKeyRead_4:
\ 000089 E5.. MOV A,?V0 + 0
\ 00008B 6F XRL A,R7
\ 00008C 7089 JNZ ??HalKeyRead_1
415
416 keys |= ksave0;
417
418 #endif
419
420 #endif /* HAL_KEY */
421
422 return keys;
\ 00008E EF MOV A,R7
\ 00008F 4E ORL A,R6
\ 000090 F9 MOV R1,A
\ 000091 REQUIRE ?Subroutine2
\ 000091 ; // Fall through to label ?Subroutine2
423
424 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine2:
\ 000000 7F01 MOV R7,#0x1
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
425
426
427 /**************************************************************************************************
428 * @fn HalKeyPoll
429 *
430 * @brief Called by hal_driver to poll the keys
431 *
432 * @param None
433 *
434 * @return None
435 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
436 void HalKeyPoll (void)
\ HalKeyPoll:
437 {
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
438 #if (HAL_KEY == TRUE)
439
440 uint8 keys = 0;
\ 000005 75..00 MOV ?V0 + 0,#0x0
441
442 #if defined (HAL_KEY_JOYSTICK_ENABLE)
443 uint8 ksave0 = 0;
\ 000008 7E00 MOV R6,#0x0
444 uint8 ksave1;
445 uint8 adc;
446 #endif
447
448 /*
449 * If interrupts are enabled, get the status of the interrupt-driven keys from 'halSaveIntKey'
450 * which is updated by the key ISR. If Polling, read these keys directly.
451 */
452 #if defined (HAL_KEY_SW_6_ENABLE)
453 if (!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT)) /* Key is active low */
\ 00000A A281 MOV C,0x80.1
\ 00000C 4003 JC ??HalKeyPoll_0
454 {
455 keys |= HAL_KEY_SW_6;
\ 00000E 75..20 MOV ?V0 + 0,#0x20
456 }
457 #endif
458 #if defined (HAL_KEY_SW_5_ENABLE)
459 if (HAL_KEY_SW_5_PORT & HAL_KEY_SW_5_BIT) /* Key is active high */
\ ??HalKeyPoll_0:
\ 000011 A2A0 MOV C,0xa0.0
\ 000013 5006 JNC ??HalKeyPoll_1
460 {
461 keys |= HAL_KEY_SW_5;
\ 000015 E5.. MOV A,?V0 + 0
\ 000017 D2E2 SETB 0xE0 /* A */.2
\ 000019 F5.. MOV ?V0 + 0,A
462 }
463 #endif
464
465 #if defined (HAL_KEY_JOYSTICK_ENABLE)
466 /*
467 * The joystick control is encoded as an analog voltage. Keep on reading
468 * the ADC until two consecutive key decisions are the same.
469 */
470
471 do
472 {
473 ksave1 = ksave0; /* save previouse key reading */
\ ??HalKeyPoll_1:
\ 00001B EE MOV A,R6
\ 00001C FF MOV R7,A
474
475 adc = HalAdcRead (HAL_KEY_JOY_CHN, HAL_ADC_RESOLUTION_8);
\ 00001D ; Setup parameters for call to function HalAdcRead
\ 00001D 7A01 MOV R2,#0x1
\ 00001F 7906 MOV R1,#0x6
\ 000021 90.... MOV DPTR,#(HalAdcRead & 0xffff)
\ 000024 74.. MOV A,#((HalAdcRead >> 16) & 0xff)
\ 000026 12.... LCALL ?BCALL ; Banked call to: DPTR()
476
477 if (CHVER == 0x01)
\ 000029 90DF60 MOV DPTR,#-0x20a0
\ 00002C E0 MOVX A,@DPTR
\ 00002D 6401 XRL A,#0x1
\ 00002F 703D JNZ ??HalKeyPoll_2
478 {
479 /* Rev B */
480 if ((adc >= 90) && (adc <= 100))
\ 000031 EA MOV A,R2
\ 000032 C3 CLR C
\ 000033 945A SUBB A,#0x5a
\ 000035 EA MOV A,R2
\ 000036 400B JC ??HalKeyPoll_3
\ 000038 C3 CLR C
\ 000039 9465 SUBB A,#0x65
\ 00003B 5050 JNC ??HalKeyPoll_4
481 {
482 ksave0 |= HAL_KEY_UP;
\ ??HalKeyPoll_5:
\ 00003D EE MOV A,R6
\ 00003E D2E0 SETB 0xE0 /* A */.0
\ ??HalKeyPoll_6:
\ 000040 FE MOV R6,A
\ 000041 804A SJMP ??HalKeyPoll_4
483 }
484 else if ((adc >= 75) && (adc <= 85))
\ ??HalKeyPoll_3:
\ 000043 C3 CLR C
\ 000044 944B SUBB A,#0x4b
\ 000046 EA MOV A,R2
\ 000047 400A JC ??HalKeyPoll_7
\ 000049 C3 CLR C
\ 00004A 9456 SUBB A,#0x56
\ 00004C 503F JNC ??HalKeyPoll_4
485 {
486 ksave0 |= HAL_KEY_RIGHT;
\ ??HalKeyPoll_8:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -