simplecontroller.lst
来自「CC2430上开关控制灯和温度传感器采集两个例子」· LST 代码 · 共 801 行 · 第 1/3 页
LST
801 行
94 }
\ 000000 02.... LJMP ?BRET
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 */
\ In segment BANKED_CODE, align 1, keep-with-next
109 void zb_HandleKeys( uint8 shift, uint8 keys )
\ zb_HandleKeys:
110 {
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 2
\ 000005 74FE MOV A,#-0x2
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A EA MOV A,R2
\ 00000B FE MOV R6,A
111 uint8 startOptions;
112 uint8 logicalType;
113
114 // Shift is used to make each button/switch dual purpose.
115 if ( shift )
\ 00000C E9 MOV A,R1
\ 00000D 6003 JZ $+5
\ 00000F 02.... 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 )
\ 000012 EE MOV A,R6
\ 000013 A2E0 MOV C,0xE0 /* A */.0
\ 000015 506D JNC ??zb_HandleKeys_1
133 {
134 if ( myAppState == APP_INIT )
\ 000017 90.... MOV DPTR,#??myAppState
\ 00001A E0 MOVX A,@DPTR
\ 00001B 705A 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 );
\ 00001D ; Setup parameters for call to function zb_ReadConfiguration
\ 00001D 85..82 MOV DPL,?XSP + 0
\ 000020 85..83 MOV DPH,?XSP + 1
\ 000023 AC82 MOV R4,DPL
\ 000025 AD83 MOV R5,DPH
\ 000027 7A01 MOV R2,#0x1
\ 000029 7987 MOV R1,#-0x79
\ 00002B 90.... MOV DPTR,#(zb_ReadConfiguration & 0xffff)
\ 00002E 74.. MOV A,#((zb_ReadConfiguration >> 16) & 0xff)
\ 000030 12.... LCALL ?BCALL ; Banked call to: DPTR()
140 if ( logicalType != ZG_DEVICETYPE_ENDDEVICE )
\ 000033 85..82 MOV DPL,?XSP + 0
\ 000036 85..83 MOV DPH,?XSP + 1
\ 000039 E0 MOVX A,@DPTR
\ 00003A 6402 XRL A,#0x2
\ 00003C 6012 JZ ??zb_HandleKeys_3
141 {
142 logicalType = ZG_DEVICETYPE_COORDINATOR;
\ 00003E E4 CLR A
\ 00003F F0 MOVX @DPTR,A
143 zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, sizeof(uint8), &logicalType);
\ 000040 ; Setup parameters for call to function zb_WriteConfiguration
\ 000040 AC82 MOV R4,DPL
\ 000042 AD83 MOV R5,DPH
\ 000044 7A01 MOV R2,#0x1
\ 000046 7987 MOV R1,#-0x79
\ 000048 90.... MOV DPTR,#(zb_WriteConfiguration & 0xffff)
\ 00004B 74.. MOV A,#((zb_WriteConfiguration >> 16) & 0xff)
\ 00004D 12.... 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:
\ 000050 ; Setup parameters for call to function zb_ReadConfiguration
\ 000050 7401 MOV A,#0x1
\ 000052 12.... LCALL ?XSTACK_DISP0_8
\ 000055 AC82 MOV R4,DPL
\ 000057 AD83 MOV R5,DPH
\ 000059 7A01 MOV R2,#0x1
\ 00005B 7903 MOV R1,#0x3
\ 00005D 90.... MOV DPTR,#(zb_ReadConfiguration & 0xffff)
\ 000060 74.. MOV A,#((zb_ReadConfiguration >> 16) & 0xff)
\ 000062 12.... LCALL ?BCALL ; Banked call to: DPTR()
151 startOptions = ZCD_STARTOPT_AUTO_START;
\ 000065 7401 MOV A,#0x1
\ 000067 12.... LCALL ?XSTACK_DISP0_8
\ 00006A 12.... LCALL ?Subroutine0 & 0xFFFF
152 zb_WriteConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), &startOptions );
\ ??CrossCallReturnLabel_0:
\ 00006D 12.... LCALL ?BCALL ; Banked call to: DPTR()
153 zb_SystemReset();
\ 000070 ; Setup parameters for call to function zb_SystemReset
\ 000070 90.... MOV DPTR,#(zb_SystemReset & 0xffff)
\ 000073 74.. MOV A,#((zb_SystemReset >> 16) & 0xff)
\ 000075 800A SJMP ??zb_HandleKeys_4
154
155 }
156 else
157 {
158 // Initiate a binding
159 zb_AllowBind( myAllowBindTimeout );
\ ??zb_HandleKeys_2:
\ 000077 ; Setup parameters for call to function zb_AllowBind
\ 000077 90.... MOV DPTR,#??myAllowBindTimeout
\ 00007A E0 MOVX A,@DPTR
\ 00007B F9 MOV R1,A
\ 00007C 90.... MOV DPTR,#(zb_AllowBind & 0xffff)
\ 00007F 74.. MOV A,#((zb_AllowBind >> 16) & 0xff)
\ ??zb_HandleKeys_4:
\ 000081 12.... LCALL ?BCALL ; Banked call to: DPTR()
160 }
161 }
162 if ( keys & HAL_KEY_SW_2 )
\ ??zb_HandleKeys_1:
\ 000084 EE MOV A,R6
\ 000085 A2E1 MOV C,0xE0 /* A */.1
\ 000087 5061 JNC ??zb_HandleKeys_0
163 {
164 if ( myAppState == APP_INIT )
\ 000089 90.... MOV DPTR,#??myAppState
\ 00008C E0 MOVX A,@DPTR
\ 00008D 705B 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 );
\ 00008F ; Setup parameters for call to function zb_ReadConfiguration
\ 00008F 85..82 MOV DPL,?XSP + 0
\ 000092 85..83 MOV DPH,?XSP + 1
\ 000095 AC82 MOV R4,DPL
\ 000097 AD83 MOV R5,DPH
\ 000099 7A01 MOV R2,#0x1
\ 00009B 7987 MOV R1,#-0x79
\ 00009D 90.... MOV DPTR,#(zb_ReadConfiguration & 0xffff)
\ 0000A0 74.. MOV A,#((zb_ReadConfiguration >> 16) & 0xff)
\ 0000A2 12.... LCALL ?BCALL ; Banked call to: DPTR()
170 if ( logicalType != ZG_DEVICETYPE_ENDDEVICE )
\ 0000A5 85..82 MOV DPL,?XSP + 0
\ 0000A8 85..83 MOV DPH,?XSP + 1
\ 0000AB E0 MOVX A,@DPTR
\ 0000AC 6402 XRL A,#0x2
\ 0000AE 6012 JZ ??zb_HandleKeys_5
171 {
172 logicalType = ZG_DEVICETYPE_ROUTER;
\ 0000B0 7401 MOV A,#0x1
\ 0000B2 F0 MOVX @DPTR,A
173 zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, sizeof(uint8), &logicalType);
\ 0000B3 ; Setup parameters for call to function zb_WriteConfiguration
\ 0000B3 AC82 MOV R4,DPL
\ 0000B5 AD83 MOV R5,DPH
\ 0000B7 FA MOV R2,A
\ 0000B8 7987 MOV R1,#-0x79
\ 0000BA 90.... MOV DPTR,#(zb_WriteConfiguration & 0xffff)
\ 0000BD 74.. MOV A,#((zb_WriteConfiguration >> 16) & 0xff)
\ 0000BF 12.... LCALL ?BCALL ; Banked call to: DPTR()
174 }
175
176 zb_ReadConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), &startOptions );
\ ??zb_HandleKeys_5:
\ 0000C2 ; Setup parameters for call to function zb_ReadConfiguration
\ 0000C2 7401 MOV A,#0x1
\ 0000C4 12.... LCALL ?XSTACK_DISP0_8
\ 0000C7 AC82 MOV R4,DPL
\ 0000C9 AD83 MOV R5,DPH
\ 0000CB 7A01 MOV R2,#0x1
\ 0000CD 7903 MOV R1,#0x3
\ 0000CF 90.... MOV DPTR,#(zb_ReadConfiguration & 0xffff)
\ 0000D2 74.. MOV A,#((zb_ReadConfiguration >> 16) & 0xff)
\ 0000D4 12.... LCALL ?BCALL ; Banked call to: DPTR()
177 startOptions = ZCD_STARTOPT_AUTO_START;
\ 0000D7 7401 MOV A,#0x1
\ 0000D9 12.... LCALL ?XSTACK_DISP0_8
\ 0000DC 12.... LCALL ?Subroutine0 & 0xFFFF
178 zb_WriteConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), &startOptions );
\ ??CrossCallReturnLabel_1:
\ 0000DF 12.... LCALL ?BCALL ; Banked call to: DPTR()
179 zb_SystemReset();
\ 0000E2 ; Setup parameters for call to function zb_SystemReset
\ 0000E2 90.... MOV DPTR,#(zb_SystemReset & 0xffff)
\ 0000E5 74.. MOV A,#((zb_SystemReset >> 16) & 0xff)
\ 0000E7 12.... LCALL ?BCALL ; Banked call to: DPTR()
180 }
181 else
182 {
183 }
184 }
185 if ( keys & HAL_KEY_SW_3 )
186 {
187 }
188 if ( keys & HAL_KEY_SW_4 )
189 {
190 }
191 }
192 }
\ ??zb_HandleKeys_0:
\ 0000EA 7402 MOV A,#0x2
\ 0000EC 12.... LCALL ?DEALLOC_XSTACK8
\ 0000EF REQUIRE ?Subroutine1
\ 0000EF ; // Fall through to label ?Subroutine1
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 7F01 MOV R7,#0x1
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 7404 MOV A,#0x4
\ 000002 F0 MOVX @DPTR,A
\ 000003 ; Setup parameters for call to function zb_WriteConfiguration
\ 000003 ; Setup parameters for call to function zb_WriteConfiguration
\ 000003 AC82 MOV R4,DPL
\ 000005 AD83 MOV R5,DPH
\ 000007 7A01 MOV R2,#0x1
\ 000009 7903 MOV R1,#0x3
\ 00000B 90.... MOV DPTR,#(zb_WriteConfiguration & 0xffff)
\ 00000E 74.. MOV A,#((zb_WriteConfiguration >> 16) & 0xff)
\ 000010 22 RET
193 /******************************************************************************
194 * @fn zb_StartConfirm
195 *
196 * @brief The zb_StartConfirm callback is called by the ZigBee stack
197 * after a start request operation completes
198 *
199 * @param status - The status of the start operation. Status of
200 * ZB_SUCCESS indicates the start operation completed
201 * successfully. Else the status is an error code.
202 *
203 * @return none
204 */
\ In segment BANKED_CODE, align 1, keep-with-next
205 void zb_StartConfirm( uint8 status )
\ zb_StartConfirm:
206 {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?