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

📄 hal_key.lst

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