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

📄 simplecontroller.s51

📁 CC2430上开关控制灯和温度传感器采集两个例子
💻 S51
📖 第 1 页 / 共 3 页
字号:
//   23 #include "ZComDef.h"
//   24 #include "OSAL.h"
//   25 #include "sapi.h"
//   26 #include "hal_key.h"
//   27 #include "hal_led.h"
//   28 
//   29 #include "SimpleApp.h"
//   30 
//   31 /*********************************************************************
//   32  * CONSTANTS
//   33  */
//   34 
//   35 // Application States
//   36 #define APP_INIT                           0
//   37 #define APP_START                          1
//   38 
//   39 // Application osal event identifiers
//   40 #define MY_START_EVT                0x0001
//   41 /*********************************************************************
//   42  * TYPEDEFS
//   43  */
//   44 
//   45 /*********************************************************************
//   46  * LOCAL VARIABLES
//   47  */
//   48 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   49 static uint8 myAppState = APP_INIT;
??myAppState:
        DS 1

        RSEG XDATA_I:XDATA:NOROOT(0)
//   50 static uint8 myStartRetryDelay = 10;
??myStartRetryDelay:
        DS 1
        REQUIRE `?<Initializer for myStartRetryDelay>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
//   51 static uint8 myAllowBindTimeout = 10;
??myAllowBindTimeout:
        DS 1
        REQUIRE `?<Initializer for myAllowBindTimeout>`
        REQUIRE __INIT_XDATA_I
//   52 
//   53 /*********************************************************************
//   54  * GLOBAL VARIABLES
//   55  */
//   56 
//   57 // Inputs and Outputs for Switch device
//   58 #define NUM_OUT_CMD_CONTROLLER                0
//   59 #define NUM_IN_CMD_CONTROLLER                 1
//   60 
//   61 // List of output and input commands for Switch device

        RSEG XDATA_I:XDATA:NOROOT(0)
//   62 const cId_t zb_InCmdList[NUM_IN_CMD_CONTROLLER] =
zb_InCmdList:
        DS 2
        REQUIRE `?<Initializer for zb_InCmdList>`
        REQUIRE __INIT_XDATA_I
//   63 {
//   64   TOGGLE_LIGHT_CMD_ID
//   65 };
//   66 
//   67 // Define SimpleDescriptor for Switch device

        RSEG XDATA_I:XDATA:NOROOT(0)
//   68 const SimpleDescriptionFormat_t zb_SimpleDesc =
zb_SimpleDesc:
        DS 12
        REQUIRE `?<Initializer for zb_SimpleDesc>`
        REQUIRE __INIT_XDATA_I
//   69 {
//   70   MY_ENDPOINT_ID,             //  Endpoint
//   71   MY_PROFILE_ID,              //  Profile ID
//   72   DEV_ID_CONTROLLER,          //  Device ID
//   73   DEVICE_VERSION_CONTROLLER,  //  Device Version
//   74   0,                          //  Reserved
//   75   NUM_IN_CMD_CONTROLLER,      //  Number of Input Commands
//   76   (cId_t *) zb_InCmdList,     //  Input Command List
//   77   NUM_OUT_CMD_CONTROLLER,     //  Number of Output Commands
//   78   (cId_t *) NULL              //  Output Command List
//   79 };
//   80 
//   81 /******************************************************************************
//   82  * @fn          zb_HandleOsalEvent
//   83  *
//   84  * @brief       The zb_HandleOsalEvent function is called by the operating
//   85  *              system when a task event is set
//   86  *
//   87  * @param       event - Bitmask containing the events that have been set
//   88  *
//   89  * @return      none
//   90  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   91 void zb_HandleOsalEvent( uint16 event )
zb_HandleOsalEvent:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function zb_HandleOsalEvent
//   92 {
        ; Saved register size: 0
        ; Auto size: 0
//   93 
//   94 }
        LJMP	?BRET
        CFI EndBlock cfiBlock0
//   95 /*********************************************************************
//   96  * @fn      zb_HandleKeys
//   97  *
//   98  * @brief   Handles all key events for this device.
//   99  *
//  100  * @param   shift - true if in shift/alt.
//  101  * @param   keys - bit field for key events. Valid entries:
//  102  *                 EVAL_SW4
//  103  *                 EVAL_SW3
//  104  *                 EVAL_SW2
//  105  *                 EVAL_SW1
//  106  *
//  107  * @return  none
//  108  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  109 void zb_HandleKeys( uint8 shift, uint8 keys )
zb_HandleKeys:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function zb_HandleKeys
//  110 {
        FUNCALL zb_HandleKeys, zb_ReadConfiguration
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL zb_HandleKeys, zb_WriteConfiguration
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL zb_HandleKeys, zb_ReadConfiguration
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL zb_HandleKeys, zb_WriteConfiguration
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL zb_HandleKeys, zb_SystemReset
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL zb_HandleKeys, zb_AllowBind
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL zb_HandleKeys, zb_ReadConfiguration
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL zb_HandleKeys, zb_WriteConfiguration
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL zb_HandleKeys, zb_ReadConfiguration
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL zb_HandleKeys, zb_WriteConfiguration
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL zb_HandleKeys, zb_SystemReset
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        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: 2
        MOV	A,#-0x2
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 11)
        MOV	A,R2
        MOV	R6,A
//  111   uint8 startOptions;
//  112   uint8 logicalType;
//  113 
//  114   // Shift is used to make each button/switch dual purpose.
//  115   if ( shift )
        MOV	A,R1
        JZ	$+5
        LJMP	??zb_HandleKeys_0 & 0xFFFF
//  116   {
//  117     if ( keys & HAL_KEY_SW_1 )
//  118     {
//  119     }
//  120     if ( keys & HAL_KEY_SW_2 )
//  121     {
//  122     }
//  123     if ( keys & HAL_KEY_SW_3 )
//  124     {
//  125     }
//  126     if ( keys & HAL_KEY_SW_4 )
//  127     {
//  128     }
//  129   }
//  130   else
//  131   {
//  132     if ( keys & HAL_KEY_SW_1 )
        MOV	A,R6
        MOV	C,0xE0 /* A   */.0
        JNC	??zb_HandleKeys_1
//  133     {
//  134       if ( myAppState == APP_INIT  )
        MOV	DPTR,#??myAppState
        MOVX	A,@DPTR
        JNZ	??zb_HandleKeys_2
//  135       {
//  136         // In the init state, keys are used to indicate the logical mode.
//  137         // Key 1 starts device as a coordinator
//  138 
//  139         zb_ReadConfiguration( ZCD_NV_LOGICAL_TYPE, sizeof(uint8), &logicalType );
        ; Setup parameters for call to function zb_ReadConfiguration
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R2,#0x1
        MOV	R1,#-0x79
        MOV	DPTR,#(zb_ReadConfiguration & 0xffff)
        MOV	A,#((zb_ReadConfiguration >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  140         if ( logicalType != ZG_DEVICETYPE_ENDDEVICE )
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        XRL	A,#0x2
        JZ	??zb_HandleKeys_3
//  141         {
//  142           logicalType = ZG_DEVICETYPE_COORDINATOR;
        CLR	A
        MOVX	@DPTR,A
//  143           zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, sizeof(uint8), &logicalType);
        ; Setup parameters for call to function zb_WriteConfiguration
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R2,#0x1
        MOV	R1,#-0x79
        MOV	DPTR,#(zb_WriteConfiguration & 0xffff)
        MOV	A,#((zb_WriteConfiguration >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  144         }
//  145 
//  146         // Do more configuration if necessary and then restart device with auto-start bit set
//  147         // write endpoint to simple desc...dont pass it in start req..then reset
//  148 
//  149 
//  150         zb_ReadConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), &startOptions );
??zb_HandleKeys_3:
        ; Setup parameters for call to function zb_ReadConfiguration
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R2,#0x1
        MOV	R1,#0x3
        MOV	DPTR,#(zb_ReadConfiguration & 0xffff)
        MOV	A,#((zb_ReadConfiguration >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  151         startOptions = ZCD_STARTOPT_AUTO_START;
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine0 & 0xFFFF
//  152         zb_WriteConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), &startOptions );
??CrossCallReturnLabel_0:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  153         zb_SystemReset();
        ; Setup parameters for call to function zb_SystemReset
        MOV	DPTR,#(zb_SystemReset & 0xffff)
        MOV	A,#((zb_SystemReset >> 16) & 0xff)
        SJMP	??zb_HandleKeys_4
//  154 
//  155       }
//  156       else
//  157       {
//  158         // Initiate a binding
//  159         zb_AllowBind( myAllowBindTimeout );
??zb_HandleKeys_2:
        ; Setup parameters for call to function zb_AllowBind
        MOV	DPTR,#??myAllowBindTimeout
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(zb_AllowBind & 0xffff)
        MOV	A,#((zb_AllowBind >> 16) & 0xff)
??zb_HandleKeys_4:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  160       }
//  161     }
//  162     if ( keys & HAL_KEY_SW_2 )
??zb_HandleKeys_1:
        MOV	A,R6
        MOV	C,0xE0 /* A   */.1
        JNC	??zb_HandleKeys_0
//  163     {
//  164       if ( myAppState == APP_INIT )
        MOV	DPTR,#??myAppState
        MOVX	A,@DPTR
        JNZ	??zb_HandleKeys_0
//  165       {
//  166         // In the init state, keys are used to indicate the logical mode.
//  167         // Key 2 starts device as a router
//  168 
//  169         zb_ReadConfiguration( ZCD_NV_LOGICAL_TYPE, sizeof(uint8), &logicalType );
        ; Setup parameters for call to function zb_ReadConfiguration
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R2,#0x1
        MOV	R1,#-0x79
        MOV	DPTR,#(zb_ReadConfiguration & 0xffff)
        MOV	A,#((zb_ReadConfiguration >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  170         if ( logicalType != ZG_DEVICETYPE_ENDDEVICE )
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        XRL	A,#0x2
        JZ	??zb_HandleKeys_5
//  171         {
//  172           logicalType = ZG_DEVICETYPE_ROUTER;
        MOV	A,#0x1
        MOVX	@DPTR,A
//  173           zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, sizeof(uint8), &logicalType);
        ; Setup parameters for call to function zb_WriteConfiguration
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R2,A
        MOV	R1,#-0x79
        MOV	DPTR,#(zb_WriteConfiguration & 0xffff)
        MOV	A,#((zb_WriteConfiguration >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  174         }
//  175 
//  176         zb_ReadConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), &startOptions );
??zb_HandleKeys_5:
        ; Setup parameters for call to function zb_ReadConfiguration
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R2,#0x1
        MOV	R1,#0x3
        MOV	DPTR,#(zb_ReadConfiguration & 0xffff)
        MOV	A,#((zb_ReadConfiguration >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  177         startOptions = ZCD_STARTOPT_AUTO_START;
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine0 & 0xFFFF
//  178         zb_WriteConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), &startOptions );
??CrossCallReturnLabel_1:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  179         zb_SystemReset();
        ; Setup parameters for call to function zb_SystemReset
        MOV	DPTR,#(zb_SystemReset & 0xffff)
        MOV	A,#((zb_SystemReset >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  180       }
//  181       else

⌨️ 快捷键说明

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