📄 hal_key.lst
字号:
\ 000065 940B SUBB A,#0xb
\ 000067 5024 JNC ??HalKeyPoll_4
494 {
495 ksave0 |= HAL_KEY_DOWN;
\ 000069 EE MOV A,R6
\ 00006A D2E4 SETB 0xE0 /* A */.4
\ 00006C 80D2 SJMP ??HalKeyPoll_6
496 }
497 else if ((adc >= 101) && (adc <= 115))
498 {
499 }
500 }
501 else
502 {
503 /* Rev C */
504 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
505 {
506 ksave0 |= HAL_KEY_UP;
507 }
508 else if ((adc >= 75) && (adc <= 89))
\ ??HalKeyPoll_11:
\ 00007C C3 CLR C
\ 00007D 944B SUBB A,#0x4b
\ 00007F 50CD JNC ??HalKeyPoll_8
509 {
510 ksave0 |= HAL_KEY_RIGHT;
511 }
512 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
513 {
514 ksave0 |= HAL_KEY_LEFT;
515 }
516 else if (adc <= 10)
517 {
518 ksave0 |= HAL_KEY_DOWN;
519 }
520 else if ((adc >= 105) && (adc <= 121))
521 {
522 }
523 }
524
525
526 } while (ksave0 != ksave1);
\ ??HalKeyPoll_4:
\ 00008D EF MOV A,R7
\ 00008E 6E XRL A,R6
\ 00008F 708A JNZ ??HalKeyPoll_1
527
528 keys |= ksave0;
\ 000091 EE MOV A,R6
\ 000092 42.. ORL ?V0 + 0,A
529
530 #endif
531
532 /* Exit if polling and no keys have changed */
533 if (!Hal_KeyIntEnable)
\ 000094 90.... MOV DPTR,#Hal_KeyIntEnable
\ 000097 E0 MOVX A,@DPTR
\ 000098 700B JNZ ??HalKeyPoll_12
534 {
535 if (keys == halKeySavedKeys)
\ 00009A 90.... MOV DPTR,#??halKeySavedKeys
\ 00009D E0 MOVX A,@DPTR
\ 00009E 65.. XRL A,?V0 + 0
\ 0000A0 601E JZ ??HalKeyPoll_13
536 {
537 return;
538 }
539 halKeySavedKeys = keys; /* Store the current keys for comparation next time */
\ 0000A2 E5.. MOV A,?V0 + 0
\ 0000A4 F0 MOVX @DPTR,A
540 }
541
542 /* Invoke Callback if new keys were depressed */
543 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
544 {
545 (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
546 }
547
548 #endif /* HAL_KEY */
549
550 }
551
552
553 /**************************************************************************************************
554 * @fn halProcessKeyInterrupt
555 *
556 * @brief Checks to see if it's a valid key interrupt, saves interrupt driven key states for
557 * processing by HalKeyRead(), and debounces keys by scheduling HalKeyRead() 25ms later.
558 *
559 * @param
560 *
561 * @return
562 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
563 void halProcessKeyInterrupt (void)
\ halProcessKeyInterrupt:
564 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
565
566 #if (HAL_KEY == TRUE)
567
568 bool valid=FALSE;
\ 000004 7A00 MOV R2,#0x0
569
570 #if defined (HAL_KEY_SW_6_ENABLE)
571 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
572 {
573 HAL_KEY_SW_6_PXIFG = ~(HAL_KEY_SW_6_BIT); /* Clear Interrupt Flag */
\ 00000C 7589FD MOV 0x89,#-0x3
574 valid = TRUE;
\ 00000F 0A INC R2
575 }
576 #endif
577
578 #if defined (HAL_KEY_SW_5_ENABLE)
579 if (HAL_KEY_SW_5_PXIFG & HAL_KEY_SW_5_BIT) /* Interrupt Flag has been set */
\ ??halProcessKeyInterrupt_0:
\ 000010 E589 MOV A,0x89
\ 000012 A2E5 MOV C,0xE0 /* A */.5
\ 000014 5005 JNC ??halProcessKeyInterrupt_1
580 {
581 HAL_KEY_SW_5_PXIFG = ~(HAL_KEY_SW_5_BIT); /* Clear Interrupt Flag */
\ 000016 7589DF MOV 0x89,#-0x21
582 valid = TRUE;
\ 000019 8003 SJMP ??halProcessKeyInterrupt_2
583 }
584 #endif
585
586 if (valid)
\ ??halProcessKeyInterrupt_1:
\ 00001B EA MOV A,R2
\ 00001C 6015 JZ ??halProcessKeyInterrupt_3
587 {
588 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()
589 }
590 #endif /* HAL_KEY */
591 }
\ ??halProcessKeyInterrupt_3:
\ 000033 02.... LJMP ?Subroutine1 & 0xFFFF
592
593 /**************************************************************************************************
594 * @fn HalKeyEnterSleep
595 *
596 * @brief - Get called to enter sleep mode
597 *
598 * @param
599 *
600 * @return
601 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
602 void HalKeyEnterSleep ( void )
\ HalKeyEnterSleep:
603 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
604 /* Sleep!!! */
605 }
\ 000000 02.... LJMP ?BRET
606
607 /**************************************************************************************************
608 * @fn HalKeyExitSleep
609 *
610 * @brief - Get called when sleep is over
611 *
612 * @param
613 *
614 * @return - return saved keys
615 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
616 uint8 HalKeyExitSleep ( void )
\ HalKeyExitSleep:
617 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
618 /* Wake up and read keys */
619 return ( HalKeyRead () );
\ 000004 ; Setup parameters for call to function HalKeyRead
\ 000004 90.... MOV DPTR,#(HalKeyRead & 0xffff)
\ 000007 74.. MOV A,#((HalKeyRead >> 16) & 0xff)
\ 000009 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00000C 02.... LJMP ?Subroutine
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -