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