📄 hal_key.lst
字号:
\ 00004E EE MOV A,R6
\ 00004F D2E1 SETB 0xE0 /* A */.1
\ 000051 80ED SJMP ??HalKeyPoll_6
487 }
488 else if ((adc >= 45) && (adc <= 55))
\ ??HalKeyPoll_7:
\ 000053 C3 CLR C
\ 000054 942D SUBB A,#0x2d
\ 000056 400B JC ??HalKeyPoll_9
\ 000058 EA MOV A,R2
\ 000059 C3 CLR C
\ 00005A 9438 SUBB A,#0x38
\ 00005C 502F JNC ??HalKeyPoll_4
489 {
490 ksave0 |= HAL_KEY_LEFT;
\ ??HalKeyPoll_10:
\ 00005E EE MOV A,R6
\ 00005F D2E3 SETB 0xE0 /* A */.3
\ 000061 80DD SJMP ??HalKeyPoll_6
491 }
492 else if (adc <= 10)
\ ??HalKeyPoll_9:
\ 000063 EA MOV A,R2
\ 000064 C3 CLR C
\ 000065 940B SUBB A,#0xb
\ 000067 5024 JNC ??HalKeyPoll_4
493 {
494 ksave0 |= HAL_KEY_DOWN;
\ 000069 EE MOV A,R6
\ 00006A D2E4 SETB 0xE0 /* A */.4
\ 00006C 80D2 SJMP ??HalKeyPoll_6
495 }
496 else if ((adc >= 101) && (adc <= 115))
497 {
498 }
499 }
500 else
501 {
502 /* Rev C */
503 if ((adc >= 90) && (adc <= 104))
\ ??HalKeyPoll_2:
\ 00006E EA MOV A,R2
\ 00006F C3 CLR C
\ 000070 945A SUBB A,#0x5a
\ 000072 EA MOV A,R2
\ 000073 4007 JC ??HalKeyPoll_11
\ 000075 C3 CLR C
\ 000076 9469 SUBB A,#0x69
\ 000078 5013 JNC ??HalKeyPoll_4
\ 00007A 80C1 SJMP ??HalKeyPoll_5
504 {
505 ksave0 |= HAL_KEY_UP;
506 }
507 else if ((adc >= 75) && (adc <= 89))
\ ??HalKeyPoll_11:
\ 00007C C3 CLR C
\ 00007D 944B SUBB A,#0x4b
\ 00007F 50CD JNC ??HalKeyPoll_8
508 {
509 ksave0 |= HAL_KEY_RIGHT;
510 }
511 else if ((adc >= 45) && (adc <= 56))
\ 000081 EA MOV A,R2
\ 000082 C3 CLR C
\ 000083 942D SUBB A,#0x2d
\ 000085 40DC JC ??HalKeyPoll_9
\ 000087 EA MOV A,R2
\ 000088 C3 CLR C
\ 000089 9439 SUBB A,#0x39
\ 00008B 40D1 JC ??HalKeyPoll_10
512 {
513 ksave0 |= HAL_KEY_LEFT;
514 }
515 else if (adc <= 10)
516 {
517 ksave0 |= HAL_KEY_DOWN;
518 }
519 else if ((adc >= 105) && (adc <= 121))
520 {
521 }
522 }
523
524
525 } while (ksave0 != ksave1);
\ ??HalKeyPoll_4:
\ 00008D EF MOV A,R7
\ 00008E 6E XRL A,R6
\ 00008F 708A JNZ ??HalKeyPoll_1
526
527 keys |= ksave0;
\ 000091 EE MOV A,R6
\ 000092 42.. ORL ?V0 + 0,A
528
529 #endif
530
531 /* Exit if polling and no keys have changed */
532 if (!Hal_KeyIntEnable)
\ 000094 90.... MOV DPTR,#Hal_KeyIntEnable
\ 000097 E0 MOVX A,@DPTR
\ 000098 700B JNZ ??HalKeyPoll_12
533 {
534 if (keys == halKeySavedKeys)
\ 00009A 90.... MOV DPTR,#??halKeySavedKeys
\ 00009D E0 MOVX A,@DPTR
\ 00009E 65.. XRL A,?V0 + 0
\ 0000A0 601E JZ ??HalKeyPoll_13
535 {
536 return;
537 }
538 halKeySavedKeys = keys; /* Store the current keys for comparation next time */
\ 0000A2 E5.. MOV A,?V0 + 0
\ 0000A4 F0 MOVX @DPTR,A
539 }
540
541 /* Invoke Callback if new keys were depressed */
542 if (keys && (pHalKeyProcessFunction))
\ ??HalKeyPoll_12:
\ 0000A5 E5.. MOV A,?V0 + 0
\ 0000A7 6017 JZ ??HalKeyPoll_13
\ 0000A9 90.... MOV DPTR,#??pHalKeyProcessFunction
\ 0000AC 12.... LCALL ?Subroutine0 & 0xFFFF
\ ??CrossCallReturnLabel_1:
\ 0000AF 7A00 MOV R2,#0x0
\ 0000B1 EC MOV A,R4
\ 0000B2 4D ORL A,R5
\ 0000B3 4E ORL A,R6
\ 0000B4 600A JZ ??HalKeyPoll_13
543 {
544 (pHalKeyProcessFunction) (keys, HAL_KEY_STATE_NORMAL);
\ 0000B6 ; Setup parameters for indirect call
\ 0000B6 A9.. MOV R1,?V0 + 0
\ 0000B8 E0 MOVX A,@DPTR
\ 0000B9 8C82 MOV DPL,R4
\ 0000BB 8D83 MOV DPH,R5
\ 0000BD 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ ??HalKeyPoll_13:
\ 0000C0 02.... LJMP ?Subroutine2 & 0xFFFF
545 }
546
547 #endif /* HAL_KEY */
548
549 }
550
551
552 /**************************************************************************************************
553 * @fn halProcessKeyInterrupt
554 *
555 * @brief Checks to see if it's a valid key interrupt, saves interrupt driven key states for
556 * processing by HalKeyRead(), and debounces keys by scheduling HalKeyRead() 25ms later.
557 *
558 * @param
559 *
560 * @return
561 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
562 void halProcessKeyInterrupt (void)
\ halProcessKeyInterrupt:
563 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
564
565 #if (HAL_KEY == TRUE)
566
567 bool valid=FALSE;
\ 000004 7A00 MOV R2,#0x0
568
569 #if defined (HAL_KEY_SW_6_ENABLE)
570 if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT) /* Interrupt Flag has been set */
\ 000006 E589 MOV A,0x89
\ 000008 A2E1 MOV C,0xE0 /* A */.1
\ 00000A 5004 JNC ??halProcessKeyInterrupt_0
571 {
572 HAL_KEY_SW_6_PXIFG = ~(HAL_KEY_SW_6_BIT); /* Clear Interrupt Flag */
\ 00000C 7589FD MOV 0x89,#-0x3
573 valid = TRUE;
\ 00000F 0A INC R2
574 }
575 #endif
576
577 #if defined (HAL_KEY_SW_5_ENABLE)
578 if (HAL_KEY_SW_5_PXIFG & HAL_KEY_SW_5_BIT) /* Interrupt Flag has been set */
\ ??halProcessKeyInterrupt_0:
\ 000010 E58B MOV A,0x8b
\ 000012 A2E0 MOV C,0xE0 /* A */.0
\ 000014 5005 JNC ??halProcessKeyInterrupt_1
579 {
580 HAL_KEY_SW_5_PXIFG = ~(HAL_KEY_SW_5_BIT); /* Clear Interrupt Flag */
\ 000016 758BFE MOV 0x8b,#-0x2
581 valid = TRUE;
\ 000019 8003 SJMP ??halProcessKeyInterrupt_2
582 }
583 #endif
584
585 if (valid)
\ ??halProcessKeyInterrupt_1:
\ 00001B EA MOV A,R2
\ 00001C 6015 JZ ??halProcessKeyInterrupt_3
586 {
587 osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_DEBOUNCE_VALUE);
\ ??halProcessKeyInterrupt_2:
\ 00001E ; Setup parameters for call to function osal_start_timerEx
\ 00001E 7C19 MOV R4,#0x19
\ 000020 7D00 MOV R5,#0x0
\ 000022 7A01 MOV R2,#0x1
\ 000024 7B00 MOV R3,#0x0
\ 000026 90.... MOV DPTR,#Hal_TaskID
\ 000029 E0 MOVX A,@DPTR
\ 00002A F9 MOV R1,A
\ 00002B 90.... MOV DPTR,#(osal_start_timerEx & 0xffff)
\ 00002E 74.. MOV A,#((osal_start_timerEx >> 16) & 0xff)
\ 000030 12.... LCALL ?BCALL ; Banked call to: DPTR()
588 }
589 #endif /* HAL_KEY */
590 }
\ ??halProcessKeyInterrupt_3:
\ 000033 02.... LJMP ?Subroutine1 & 0xFFFF
591
592 /**************************************************************************************************
593 * @fn HalKeyEnterSleep
594 *
595 * @brief - Get called to enter sleep mode
596 *
597 * @param
598 *
599 * @return
600 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
601 void HalKeyEnterSleep ( void )
\ HalKeyEnterSleep:
602 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
603 /* Sleep!!! */
604 }
\ 000000 02.... LJMP ?BRET
605
606 /************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -