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

📄 onboard.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 4 页
字号:

   \                                 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
    315                {
    316                  if ( *pHold != STACK_INIT_VALUE )
    317                    break;
    318                  else
    319                    pHold--;
   \                     ??OnBoard_stack_used_3:
   \   000015   E582         MOV     A,DPL
   \   000017   24FF         ADD     A,#-0x1
   \   000019   F582         MOV     DPL,A
   \   00001B   E583         MOV     A,DPH
   \   00001D   34FF         ADDC    A,#-0x1
   \   00001F   F583         MOV     DPH,A
   \   000021   0A           INC     R2
   \   000022   EA           MOV     A,R2
   \   000023   C3           CLR     C
   \   000024   940C         SUBB    A,#0xc
   \   000026   5013         JNC     ??OnBoard_stack_used_4
   \                     ??OnBoard_stack_used_2:
   \   000028   E0           MOVX    A,@DPTR
   \   000029   64A5         XRL     A,#0xa5
   \   00002B   60E8         JZ      ??OnBoard_stack_used_3
    320                }
    321                // Did we find the needed minimum number in a row
    322                if ( x >= MIN_RAM_INIT )
    323                  found = true;
    324              }
    325              if ( !found )
    326                pStack--;
   \                     ??OnBoard_stack_used_1:
   \   00002D   E8           MOV     A,R0
   \   00002E   24FF         ADD     A,#-0x1
   \   000030   18           DEC     R0
   \   000031   E9           MOV     A,R1
   \   000032   34FF         ADDC    A,#-0x1
   \   000034   F9           MOV     R1,A
   \   000035   E8           MOV     A,R0
   \   000036   7001         JNZ     ??OnBoard_stack_used_5
   \   000038   E9           MOV     A,R1
   \                     ??OnBoard_stack_used_5:
   \   000039   70CD         JNZ     ??OnBoard_stack_used_0
    327            }
    328          
    329            if ( pStack )
   \                     ??OnBoard_stack_used_4:
   \   00003B   E8           MOV     A,R0
   \   00003C   7001         JNZ     ??OnBoard_stack_used_6
   \   00003E   E9           MOV     A,R1
   \                     ??OnBoard_stack_used_6:
   \   00003F   600B         JZ      ??OnBoard_stack_used_7
    330              return ( (uint16)((byte*)MCU_RAM_END - pStack) );
   \   000041   74FF         MOV     A,#-0x1
   \   000043   C3           CLR     C
   \   000044   98           SUBB    A,R0
   \   000045   FA           MOV     R2,A
   \   000046   74FF         MOV     A,#-0x1
   \   000048   99           SUBB    A,R1
   \   000049   FB           MOV     R3,A
   \   00004A   8004         SJMP    ??OnBoard_stack_used_8
    331            else
    332              return ( 0 );
   \                     ??OnBoard_stack_used_7:
   \   00004C   7A00         MOV     R2,#0x0
   \   00004E   7B00         MOV     R3,#0x0
   \                     ??OnBoard_stack_used_8:
   \   000050                REQUIRE ?Subroutine0
   \   000050                ; // Fall through to label ?Subroutine0
    333          }
    334          
    335          /*********************************************************************
    336           * @fn      _itoa
    337           *
    338           * @brief   convert a 16bit number to ASCII
    339           *
    340           * @param   num -
    341           *          buf -
    342           *          radix -
    343           *
    344           * @return  void
    345           *
    346           *********************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    347          void _itoa(uint16 num, byte *buf, byte radix)
   \                     _itoa:
    348          {
   \   000000   74F2         MOV     A,#-0xe
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 14
   \   000005                ; Auto size: 5
   \   000005   74FB         MOV     A,#-0x5
   \   000007   12....       LCALL   ?ALLOC_XSTACK8
   \   00000A   EA           MOV     A,R2
   \   00000B   FE           MOV     R6,A
   \   00000C   EB           MOV     A,R3
   \   00000D   FF           MOV     R7,A
   \   00000E   8C..         MOV     ?V0 + 0,R4
   \   000010   8D..         MOV     ?V0 + 1,R5
   \   000012   89..         MOV     ?V0 + 5,R1
    349            char c,i;
    350            byte *p, rst[5];
    351          
    352            p = rst;
   \   000014   85..82       MOV     DPL,?XSP + 0
   \   000017   85..83       MOV     DPH,?XSP + 1
   \   00001A   AC82         MOV     R4,DPL
   \   00001C   AD83         MOV     R5,DPH
    353            for ( i=0; i<5; i++,p++ )
   \   00001E   75..00       MOV     ?V0 + 4,#0x0
    354            {
    355              c = num % radix;  // Isolate a digit
   \                     ??_itoa_0:
   \   000021   EE           MOV     A,R6
   \   000022   F8           MOV     R0,A
   \   000023   EF           MOV     A,R7
   \   000024   F9           MOV     R1,A
   \   000025   E5..         MOV     A,?V0 + 5
   \   000027   F5..         MOV     ?V0 + 2,A
   \   000029   FA           MOV     R2,A
   \   00002A   7B00         MOV     R3,#0x0
   \   00002C   12....       LCALL   ?US_DIV_MOD
   \   00002F   EA           MOV     A,R2
    356              *p = c + (( c < 10 ) ? '0' : '7');  // Convert to Ascii
   \   000030   940A         SUBB    A,#0xa
   \   000032   5004         JNC     ??_itoa_1
   \   000034   7830         MOV     R0,#0x30
   \   000036   8002         SJMP    ??_itoa_2
   \                     ??_itoa_1:
   \   000038   7837         MOV     R0,#0x37
   \                     ??_itoa_2:
   \   00003A   E8           MOV     A,R0
   \   00003B   2A           ADD     A,R2
   \   00003C   8C82         MOV     DPL,R4
   \   00003E   8D83         MOV     DPH,R5
   \   000040   F0           MOVX    @DPTR,A
    357              num /= radix;
   \   000041   EE           MOV     A,R6
   \   000042   F8           MOV     R0,A
   \   000043   EF           MOV     A,R7
   \   000044   F9           MOV     R1,A
   \   000045   AA..         MOV     R2,?V0 + 2
   \   000047   7B00         MOV     R3,#0x0
   \   000049   12....       LCALL   ?US_DIV_MOD
   \   00004C   88..         MOV     ?V0 + 2,R0
   \   00004E   89..         MOV     ?V0 + 3,R1
   \   000050   AE..         MOV     R6,?V0 + 2
   \   000052   AF..         MOV     R7,?V0 + 3
    358              if ( !num )
   \   000054   EE           MOV     A,R6
   \   000055   7001         JNZ     ??_itoa_3
   \   000057   EF           MOV     A,R7
   \                     ??_itoa_3:
   \   000058   600D         JZ      ??_itoa_4
    359                break;
    360            }
   \   00005A   05..         INC     ?V0 + 4
   \   00005C   A3           INC     DPTR
   \   00005D   AC82         MOV     R4,DPL
   \   00005F   AD83         MOV     R5,DPH
   \   000061   E5..         MOV     A,?V0 + 4
   \   000063   9405         SUBB    A,#0x5
   \   000065   40BA         JC      ??_itoa_0
    361          
    362            for ( c=0 ; c<=i; c++ )
   \                     ??_itoa_4:
   \   000067   7A00         MOV     R2,#0x0
    363              *buf++ = *p--;  // Reverse character order
   \                     ??_itoa_5:
   \   000069   8C82         MOV     DPL,R4
   \   00006B   8D83         MOV     DPH,R5
   \   00006D   E0           MOVX    A,@DPTR
   \   00006E   85..82       MOV     DPL,?V0 + 0
   \   000071   85..83       MOV     DPH,?V0 + 1
   \   000074   F0           MOVX    @DPTR,A
   \   000075   EC           MOV     A,R4
   \   000076   24FF         ADD     A,#-0x1
   \   000078   1C           DEC     R4
   \   000079   ED           MOV     A,R5
   \   00007A   34FF         ADDC    A,#-0x1
   \   00007C   FD           MOV     R5,A
   \   00007D   A3           INC     DPTR
   \   00007E   8582..       MOV     ?V0 + 0,DPL
   \   000081   8583..       MOV     ?V0 + 1,DPH
   \   000084   0A           INC     R2
   \   000085   E5..         MOV     A,?V0 + 4
   \   000087   C3           CLR     C

⌨️ 快捷键说明

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