hal_timer.lst
来自「TI的基于ZIGBEE2006的协议栈」· LST 代码 · 共 1,188 行 · 第 1/5 页
LST
1,188 行
\ 00002A F0 MOVX @DPTR,A
226
227 /* Setup prescale & clock for timer2 */
228 halTimerRecord[HW_TIMER_3].prescale = HAL_TIMER3_8_PRESCALE;
\ 00002B 74E0 MOV A,#-0x20
\ 00002D 90.... MOV DPTR,#(??halTimerRecord + 16)
\ 000030 F0 MOVX @DPTR,A
229 halTimerRecord[HW_TIMER_3].clock = HAL_TIMER_32MHZ;
\ 000031 7420 MOV A,#0x20
\ 000033 90.... MOV DPTR,#(??halTimerRecord + 18)
\ 000036 F0 MOVX @DPTR,A
230 halTimerRecord[HW_TIMER_3].prescaleVal = HAL_TIMER3_8_PRESCALE_VAL;
\ 000037 7480 MOV A,#-0x80
\ 000039 90.... MOV DPTR,#(??halTimerRecord + 17)
\ 00003C F0 MOVX @DPTR,A
231
232 /* Setup prescale & clock for timer3 */
233 halTimerRecord[HW_TIMER_4].prescale = HAL_TIMER4_8_PRESCALE;
\ 00003D 74E0 MOV A,#-0x20
\ 00003F 90.... MOV DPTR,#(??halTimerRecord + 27)
\ 000042 F0 MOVX @DPTR,A
234 halTimerRecord[HW_TIMER_4].clock = HAL_TIMER_32MHZ;
\ 000043 7420 MOV A,#0x20
\ 000045 90.... MOV DPTR,#(??halTimerRecord + 29)
\ 000048 F0 MOVX @DPTR,A
235 halTimerRecord[HW_TIMER_4].prescaleVal = HAL_TIMER4_8_PRESCALE_VAL;
\ 000049 7480 MOV A,#-0x80
\ 00004B 90.... MOV DPTR,#(??halTimerRecord + 28)
\ 00004E F0 MOVX @DPTR,A
236
237 /* Setup Timer1 Channel structure */
238 halTimerChannel[HW_TIMER_1].TxCCTL = TCHN_T1CCTL;
\ 00004F 90.... MOV DPTR,#??halTimerChannel
\ 000052 74E5 MOV A,#-0x1b
\ 000054 12.... LCALL ??Subroutine0_0 & 0xFFFF
239 halTimerChannel[HW_TIMER_1].TxCCL = TCHN_T1CCL;
\ ??CrossCallReturnLabel_0:
\ 000057 90.... MOV DPTR,#(??halTimerChannel + 4)
\ 00005A 74DA MOV A,#-0x26
\ 00005C 12.... LCALL ??Subroutine0_0 & 0xFFFF
240 halTimerChannel[HW_TIMER_1].TxCCH = TCHN_T1CCH;
\ ??CrossCallReturnLabel_1:
\ 00005F 90.... MOV DPTR,#(??halTimerChannel + 2)
\ 000062 74DB MOV A,#-0x25
\ 000064 12.... LCALL ??Subroutine0_0 & 0xFFFF
241 halTimerChannel[HW_TIMER_1].TxOVF = TCNH_T1OVF;
\ ??CrossCallReturnLabel_2:
\ 000067 90.... MOV DPTR,#(??halTimerChannel + 6)
\ 00006A 74D8 MOV A,#-0x28
\ 00006C 12.... LCALL ??Subroutine0_0 & 0xFFFF
242 halTimerChannel[HW_TIMER_1].ovfbit = TCHN_T1OVFBIT;
\ ??CrossCallReturnLabel_3:
\ 00006F 7440 MOV A,#0x40
\ 000071 90.... MOV DPTR,#(??halTimerChannel + 8)
\ 000074 F0 MOVX @DPTR,A
243 halTimerChannel[HW_TIMER_1].intbit = TCHN_T1INTBIT;
\ 000075 7402 MOV A,#0x2
\ 000077 90.... MOV DPTR,#(??halTimerChannel + 9)
\ 00007A F0 MOVX @DPTR,A
244
245 /* Setup Timer3 Channel structure */
246 halTimerChannel[HW_TIMER_3].TxCCTL = TCHN_T3CCTL;
\ 00007B 90.... MOV DPTR,#(??halTimerChannel + 10)
\ 00007E 74CC MOV A,#-0x34
\ 000080 12.... LCALL ??Subroutine0_0 & 0xFFFF
247 halTimerChannel[HW_TIMER_3].TxCCL = TCHN_T3CCL;
\ ??CrossCallReturnLabel_4:
\ 000083 90.... MOV DPTR,#(??halTimerChannel + 14)
\ 000086 12.... LCALL ?Subroutine0 & 0xFFFF
248 halTimerChannel[HW_TIMER_3].TxCCH = TCHN_T3CCH;
\ ??CrossCallReturnLabel_5:
\ 000089 90.... MOV DPTR,#(??halTimerChannel + 12)
\ 00008C 12.... LCALL ?Subroutine0 & 0xFFFF
249 halTimerChannel[HW_TIMER_3].TxOVF = TCNH_T3OVF;
\ ??CrossCallReturnLabel_6:
\ 00008F 90.... MOV DPTR,#(??halTimerChannel + 16)
\ 000092 74CB MOV A,#-0x35
\ 000094 12.... LCALL ??Subroutine0_0 & 0xFFFF
250 halTimerChannel[HW_TIMER_3].ovfbit = TCHN_T3OVFBIT;
\ ??CrossCallReturnLabel_7:
\ 000097 7480 MOV A,#-0x80
\ 000099 90.... MOV DPTR,#(??halTimerChannel + 18)
\ 00009C F0 MOVX @DPTR,A
251 halTimerChannel[HW_TIMER_3].intbit = TCHN_T3INTBIT;
\ 00009D 7408 MOV A,#0x8
\ 00009F 90.... MOV DPTR,#(??halTimerChannel + 19)
\ 0000A2 F0 MOVX @DPTR,A
252
253 /* Setup Timer4 Channel structure */
254 halTimerChannel[HW_TIMER_4].TxCCTL = TCHN_T4CCTL;
\ 0000A3 90.... MOV DPTR,#(??halTimerChannel + 20)
\ 0000A6 74EC MOV A,#-0x14
\ 0000A8 12.... LCALL ??Subroutine0_0 & 0xFFFF
255 halTimerChannel[HW_TIMER_4].TxCCL = TCHN_T4CCL;
\ ??CrossCallReturnLabel_8:
\ 0000AB 90.... MOV DPTR,#(??halTimerChannel + 24)
\ 0000AE 74ED MOV A,#-0x13
\ 0000B0 12.... LCALL ??Subroutine0_0 & 0xFFFF
256 halTimerChannel[HW_TIMER_4].TxCCH = TCHN_T4CCH;
\ ??CrossCallReturnLabel_9:
\ 0000B3 90.... MOV DPTR,#(??halTimerChannel + 22)
\ 0000B6 74ED MOV A,#-0x13
\ 0000B8 12.... LCALL ??Subroutine0_0 & 0xFFFF
257 halTimerChannel[HW_TIMER_4].TxOVF = TCNH_T4OVF;
\ ??CrossCallReturnLabel_10:
\ 0000BB 90.... MOV DPTR,#(??halTimerChannel + 26)
\ 0000BE 74EB MOV A,#-0x15
\ 0000C0 12.... LCALL ??Subroutine0_0 & 0xFFFF
258 halTimerChannel[HW_TIMER_4].ovfbit = TCHN_T4OVFBIT;
\ ??CrossCallReturnLabel_11:
\ 0000C3 7480 MOV A,#-0x80
\ 0000C5 90.... MOV DPTR,#(??halTimerChannel + 28)
\ 0000C8 F0 MOVX @DPTR,A
259 halTimerChannel[HW_TIMER_4].intbit = TCHN_T4INTBIT;
\ 0000C9 7410 MOV A,#0x10
\ 0000CB 90.... MOV DPTR,#(??halTimerChannel + 29)
\ 0000CE F0 MOVX @DPTR,A
260 }
\ 0000CF 02.... LJMP ?Subroutine13 & 0xFFFF
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 74CD MOV A,#-0x33
\ ??Subroutine0_0:
\ 000002 F0 MOVX @DPTR,A
\ 000003 A3 INC DPTR
\ 000004 74DF MOV A,#-0x21
\ 000006 F0 MOVX @DPTR,A
\ 000007 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine13:
\ 000000 D083 POP DPH
\ 000002 D082 POP DPL
\ 000004 02.... LJMP ?BRET
261
262 /***************************************************************************************************
263 * @fn HalTimerConfig
264 *
265 * @brief Configure the Timer Serivce
266 *
267 * @param timerId - Id of the timer
268 * opMode - Operation mode
269 * channel - Channel where the counter operates on
270 * channelMode - Mode of that channel
271 * prescale - Prescale of the clock
272 * cBack - Pointer to the callback function
273 *
274 * @return Status of the configuration
275 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
276 uint8 HalTimerConfig (uint8 timerId, uint8 opMode, uint8 channel, uint8 channelMode,
\ HalTimerConfig:
277 bool intEnable, halTimerCBack_t cBack)
278 {
\ 000000 74F1 MOV A,#-0xf
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 15
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FE MOV R6,A
\ 000007 EA MOV A,R2
\ 000008 FF MOV R7,A
\ 000009 8B.. MOV ?V0 + 0,R3
\ 00000B 8C.. MOV ?V0 + 1,R4
\ 00000D 8D.. MOV ?V0 + 2,R5
\ 00000F 740F MOV A,#0xf
\ 000011 12.... LCALL ?XSTACK_DISP0_8
\ 000014 E0 MOVX A,@DPTR
\ 000015 F9 MOV R1,A
\ 000016 A3 INC DPTR
\ 000017 E0 MOVX A,@DPTR
\ 000018 FA MOV R2,A
\ 000019 A3 INC DPTR
\ 00001A E0 MOVX A,@DPTR
\ 00001B FB MOV R3,A
\ 00001C 89.. MOV ?V0 + 4,R1
\ 00001E 8A.. MOV ?V0 + 5,R2
\ 000020 8B.. MOV ?V0 + 6,R3
279 uint8 hwtimerid;
280
281 hwtimerid = halTimerRemap (timerId);
\ 000022 ; Setup parameters for call to function halTimerRemap
\ 000022 EE MOV A,R6
\ 000023 F9 MOV R1,A
\ 000024 90.... MOV DPTR,#(halTimerRemap & 0xffff)
\ 000027 74.. MOV A,#((halTimerRemap >> 16) & 0xff)
\ 000029 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00002C E9 MOV A,R1
\ 00002D FA MOV R2,A
282
283 if ((opMode & HAL_TIMER_MODE_MASK) && (timerId < HAL_TIMER_MAX) &&
284 (channelMode & HAL_TIMER_CHANNEL_MASK) && (channel & HAL_TIMER_CHANNEL_MASK))
\ 00002E 7403 MOV A,#0x3
\ 000030 5F ANL A,R7
\ 000031 6051 JZ ??HalTimerConfig_0
\ 000033 EE MOV A,R6
\ 000034 C3 CLR C
\ 000035 9404 SUBB A,#0x4
\ 000037 504B JNC ??HalTimerConfig_0
\ 000039 740F MOV A,#0xf
\ 00003B 55.. ANL A,?V0 + 1
\ 00003D 6045 JZ ??HalTimerConfig_0
\ 00003F 740F MOV A,#0xf
\ 000041 55.. ANL A,?V0 + 0
\ 000043 603F JZ ??HalTimerConfig_0
285 {
286 halTimerRecord[hwtimerid].configured = TRUE;
\ 000045 EA MOV A,R2
\ 000046 75F00B MOV B,#0xb
\ 000049 A4 MUL AB
\ 00004A 24.. ADD A,#(??halTimerRecord & 0xff)
\ 00004C F8 MOV R0,A
\ 00004D E5F0 MOV A,B
\ 00004F 34.. ADDC A,#((??halTimerRecord >> 8) & 0xff)
\ 000051 F9 MOV R1,A
\ 000052 7401 MOV A,#0x1
\ 000054 8882 MOV DPL,R0
\ 000056 8983 MOV DPH,R1
\ 000058 F0 MOVX @DPTR,A
287 halTimerRecord[hwtimerid].opMode = opMode;
\ 000059 EF MOV A,R7
\ 00005A A3 INC DPTR
\ 00005B A3 INC DPTR
\ 00005C 12.... LCALL ?Subroutine11 & 0xFFFF
288 halTimerRecord[hwtimerid].channel = channel;
\ ??CrossCallReturnLabel_38:
\ 00005F E5.. MOV A,?V0 + 0
\ 000061 12.... LCALL ?Subroutine1 & 0xFFFF
289 halTimerRecord[hwtimerid].channelMode = channelMode;
\ ??CrossCallReturnLabel_12:
\ 000064 E5.. MOV A,?V0 + 1
\ 000066 F0 MOVX @DPTR,A
290 halTimerRecord[hwtimerid].intEnable = intEnable;
\ 000067 8882 MOV DPL,R0
\ 000069 8983 MOV DPH,R1
\ 00006B A3 INC DPTR
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?