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

📄 spimgr.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 4 页
字号:
   \                     SPIMgr_Init:
     84          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 30
   \   000004   74E2         MOV     A,#-0x1e
   \   000006   12....       LCALL   ?ALLOC_XSTACK8
     85            halUARTCfg_t uartConfig;
     86          
     87            /* Initialize APP ID */
     88            App_TaskID = 0;
   \   000009   E4           CLR     A
   \   00000A   90....       MOV     DPTR,#App_TaskID
   \   00000D   F0           MOVX    @DPTR,A
     89          
     90            /* UART Configuration */
     91            uartConfig.configured           = TRUE;
   \   00000E   7401         MOV     A,#0x1
   \   000010   85..82       MOV     DPL,?XSP + 0
   \   000013   85..83       MOV     DPH,?XSP + 1
   \   000016   F0           MOVX    @DPTR,A
     92            uartConfig.baudRate             = SPI_MGR_DEFAULT_BAUDRATE;
   \   000017   12....       LCALL   ?XSTACK_DISP0_8
   \   00001A   7406         MOV     A,#0x6
   \   00001C   F0           MOVX    @DPTR,A
     93            uartConfig.flowControl          = SPI_MGR_DEFAULT_OVERFLOW;
   \   00001D   7402         MOV     A,#0x2
   \   00001F   12....       LCALL   ?XSTACK_DISP0_8
   \   000022   E4           CLR     A
   \   000023   F0           MOVX    @DPTR,A
     94            uartConfig.flowControlThreshold = SPI_MGR_DEFAULT_THRESHOLD;
   \   000024   7403         MOV     A,#0x3
   \   000026   12....       LCALL   ?XSTACK_DISP0_8
   \   000029   7430         MOV     A,#0x30
   \   00002B   F0           MOVX    @DPTR,A
   \   00002C   A3           INC     DPTR
   \   00002D   E4           CLR     A
   \   00002E   F0           MOVX    @DPTR,A
     95            uartConfig.rx.maxBufSize        = SPI_MGR_DEFAULT_MAX_RX_BUFF;
   \   00002F   740A         MOV     A,#0xa
   \   000031   12....       LCALL   ?XSTACK_DISP0_8
   \   000034   7480         MOV     A,#-0x80
   \   000036   F0           MOVX    @DPTR,A
   \   000037   A3           INC     DPTR
   \   000038   E4           CLR     A
   \   000039   F0           MOVX    @DPTR,A
     96            uartConfig.tx.maxBufSize        = SPI_MGR_DEFAULT_MAX_TX_BUFF;
   \   00003A   7412         MOV     A,#0x12
   \   00003C   12....       LCALL   ?XSTACK_DISP0_8
   \   00003F   7480         MOV     A,#-0x80
   \   000041   F0           MOVX    @DPTR,A
   \   000042   A3           INC     DPTR
   \   000043   E4           CLR     A
   \   000044   F0           MOVX    @DPTR,A
     97            uartConfig.idleTimeout          = SPI_MGR_DEFAULT_IDLE_TIMEOUT;
   \   000045   7405         MOV     A,#0x5
   \   000047   12....       LCALL   ?XSTACK_DISP0_8
   \   00004A   7406         MOV     A,#0x6
   \   00004C   F0           MOVX    @DPTR,A
     98            uartConfig.intEnable            = TRUE;
   \   00004D   7416         MOV     A,#0x16
   \   00004F   12....       LCALL   ?XSTACK_DISP0_8
   \   000052   7401         MOV     A,#0x1
   \   000054   F0           MOVX    @DPTR,A
     99          #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
    100            uartConfig.callBackFunc         = SPIMgr_ProcessZToolData;
    101          #elif defined (ZAPP_P1) || defined (ZAPP_P2)
    102            uartConfig.callBackFunc         = SPIMgr_ProcessZAppData;
   \   000055   741B         MOV     A,#0x1b
   \   000057   12....       LCALL   ?XSTACK_DISP0_8
   \   00005A   74..         MOV     A,#(SPIMgr_ProcessZAppData & 0xff)
   \   00005C   F0           MOVX    @DPTR,A
   \   00005D   A3           INC     DPTR
   \   00005E   74..         MOV     A,#((SPIMgr_ProcessZAppData >> 8) & 0xff)
   \   000060   F0           MOVX    @DPTR,A
   \   000061   A3           INC     DPTR
   \   000062   74..         MOV     A,#((SPIMgr_ProcessZAppData >> 16) & 0xff)
   \   000064   F0           MOVX    @DPTR,A
    103          #else
    104            uartConfig.callBackFunc         = NULL;
    105          #endif
    106          
    107            /* Start UART */
    108          #if defined (SPI_MGR_DEFAULT_PORT)
    109            HalUARTOpen (SPI_MGR_DEFAULT_PORT, &uartConfig);
   \   000065                ; Setup parameters for call to function HalUARTOpen
   \   000065   85..82       MOV     DPL,?XSP + 0
   \   000068   85..83       MOV     DPH,?XSP + 1
   \   00006B   AA82         MOV     R2,DPL
   \   00006D   AB83         MOV     R3,DPH
   \   00006F   7901         MOV     R1,#0x1
   \   000071   90....       MOV     DPTR,#(HalUARTOpen & 0xffff)
   \   000074   74..         MOV     A,#((HalUARTOpen >> 16) & 0xff)
   \   000076   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    110          #else
    111            /* Silence IAR compiler warning */
    112            (void)uartConfig;
    113          #endif
    114          
    115            /* Initialize for ZApp */
    116          #if defined (ZAPP_P1) || defined (ZAPP_P2)
    117            /* Default max bytes that ZAPP can take */
    118            SPIMgr_MaxZAppBufLen  = 1;
   \   000079   90....       MOV     DPTR,#SPIMgr_MaxZAppBufLen
   \   00007C   7401         MOV     A,#0x1
   \   00007E   F0           MOVX    @DPTR,A
   \   00007F   A3           INC     DPTR
   \   000080   E4           CLR     A
   \   000081   F0           MOVX    @DPTR,A
    119            SPIMgr_ZAppRxStatus   = SPI_MGR_ZAPP_RX_READY;
   \   000082   7401         MOV     A,#0x1
   \   000084   90....       MOV     DPTR,#SPIMgr_ZAppRxStatus
   \   000087   F0           MOVX    @DPTR,A
    120          #endif
    121          
    122          
    123          }
   \   000088   741E         MOV     A,#0x1e
   \   00008A   12....       LCALL   ?DEALLOC_XSTACK8
   \   00008D   80..         SJMP    ??Subroutine0_0

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   F0           MOVX    @DPTR,A
   \                     ??Subroutine0_0:
   \   000001   D083         POP     DPH
   \   000003   D082         POP     DPL
   \   000005   02....       LJMP    ?BRET
    124          
    125          /***************************************************************************************************
    126           * @fn      MT_SerialRegisterTaskID
    127           *
    128           * @brief
    129           *
    130           *   This function registers the taskID of the application so it knows
    131           *   where to send the messages whent they come in.
    132           *
    133           * @param   void
    134           *
    135           * @return  void
    136           ***************************************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    137          void SPIMgr_RegisterTaskID( byte taskID )
   \                     SPIMgr_RegisterTaskID:
    138          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    139            App_TaskID = taskID;
   \   000004   E9           MOV     A,R1
   \   000005   90....       MOV     DPTR,#App_TaskID
   \   000008   80..         SJMP    ?Subroutine0
    140          }
    141          
    142          /***************************************************************************************************
    143           * @fn      SPIMgr_CalcFCS
    144           *
    145           * @brief
    146           *
    147           *   Calculate the FCS of a message buffer by XOR'ing each byte.
    148           *   Remember to NOT include SOP and FCS fields, so start at the CMD
    149           *   field.
    150           *
    151           * @param   byte *msg_ptr - message pointer
    152           * @param   byte len - length (in bytes) of message
    153           *
    154           * @return  result byte
    155           ***************************************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    156          byte SPIMgr_CalcFCS( uint8 *msg_ptr, uint8 len )
   \                     SPIMgr_CalcFCS:
    157          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
   \   000005   E9           MOV     A,R1
   \   000006   FC           MOV     R4,A
    158            byte x;
    159            byte xorResult;
    160          
    161            xorResult = 0;
   \   000007   7900         MOV     R1,#0x0
    162          
    163            for ( x = 0; x < len; x++, msg_ptr++ )
   \   000009   7D00         MOV     R5,#0x0
   \   00000B   800E         SJMP    ??SPIMgr_CalcFCS_0
    164              xorResult = xorResult ^ *msg_ptr;
   \                     ??SPIMgr_CalcFCS_1:
   \   00000D   8A82         MOV     DPL,R2
   \   00000F   8B83         MOV     DPH,R3
   \   000011   E0           MOVX    A,@DPTR
   \   000012   C9           XCH     A,R1
   \   000013   69           XRL     A,R1
   \   000014   F9           MOV     R1,A
   \   000015   0D           INC     R5
   \   000016   A3           INC     DPTR
   \   000017   AA82         MOV     R2,DPL
   \   000019   AB83         MOV     R3,DPH
   \                     ??SPIMgr_CalcFCS_0:
   \   00001B   ED           MOV     A,R5
   \   00001C   C3           CLR     C
   \   00001D   9C           SUBB    A,R4
   \   00001E   40ED         JC      ??SPIMgr_CalcFCS_1
    165          
    166            return ( xorResult );
   \   000020   7F01         MOV     R7,#0x1
   \   000022   02....       LJMP    ?BANKED_LEAVE_XDATA
    167          }
    168          
    169          
    170          #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
    171          /***************************************************************************************************
    172           * @fn      SPIMgr_ProcessZToolRxData
    173           *
    174           * @brief   | SOP | CMD  |   Data Length   | FSC  |
    175           *          |  1  |  2   |       1         |  1   |
    176           *
    177           *          Parses the data and determine either is SPI or just simply serial data
    178           *          then send the data to correct place (MT or APP)
    179           *

⌨️ 快捷键说明

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