📄 mac_timer.lst
字号:
\ 000158 8E82 MOV DPL,R6
\ 00015A 8F83 MOV DPH,R7
\ 00015C A3 INC DPTR
\ 00015D A3 INC DPTR
\ 00015E A3 INC DPTR
\ 00015F A3 INC DPTR
\ 000160 F0 MOVX @DPTR,A
160 pMtimCallbacks[prevCallback].nextCallback = newCallback;
\ 000161 EC MOV A,R4
\ 000162 75F009 MOV B,#0x9
\ 000165 A4 MUL AB
\ 000166 2404 ADD A,#0x4
\ 000168 F582 MOV DPL,A
\ 00016A E5F0 MOV A,B
\ 00016C 34E0 ADDC A,#-0x20
\ 00016E F583 MOV DPH,A
\ 000170 EB MOV A,R3
\ ??mtimSetCallback_7:
\ 000171 F0 MOVX @DPTR,A
161 }
162 }
163
164 // Always set...
165 pNewCallback->pFunc = pFunc;
\ ??mtimSetCallback_9:
\ 000172 7402 MOV A,#0x2
\ 000174 12.... LCALL ?XSTACK_DISP0_8
\ 000177 E0 MOVX A,@DPTR
\ 000178 F9 MOV R1,A
\ 000179 A3 INC DPTR
\ 00017A E0 MOVX A,@DPTR
\ 00017B FA MOV R2,A
\ 00017C A3 INC DPTR
\ 00017D E0 MOVX A,@DPTR
\ 00017E FB MOV R3,A
\ 00017F 8E82 MOV DPL,R6
\ 000181 8F83 MOV DPH,R7
\ 000183 A3 INC DPTR
\ 000184 A3 INC DPTR
\ 000185 A3 INC DPTR
\ 000186 A3 INC DPTR
\ 000187 A3 INC DPTR
\ 000188 A3 INC DPTR
\ 000189 E9 MOV A,R1
\ 00018A F0 MOVX @DPTR,A
\ 00018B A3 INC DPTR
\ 00018C EA MOV A,R2
\ 00018D F0 MOVX @DPTR,A
\ 00018E A3 INC DPTR
\ 00018F EB MOV A,R3
\ 000190 F0 MOVX @DPTR,A
166 pNewCallback->timeout = timeout;
\ 000191 8E82 MOV DPL,R6
\ 000193 8F83 MOV DPH,R7
\ 000195 78.. MOV R0,#?V0 + 4
\ 000197 12.... LCALL ?L_MOV_TO_X
167 pNewCallback->occupied = TRUE;
\ 00019A 7401 MOV A,#0x1
\ 00019C 8E82 MOV DPL,R6
\ 00019E 8F83 MOV DPH,R7
\ 0001A0 A3 INC DPTR
\ 0001A1 A3 INC DPTR
\ 0001A2 A3 INC DPTR
\ 0001A3 A3 INC DPTR
\ 0001A4 A3 INC DPTR
\ 0001A5 F0 MOVX @DPTR,A
168
169 ENABLE_GLOBAL_INT();
\ 0001A6 D2AF SETB 0xa8.7
170 return TRUE;
\ 0001A8 F9 MOV R1,A
\ ??mtimSetCallback_2:
\ 0001A9 7405 MOV A,#0x5
\ 0001AB 12.... LCALL ?DEALLOC_XSTACK8
\ 0001AE REQUIRE ?Subroutine0
\ 0001AE ; // Fall through to label ?Subroutine0
171
172 } // mtimSetCallback
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 7F08 MOV R7,#0x8
\ 000002 02.... LJMP ?FUNC_LEAVE_XDATA
173
174
175
176
177 //-------------------------------------------------------------------------------------------------------
178 // void mtimeCancelCallback(void *pFunc)
179 //
180 // DESCRIPTION:
181 // Cancels a callback. One entry of pFunc will be removed.
182 //
183 // PARAMETERS:
184 // void *pFunc
185 // A pointer to the callback function to be removed
186 //
187 // RETURN VALUE:
188 // BOOL
189 // A match was found and removed
190 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
191 ROOT BOOL mtimCancelCallback(void (*pFunc)()) {
\ mtimCancelCallback:
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FC MOV R4,A
\ 000007 EA MOV A,R2
\ 000008 FD MOV R5,A
\ 000009 EB MOV A,R3
\ 00000A FE MOV R6,A
192 UINT8 prevCallback;
193 UINT8 currCallback;
194 UINT8 nextCallback;
195
196 DISABLE_GLOBAL_INT();
\ 00000B C2AF CLR 0xa8.7
197
198 prevCallback = NO_CALLBACK;
\ 00000D 75..FF MOV ?V0 + 2,#-0x1
199 currCallback = firstCallback;
\ 000010 E5.. MOV A,firstCallback
\ 000012 FF MOV R7,A
\ 000013 8004 SJMP ??mtimCancelCallback_0
200 while (currCallback != NO_CALLBACK) {
201 nextCallback = pMtimCallbacks[currCallback].nextCallback;
202 if ((pFunc == pMtimCallbacks[currCallback].pFunc) && pMtimCallbacks[currCallback].occupied) {
203
204 // Deactivate the entry
205 pMtimCallbacks[currCallback].occupied = FALSE;
206
207 // Update the link on the callback before this entry
208 if (prevCallback != NO_CALLBACK) {
209 pMtimCallbacks[prevCallback].nextCallback = nextCallback;
210 }
211
212 // Update the link on the next callback entry
213 if (nextCallback != NO_CALLBACK) {
214 pMtimCallbacks[nextCallback].timeout += pMtimCallbacks[currCallback].timeout;
215 }
216
217 // Update the firstCallback flag if we cancelled it
218 if (currCallback == firstCallback) {
219 firstCallback = nextCallback;
220 }
221
222 // Done :)
223 ENABLE_GLOBAL_INT();
224 return TRUE;
225 }
226
227 // Move on to the next entry
228 prevCallback = currCallback;
\ ??mtimCancelCallback_1:
\ 000015 8F.. MOV ?V0 + 2,R7
229 currCallback = nextCallback;
\ 000017 AF.. MOV R7,?V0 + 4
\ ??mtimCancelCallback_0:
\ 000019 74FF MOV A,#-0x1
\ 00001B 6F XRL A,R7
\ 00001C 7003 JNZ $+5
\ 00001E 02.... LJMP ??mtimCancelCallback_2
\ 000021 EF MOV A,R7
\ 000022 75F009 MOV B,#0x9
\ 000025 A4 MUL AB
\ 000026 F8 MOV R0,A
\ 000027 2400 ADD A,#0x0
\ 000029 E5F0 MOV A,B
\ 00002B 34E0 ADDC A,#-0x20
\ 00002D F9 MOV R1,A
\ 00002E 89.. MOV ?V0 + 1,R1
\ 000030 8882 MOV DPL,R0
\ 000032 F583 MOV DPH,A
\ 000034 A3 INC DPTR
\ 000035 A3 INC DPTR
\ 000036 A3 INC DPTR
\ 000037 A3 INC DPTR
\ 000038 E0 MOVX A,@DPTR
\ 000039 F5.. MOV ?V0 + 4,A
\ 00003B 8882 MOV DPL,R0
\ 00003D 8983 MOV DPH,R1
\ 00003F A3 INC DPTR
\ 000040 A3 INC DPTR
\ 000041 A3 INC DPTR
\ 000042 A3 INC DPTR
\ 000043 A3 INC DPTR
\ 000044 A3 INC DPTR
\ 000045 E0 MOVX A,@DPTR
\ 000046 F9 MOV R1,A
\ 000047 A3 INC DPTR
\ 000048 E0 MOVX A,@DPTR
\ 000049 FA MOV R2,A
\ 00004A A3 INC DPTR
\ 00004B E0 MOVX A,@DPTR
\ 00004C FB MOV R3,A
\ 00004D 12.... LCALL ?G_EQ
\ 000050 70C3 JNZ ??mtimCancelCallback_1
\ 000052 E8 MOV A,R0
\ 000053 2405 ADD A,#0x5
\ 000055 F582 MOV DPL,A
\ 000057 E5.. MOV A,?V0 + 1
\ 000059 3400 ADDC A,#0x0
\ 00005B F583 MOV DPH,A
\ 00005D E0 MOVX A,@DPTR
\ 00005E 60B5 JZ ??mtimCancelCallback_1
\ 000060 E4 CLR A
\ 000061 F0 MOVX @DPTR,A
\ 000062 74FF MOV A,#-0x1
\ 000064 65.. XRL A,?V0 + 2
\ 000066 6013 JZ ??mtimCancelCallback_3
\ 000068 E5.. MOV A,?V0 + 2
\ 00006A 75F009 MOV B,#0x9
\ 00006D A4 MUL AB
\ 00006E 2404 ADD A,#0x4
\ 000070 F582 MOV DPL,A
\ 000072 E5F0 MOV A,B
\ 000074 34E0 ADDC A,#-0x20
\ 000076 F583 MOV DPH,A
\ 000078 E5.. MOV A,?V0 + 4
\ 00007A F0 MOVX @DPTR,A
\ ??mtimCancelCallback_3:
\ 00007B 74FF MOV A,#-0x1
\ 00007D 65.. XRL A,?V0 + 4
\ 00007F 601F JZ ??mtimCancelCallback_4
\ 000081 8882 MOV DPL,R0
\ 000083 85..83 MOV DPH,?V0 + 1
\ 000086 78.. MOV R0,#?V0 + 0
\ 000088 12.... LCALL ?L_MOV_X
\ 00008B E5.. MOV A,?V0 + 4
\ 00008D 75F009 MOV B,#0x9
\ 000090 A4 MUL AB
\ 000091 2400 ADD A,#0x0
\ 000093 F582 MOV DPL,A
\ 000095 E5F0 MOV A,B
\ 000097 34E0 ADDC A,#-0x20
\ 000099 F583 MOV DPH,A
\ 00009B 78.. MOV R0,#?V0 + 0
\ 00009D 12.... LCALL ?L_ADD_TO_X
\ ??mtimCancelCallback_4:
\ 0000A0 E5.. MOV A,firstCallback
\ 0000A2 6F XRL A,R7
\ 0000A3 7003 JNZ ??mtimCancelCallback_5
\ 0000A5 85.... MOV firstCallback,?V0 + 4
\ ??mtimCancelCallback_5:
\ 0000A8 D2AF SETB 0xa8.7
\ 0000AA 7901 MOV R1,#0x1
\ 0000AC 8004 SJMP ??mtimCancelCallback_6
230 }
231 ENABLE_GLOBAL_INT();
\ ??mtimCancelCallback_2:
\ 0000AE D2AF SETB 0xa8.7
232 return FALSE;
\ 0000B0 7900 MOV R1,#0x0
\ ??mtimCancelCallback_6:
\ 0000B2 7F05 MOV R7,#0x5
\ 0000B4 02.... LJMP ?FUNC_LEAVE_XDATA
233 } // mtimCancelCallback
234
235
236
237
238 //-------------------------------------------------------------------------------------------------------
239 // void mtimAlignWithBeacon(TIMESTAMP *pTimestamp)
240 //
241 // DESCRIPTION:
242 // Adjusts the timer to the last received packet (which should be a beacon!)
243 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
244 ROOT void mtimAlignWithBeacon(TIMESTAMP *pTimestamp) {
\ mtimAlignWithBeacon:
\ 000000 74F1 MOV A,#-0xf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -