⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_key.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   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 + -