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

📄 spimgr.s51

📁 cc2430讀取短地址程式
💻 S51
📖 第 1 页 / 共 5 页
字号:
        ; Auto size: 0
//  140   App_TaskID = taskID;
        MOV	A,R1
        MOV	DPTR,#App_TaskID
        MOVX	@DPTR,A
//  141 }
        SJMP	?Subroutine5
        CFI EndBlock cfiBlock2
//  142 
//  143 /***************************************************************************************************
//  144  * @fn      SPIMgr_CalcFCS
//  145  *
//  146  * @brief
//  147  *
//  148  *   Calculate the FCS of a message buffer by XOR'ing each byte.
//  149  *   Remember to NOT include SOP and FCS fields, so start at the CMD
//  150  *   field.
//  151  *
//  152  * @param   byte *msg_ptr - message pointer
//  153  * @param   byte len - length (in bytes) of message
//  154  *
//  155  * @return  result byte
//  156  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  157 byte SPIMgr_CalcFCS( uint8 *msg_ptr, uint8 len )
SPIMgr_CalcFCS:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function SPIMgr_CalcFCS
//  158 {
        MOV	A,#-0x9
        LCALL	?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
        MOV	A,R1
        MOV	R4,A
//  159   byte x;
//  160   byte xorResult;
//  161 
//  162   xorResult = 0;
        MOV	R1,#0x0
//  163 
//  164   for ( x = 0; x < len; x++, msg_ptr++ )
        MOV	R5,#0x0
        SJMP	??SPIMgr_CalcFCS_0
//  165     xorResult = xorResult ^ *msg_ptr;
??SPIMgr_CalcFCS_1:
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	A,@DPTR
        XCH	A,R1
        XRL	A,R1
        MOV	R1,A
        INC	R5
        INC	DPTR
        MOV	R2,DPL
        MOV	R3,DPH
??SPIMgr_CalcFCS_0:
        MOV	A,R5
        CLR	C
        SUBB	A,R4
        JC	??SPIMgr_CalcFCS_1
//  166 
//  167   return ( xorResult );
        MOV	R7,#0x1
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock3
//  168 }
//  169 
//  170 
//  171 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
//  172 /***************************************************************************************************
//  173  * @fn      SPIMgr_ProcessZToolRxData
//  174  *
//  175  * @brief   | SOP | CMD  |   Data Length   | FSC  |
//  176  *          |  1  |  2   |       1         |  1   |
//  177  *
//  178  *          Parses the data and determine either is SPI or just simply serial data
//  179  *          then send the data to correct place (MT or APP)
//  180  *
//  181  * @param   pBuffer  - pointer to the buffer that contains the data
//  182  *          length   - length of the buffer
//  183  *
//  184  *
//  185  * @return  None
//  186  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  187 void SPIMgr_ProcessZToolData ( uint8 port, uint8 event )
SPIMgr_ProcessZToolData:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function SPIMgr_ProcessZToolData
//  188 {
        FUNCALL SPIMgr_ProcessZToolData, Hal_UART_RxBufLen
        LOCFRAME XSTACK, 15, STACK
        ARGFRAME XSTACK, 15, STACK
        FUNCALL SPIMgr_ProcessZToolData, HalUARTRead
        LOCFRAME XSTACK, 15, STACK
        ARGFRAME XSTACK, 15, STACK
        FUNCALL SPIMgr_ProcessZToolData, SendData
        LOCFRAME XSTACK, 15, STACK
        ARGFRAME XSTACK, 15, STACK
        FUNCALL SPIMgr_ProcessZToolData, osal_msg_allocate
        LOCFRAME XSTACK, 15, STACK
        ARGFRAME XSTACK, 15, STACK
        FUNCALL SPIMgr_ProcessZToolData, SPIMgr_CalcFCS
        LOCFRAME XSTACK, 15, STACK
        ARGFRAME XSTACK, 15, STACK
        FUNCALL SPIMgr_ProcessZToolData, osal_msg_send
        LOCFRAME XSTACK, 15, STACK
        ARGFRAME XSTACK, 15, STACK
        FUNCALL SPIMgr_ProcessZToolData, osal_msg_deallocate
        LOCFRAME XSTACK, 15, STACK
        ARGFRAME XSTACK, 15, STACK
        MOV	A,#-0xa
        LCALL	?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        ; Saved register size: 10
        ; Auto size: 5
        MOV	A,#-0x5
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 15)
//  189   uint8  ch;
//  190 uint8  temp[5];
//  191 unsigned int tt;
//  192   /* Verify events */
//  193   if (event == HAL_UART_TX_FULL)
        MOV	A,#0x8
        XRL	A,R2
        JZ	??SPIMgr_ProcessZToolData_0
//  194   {
//  195     // Do something when TX if full
//  196     return;
//  197   }
//  198   if (event & (HAL_UART_RX_FULL | HAL_UART_RX_ABOUT_FULL | HAL_UART_RX_TIMEOUT))
        MOV	A,#0x7
        ANL	A,R2
        JNZ	??SPIMgr_ProcessZToolData_1
??SPIMgr_ProcessZToolData_0:
        MOV	A,#0x5
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 10)
        MOV	R7,#0x2
        LJMP	?BANKED_LEAVE_XDATA
        CFI CFA_XSP16 add(XSP16, 15)
//  199   {
//  200     while (Hal_UART_RxBufLen(SPI_MGR_DEFAULT_PORT))
//  201     {
//  202       HalUARTRead (SPI_MGR_DEFAULT_PORT, temp, 4);
//  203       tt = (unsigned int)temp[0];
//  204       tt = (tt<<8)&0xff00;
//  205       tt |= temp[1];
//  206       SendData(&temp[2],tt,2);
//  207       switch (state)
//  208       {
//  209         case SOP_STATE:
//  210           if (ch == SOP_VALUE)
//  211             state = CMD_STATE1;
//  212           break;
//  213 
//  214         case CMD_STATE1:
//  215           CMD_Token[0] = ch;
??SPIMgr_ProcessZToolData_2:
        MOV	A,R6
        MOV	DPTR,#CMD_Token
        MOVX	@DPTR,A
//  216           state = CMD_STATE2;
        MOV	A,#0x2
??SPIMgr_ProcessZToolData_3:
        MOV	DPTR,#state
??SPIMgr_ProcessZToolData_4:
        MOVX	@DPTR,A
??SPIMgr_ProcessZToolData_1:
        ; Setup parameters for call to function Hal_UART_RxBufLen
        MOV	R1,#0x0
        MOV	DPTR,#(Hal_UART_RxBufLen & 0xffff)
        MOV	A,#((Hal_UART_RxBufLen >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R2
        JNZ	??SPIMgr_ProcessZToolData_5
        MOV	A,R3
??SPIMgr_ProcessZToolData_5:
        JZ	??SPIMgr_ProcessZToolData_0
        ; Setup parameters for call to function HalUARTRead
        MOV	R4,#0x4
        MOV	R5,#0x0
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	R1,#0x0
        MOV	DPTR,#(HalUARTRead & 0xffff)
        MOV	A,#((HalUARTRead >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        ; Setup parameters for call to function SendData
        MOV	R1,#0x2
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	R4,A
        MOV	A,R3
        MOV	R5,A
        MOV	A,R1
        LCALL	?XSTACK_DISP0_8
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(SendData & 0xffff)
        MOV	A,#((SendData >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	DPTR,#state
        MOVX	A,@DPTR
        LCALL	?UC_SWITCH_DENSE
`?<Jumptable for SPIMgr_ProcessZToolData>_0`:
        DB        0
        DB        5
        DW        ??SPIMgr_ProcessZToolData_1
        DW        ??SPIMgr_ProcessZToolData_6
        DW        ??SPIMgr_ProcessZToolData_2
        DW        ??SPIMgr_ProcessZToolData_7
        DW        ??SPIMgr_ProcessZToolData_8
        DW        ??SPIMgr_ProcessZToolData_9
        DW        ??SPIMgr_ProcessZToolData_10
??SPIMgr_ProcessZToolData_6:
        MOV	A,#0x2
        XRL	A,R6
        JNZ	??SPIMgr_ProcessZToolData_1
        MOV	A,#0x1
        SJMP	??SPIMgr_ProcessZToolData_3
//  217           break;
//  218 
//  219         case CMD_STATE2:
//  220           CMD_Token[1] = ch;
??SPIMgr_ProcessZToolData_7:
        MOV	A,R6
        MOV	DPTR,#(CMD_Token + 1)
        MOVX	@DPTR,A
//  221           state = LEN_STATE;
        MOV	A,#0x3
        SJMP	??SPIMgr_ProcessZToolData_3
//  222           break;
//  223 
//  224         case LEN_STATE:
//  225           LEN_Token = ch;
??SPIMgr_ProcessZToolData_8:
        MOV	A,R6
        MOV	DPTR,#LEN_Token
        MOVX	@DPTR,A
//  226           if (ch == 0)
        JNZ	??SPIMgr_ProcessZToolData_11
//  227             state = FCS_STATE;
        MOV	A,#0x5
        SJMP	??SPIMgr_ProcessZToolData_12
//  228           else
//  229             state = DATA_STATE;
??SPIMgr_ProcessZToolData_11:
        MOV	A,#0x4
??SPIMgr_ProcessZToolData_12:
        MOV	DPTR,#state
        MOVX	@DPTR,A
//  230 
//  231           tempDataLen = 0;
        CLR	A
        MOV	DPTR,#tempDataLen
        MOVX	@DPTR,A
//  232 
//  233           /* Allocate memory for the data */
//  234           SPI_Msg = (mtOSALSerialData_t *)osal_msg_allocate( sizeof ( mtOSALSerialData_t ) + 2+1+LEN_Token );
        ; Setup parameters for call to function osal_msg_allocate
        MOV	DPTR,#LEN_Token
        MOVX	A,@DPTR
        MOV	R0,A
        MOV	A,#0x7
        ADD	A,R0
        MOV	R2,A
        CLR	A
        ADDC	A,#0x0
        MOV	R3,A
        MOV	DPTR,#(osal_msg_allocate & 0xffff)
        MOV	A,#((osal_msg_allocate >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	DPTR,#SPI_Msg
        MOV	A,R2
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R3
        MOVX	@DPTR,A
//  235 
//  236           if (SPI_Msg)

⌨️ 快捷键说明

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