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

📄 spimgr.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 3 页
字号:
//   11     derivative works, modify, distribute, perform, display or sell this
//   12     software and/or its documentation for any purpose is prohibited
//   13     without the express written consent of Texas Instruments, Inc.
//   14 ***************************************************************************************************/
//   15 
//   16 
//   17 /***************************************************************************************************
//   18  *                                           INCLUDES
//   19  ***************************************************************************************************/
//   20 #include "ZComDef.h"
//   21 #include "OSAL.h"
//   22 #include "hal_uart.h"
//   23 #include "MTEL.h"
//   24 #include "SPIMgr.h"
//   25 #include "OSAL_Memory.h"
//   26 
//   27 
//   28 /***************************************************************************************************
//   29  *                                            MACROS
//   30  ***************************************************************************************************/
//   31 
//   32 /***************************************************************************************************
//   33  *                                           CONSTANTS
//   34  ***************************************************************************************************/
//   35 
//   36 /* State values for ZTool protocal */
//   37 #define SOP_STATE      0x00
//   38 #define CMD_STATE1     0x01
//   39 #define CMD_STATE2     0x02
//   40 #define LEN_STATE      0x03
//   41 #define DATA_STATE     0x04
//   42 #define FCS_STATE      0x05
//   43 
//   44 /***************************************************************************************************
//   45  *                                            TYPEDEFS
//   46  ***************************************************************************************************/
//   47 
//   48 /***************************************************************************************************
//   49  *                                         GLOBAL VARIABLES
//   50  ***************************************************************************************************/

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   51 byte App_TaskID;
App_TaskID:
        DS 1
//   52 
//   53 /* ZTool protocal parameters */
//   54 
//   55 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
//   56 uint8 state;
//   57 uint8  CMD_Token[2];
//   58 uint8  LEN_Token;
//   59 uint8  FSC_Token;
//   60 mtOSALSerialData_t  *SPI_Msg;
//   61 uint8  tempDataLen;
//   62 #endif //ZTOOL
//   63 
//   64 #if defined (ZAPP_P1) || defined (ZAPP_P2)
//   65 uint16  SPIMgr_MaxZAppBufLen;
//   66 bool    SPIMgr_ZAppRxStatus;
//   67 #endif
//   68 
//   69 
//   70 /***************************************************************************************************
//   71  *                                          LOCAL FUNCTIONS
//   72  ***************************************************************************************************/
//   73 
//   74 /***************************************************************************************************
//   75  * @fn      SPIMgr_Init
//   76  *
//   77  * @brief
//   78  *
//   79  * @param   None
//   80  *
//   81  * @return  None
//   82 ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   83 void SPIMgr_Init ()
SPIMgr_Init:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function SPIMgr_Init
//   84 {
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
//   85   halUARTCfg_t uartConfig;
//   86 
//   87   /* Initialize APP ID */
//   88   App_TaskID = 0;
        CLR	A
        CFI EndBlock cfiBlock0
        REQUIRE ?Subroutine0
        ; // Fall through to label ?Subroutine0
//   89 
//   90   /* UART Configuration */
//   91   uartConfig.configured           = TRUE;
//   92   uartConfig.baudRate             = SPI_MGR_DEFAULT_BAUDRATE;
//   93   uartConfig.flowControl          = SPI_MGR_DEFAULT_OVERFLOW;
//   94   uartConfig.flowControlThreshold = SPI_MGR_DEFAULT_THRESHOLD;
//   95   uartConfig.rx.maxBufSize        = SPI_MGR_DEFAULT_MAX_RX_BUFF;
//   96   uartConfig.tx.maxBufSize        = SPI_MGR_DEFAULT_MAX_TX_BUFF;
//   97   uartConfig.idleTimeout          = SPI_MGR_DEFAULT_IDLE_TIMEOUT;
//   98   uartConfig.intEnable            = TRUE;
//   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;
//  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);
//  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;
//  119   SPIMgr_ZAppRxStatus   = SPI_MGR_ZAPP_RX_READY;
//  120 #endif
//  121 
//  122 
//  123 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        MOV	DPTR,#App_TaskID
        MOVX	@DPTR,A
        POP	DPH
        CFI CFA_SP SP+-4
        CFI DPH0 SameValue
        POP	DPL
        CFI CFA_SP SP+-3
        CFI DPL0 SameValue
        LJMP	?BRET
        CFI EndBlock cfiBlock1
//  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  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  137 void SPIMgr_RegisterTaskID( byte taskID )
SPIMgr_RegisterTaskID:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function SPIMgr_RegisterTaskID
//  138 {
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
//  139   App_TaskID = taskID;
        MOV	A,R1
        SJMP	?Subroutine0
        CFI EndBlock cfiBlock2
//  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  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  156 byte SPIMgr_CalcFCS( uint8 *msg_ptr, uint8 len )
SPIMgr_CalcFCS:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function SPIMgr_CalcFCS
//  157 {
        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
//  158   byte x;
//  159   byte xorResult;
//  160 
//  161   xorResult = 0;
        MOV	R1,#0x0
//  162 
//  163   for ( x = 0; x < len; x++, msg_ptr++ )
        MOV	R5,#0x0
        SJMP	??SPIMgr_CalcFCS_0
//  164     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
//  165 
//  166   return ( xorResult );
        MOV	R7,#0x1
        LJMP	?BANKED_LEAVE_XDATA

⌨️ 快捷键说明

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