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

📄 onboard.lst

📁 CC2430上开关控制灯和温度传感器采集两个例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
    192            if ( registeredKeysTaskID == NO_TASK_ID )
   \   000004   90....       MOV     DPTR,#??registeredKeysTaskID
   \   000007   E0           MOVX    A,@DPTR
   \   000008   64FF         XRL     A,#0xff
   \   00000A   7006         JNZ     ??RegisterForKeys_0
    193            {
    194              registeredKeysTaskID = task_id;
   \   00000C   E9           MOV     A,R1
   \   00000D   F0           MOVX    @DPTR,A
    195              return ( true );
   \   00000E   7901         MOV     R1,#0x1
   \   000010   8002         SJMP    ??RegisterForKeys_1
    196            }
    197            else
    198              return ( false );
   \                     ??RegisterForKeys_0:
   \   000012   7900         MOV     R1,#0x0
   \                     ??RegisterForKeys_1:
   \   000014   02....       LJMP    ?Subroutine0 & 0xFFFF
    199          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   D083         POP     DPH
   \   000002   D082         POP     DPL
   \   000004   02....       LJMP    ?BRET
    200          
    201          /*********************************************************************
    202           * @fn      OnBoard_SendKeys
    203           *
    204           * @brief   Send "Key Pressed" message to application.
    205           *
    206           * @param   keys  - keys that were pressed
    207           *          state - shifted
    208           *
    209           * @return  status
    210           *********************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    211          byte OnBoard_SendKeys( byte keys, byte state )
   \                     OnBoard_SendKeys:
    212          {
   \   000000   74F6         MOV     A,#-0xa
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 10
   \   000005                ; Auto size: 0
   \   000005   E9           MOV     A,R1
   \   000006   FE           MOV     R6,A
   \   000007   EA           MOV     A,R2
   \   000008   FF           MOV     R7,A
    213            keyChange_t *msgPtr;
    214          
    215            if ( registeredKeysTaskID != NO_TASK_ID )
   \   000009   90....       MOV     DPTR,#??registeredKeysTaskID
   \   00000C   E0           MOVX    A,@DPTR
   \   00000D   64FF         XRL     A,#0xff
   \   00000F   6037         JZ      ??OnBoard_SendKeys_0
    216            {
    217              // Send the address to the task
    218              msgPtr = (keyChange_t *)osal_msg_allocate( sizeof(keyChange_t) );
   \   000011                ; Setup parameters for call to function osal_msg_allocate
   \   000011   7A04         MOV     R2,#0x4
   \   000013   7B00         MOV     R3,#0x0
   \   000015   90....       MOV     DPTR,#(osal_msg_allocate & 0xffff)
   \   000018   74..         MOV     A,#((osal_msg_allocate >> 16) & 0xff)
   \   00001A   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    219              if ( msgPtr )
   \   00001D   EA           MOV     A,R2
   \   00001E   7001         JNZ     ??OnBoard_SendKeys_1
   \   000020   EB           MOV     A,R3
   \                     ??OnBoard_SendKeys_1:
   \   000021   6021         JZ      ??OnBoard_SendKeys_2
    220              {
    221                msgPtr->hdr.event = KEY_CHANGE;
   \   000023   74C0         MOV     A,#-0x40
   \   000025   8A82         MOV     DPL,R2
   \   000027   8B83         MOV     DPH,R3
   \   000029   F0           MOVX    @DPTR,A
    222                msgPtr->state = state;
   \   00002A   EF           MOV     A,R7
   \   00002B   A3           INC     DPTR
   \   00002C   A3           INC     DPTR
   \   00002D   F0           MOVX    @DPTR,A
    223                msgPtr->keys = keys;
   \   00002E   EE           MOV     A,R6
   \   00002F   8A82         MOV     DPL,R2
   \   000031   8B83         MOV     DPH,R3
   \   000033   A3           INC     DPTR
   \   000034   A3           INC     DPTR
   \   000035   A3           INC     DPTR
   \   000036   F0           MOVX    @DPTR,A
    224          
    225                osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr );
   \   000037                ; Setup parameters for call to function osal_msg_send
   \   000037   90....       MOV     DPTR,#??registeredKeysTaskID
   \   00003A   E0           MOVX    A,@DPTR
   \   00003B   F9           MOV     R1,A
   \   00003C   90....       MOV     DPTR,#(osal_msg_send & 0xffff)
   \   00003F   74..         MOV     A,#((osal_msg_send >> 16) & 0xff)
   \   000041   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    226              }
    227              return ( ZSuccess );
   \                     ??OnBoard_SendKeys_2:
   \   000044   7900         MOV     R1,#0x0
   \   000046   8002         SJMP    ??OnBoard_SendKeys_3
    228            }
    229            else
    230              return ( ZFailure );
   \                     ??OnBoard_SendKeys_0:
   \   000048   7901         MOV     R1,#0x1
   \                     ??OnBoard_SendKeys_3:
   \   00004A   7F02         MOV     R7,#0x2
   \   00004C   02....       LJMP    ?BANKED_LEAVE_XDATA
    231          }
    232          
    233          /*********************************************************************
    234           * @fn      OnBoard_KeyCallback
    235           *
    236           * @brief   Callback service for keys
    237           *
    238           * @param   keys  - keys that were pressed
    239           *          state - shifted
    240           *
    241           * @return  void
    242           *********************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    243          void OnBoard_KeyCallback ( uint8 keys, uint8 state )
   \                     OnBoard_KeyCallback:
    244          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    245            uint8 shift;
    246          
    247            // shift key (S1) is used to generate key interrupt
    248            // applications should not use S1 when key interrupt is enabled
    249            shift = (OnboardKeyIntEnable == HAL_KEY_INTERRUPT_ENABLE) ? false : ((keys & HAL_KEY_SW_6) ? true : false);
   \   000004   90....       MOV     DPTR,#OnboardKeyIntEnable
   \   000007   E0           MOVX    A,@DPTR
   \   000008   6401         XRL     A,#0x1
   \   00000A   7004         JNZ     ??OnBoard_KeyCallback_0
   \   00000C   7A00         MOV     R2,#0x0
   \   00000E   8011         SJMP    ??OnBoard_KeyCallback_1
   \                     ??OnBoard_KeyCallback_0:
   \   000010   E9           MOV     A,R1
   \   000011   A2E5         MOV     C,0xE0 /* A   */.5
   \   000013   5004         JNC     ??OnBoard_KeyCallback_2
   \   000015   D2F0         SETB    B.0
   \   000017   8002         SJMP    ??OnBoard_KeyCallback_3
   \                     ??OnBoard_KeyCallback_2:
   \   000019   C2F0         CLR     B.0
   \                     ??OnBoard_KeyCallback_3:
   \   00001B   A2F0         MOV     C,B.0
   \   00001D   E4           CLR     A
   \   00001E   92E0         MOV     0xE0 /* A   */.0,C
   \   000020   FA           MOV     R2,A
    250          
    251            if ( OnBoard_SendKeys( keys, shift ) != ZSuccess )
   \                     ??OnBoard_KeyCallback_1:
   \   000021                ; Setup parameters for call to function OnBoard_SendKeys
   \   000021   90....       MOV     DPTR,#(OnBoard_SendKeys & 0xffff)
   \   000024   74..         MOV     A,#((OnBoard_SendKeys >> 16) & 0xff)
   \   000026   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    252            {
    253              // Process SW1 here
    254              if ( keys & HAL_KEY_SW_1 )  // Switch 1
    255              {
    256              }
    257              // Process SW2 here
    258              if ( keys & HAL_KEY_SW_2 )  // Switch 2
    259              {
    260              }
    261              // Process SW3 here
    262              if ( keys & HAL_KEY_SW_3 )  // Switch 3
    263              {
    264              }
    265              // Process SW4 here
    266              if ( keys & HAL_KEY_SW_4 )  // Switch 4
    267              {
    268              }
    269              // Process SW5 here
    270              if ( keys & HAL_KEY_SW_5 )  // Switch 5
    271              {
    272              }
    273              // Process SW6 here
    274              if ( keys & HAL_KEY_SW_6 )  // Switch 6
    275              {
    276              }
    277            }
    278          }
   \   000029   80..         SJMP    ?Subroutine0
    279          
    280          /*********************************************************************
    281           *                    SLEEP MANAGEMENT FUNCTIONS
    282           *
    283           * These functions support processing of MAC and ZStack power mode
    284           * transitions, used when the system goes into or awakes from sleep.
    285           */
    286          
    287           /*********************************************************************
    288           * @fn      OnBoard_stack_used()
    289           *
    290           * @brief
    291           *
    292           *   Runs through the stack looking for touched memory.
    293           *
    294           * @param   none
    295           *
    296           * @return  number of bytes used by the stack
    297           *********************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    298          uint16 OnBoard_stack_used( void )
   \                     OnBoard_stack_used:
    299          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    300            byte *pStack = (byte*)MCU_RAM_END;
   \   000004   78FF         MOV     R0,#-0x1
   \   000006   79FF         MOV     R1,#-0x1
    301            byte *pHold;
    302            byte found = false;
    303            byte x;
    304          
    305            // Look from the end of RAM for MIN_RAM_INIT number of "pattern" bytes
    306            // This should be the high water stack mark.
    307            while ( !found && pStack )
    308            {
    309              // Found an init value?
    310              if ( *pStack == STACK_INIT_VALUE )
   \                     ??OnBoard_stack_used_0:
   \   000008   8882         MOV     DPL,R0
   \   00000A   8983         MOV     DPH,R1
   \   00000C   E0           MOVX    A,@DPTR
   \   00000D   64A5         XRL     A,#0xa5
   \   00000F   701C         JNZ     ??OnBoard_stack_used_1
    311              {
    312                // Look for a bunch in a row
    313                pHold = pStack;
    314                for ( x = 0; x < MIN_RAM_INIT; x++ )
   \   000011   7A00         MOV     R2,#0x0
   \   000013   8013         SJMP    ??OnBoard_stack_used_2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -