///////////////////////////////////////////////////////////////////////////////
//                                                                            /
// IAR 8051 C/C++ Compiler V7.30B/W32                   19/May/2010  09:38:55 /
// Copyright 2004-2007 IAR Systems. All rights reserved.                      /
//                                                                            /
//    Core               =  plain                                             /
//    Code model         =  banked                                            /
//    Data model         =  large                                             /
//    Calling convention =  xdata reentrant                                   /
//    Constant location  =  data                                              /
//    Dptr setup         =  1,16                                              /
//    Source file        =  C:\Texas Instruments\ZStack-1.4.3-1.2.1\Component /
//                          s\hal\target\CC2430EB\hal_timer.c                 /
//    Command line       =  -f "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Proje /
//                          cts\zstack\Samples\Location\CC2430DB\..\..\..\Too /
//                          ls\CC2430DB\f8wCoord.cfg" (-DCPU32MHZ             /
//                          -DFORCE_MAC_NEAR -DROOT=__near_func               /
//                          -DMAC_CFG_APP_PENDING_QUEUE=TRUE                  /
//                          -DZDO_COORDINATOR -DRTR_NWK -DBLINK_LEDS          /
//                          "-DCONST=const __code" -DGENERIC=__generic) -f    /
//                          "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects /
//                          \zstack\Samples\Location\CC2430DB\..\..\..\Tools\ /
//                          CC2430DB\f8wConfig.cfg" (-DSECURE=1               /
//                          -DDEFAULT_CHANLIST=0x04000000                     /
//                          -DZDAPP_CONFIG_PAN_ID=0x00FF                      /
//                          -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_M /
//                          ASK=0x007F -DBEACON_REQUEST_DELAY=100             /
//                          -DBEACON_REQ_DELAY_MASK=0x00FF                    /
//                          -DROUTE_EXPIRY_TIME=30 -DAPSC_ACK_WAIT_DURATION_P /
//                          OLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7           /
//                          -DMAX_RREQ_ENTRIES=10 -DAPSC_MAX_FRAME_RETRIES=3  /
//                          -DNWK_MAX_DATA_RETRIES=2                          /
//                          -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9        /
//                          -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=20          /
//                          -DNWK_MAX_BINDING_ENTRIES=10                      /
//                          -DMAX_BINDING_CLUSTER_IDS=5                       /
//                          "-DDEFAULT_KEY={0x02, 0x03, 0x05, 0x07, 0x09,     /
//                          0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08,   /
//                          0x0A, 0x0C, 0x0D}" -DRFD_RCVC_ALWAYS_ON=FALSE     /
//                          -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100           /
//                          -DRESPONSE_POLL_RATE=100) -DREJOIN_POLL_RATE=440  /
//                          "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Componen /
//                          ts\hal\target\CC2430EB\hal_timer.c" -D CC2430EB   /
//                          -D ZTOOL_P1 -D LOCATION_DONGLE -D MT_TASK -D      /
//                          xNV_RESTORE -D INT_HEAP_LEN=4608 -D               /
//                          HAL_UART_BIG_TX_BUF=1 -D                          /
//                          SPI_MGR_DEFAULT_MAX_TX_BUFF=1024 -D               /
//                          SPI_MGR_DEFAULT_OVERFLOW=1 -lC "C:\Texas          /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\LocDongle\List\" -lA      /
//                          "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects /
//                          \zstack\Samples\Location\CC2430DB\LocDongle\List\ /
//                          " --diag_suppress Pe001,Pa010 --diag_remark       /
//                          pe550 -o "C:\Texas Instruments\ZStack-1.4.3-1.2.1 /
//                          \Projects\zstack\Samples\Location\CC2430DB\LocDon /
//                          gle\Obj\" -e --require_prototypes -z9             /
//                          --no_code_motion --debug --core=plain             /
//                          --dptr=16,1 --data_model=large                    /
//                          --code_model=banked --calling_convention=xdata_re /
//                          entrant --place_constants=data --nr_virtual_regs  /
//                          8 -I "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Pro /
//                          jects\zstack\Samples\Location\CC2430DB\" -I       /
//                          "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects /
//                          \zstack\Samples\Location\CC2430DB\..\SOURCE\" -I  /
//                          "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects /
//                          \zstack\Samples\Location\CC2430DB\..\..\..\ZMAIN\ /
//                          TI2430DB\" -I "C:\Texas                           /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\WXL\INCLUDE\" /
//                           -I "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Proj /
//                          ects\zstack\Samples\Location\CC2430DB\..\..\..\.. /
//                          \..\COMPONENTS\MT\" -I "C:\Texas                  /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \HAL\INCLUDE\" -I "C:\Texas                       /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \HAL\TARGET\CC2430EB\" -I "C:\Texas               /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \OSAL\MCU\CCSOC\" -I "C:\Texas                    /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \OSAL\INCLUDE\" -I "C:\Texas                      /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \STACK\AF\" -I "C:\Texas                          /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \STACK\NWK\" -I "C:\Texas                         /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \STACK\SEC\" -I "C:\Texas                         /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \STACK\SYS\" -I "C:\Texas                         /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \STACK\ZDO\" -I "C:\Texas                         /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \ZMAC\F8W\" -I "C:\Texas                          /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \ZMAC\" -I "C:\Texas Instruments\ZStack-1.4.3-1.2 /
//                          .1\Projects\zstack\Samples\Location\CC2430DB\..\. /
//                          .\..\..\..\COMPONENTS\SERVICES\SADDR\" -I         /
//                          "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects /
//                          \zstack\Samples\Location\CC2430DB\..\..\..\..\..\ /
//                          COMPONENTS\SERVICES\SDATA\" -I "C:\Texas          /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \MAC\INCLUDE\" -I "C:\Texas                       /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \MAC\HIGH_LEVEL\" -I "C:\Texas                    /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \MAC\LOW_LEVEL\SRF03\" -I "C:\Texas               /
//                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sa /
//                          mples\Location\CC2430DB\..\..\..\..\..\COMPONENTS /
//                          \MAC\LOW_LEVEL\SRF03\SINGLE_CHIP\" -I             /
//                          "C:\Program Files\IAR Systems\Embedded Workbench  /
//                          4.0 Evaluation version\8051\INC\" -I "C:\Program  /
//                          Files\IAR Systems\Embedded Workbench 4.0          /
//                          Evaluation version\8051\INC\CLIB\"                /
//    List file          =  C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\ /
//                          zstack\Samples\Location\CC2430DB\LocDongle\List\h /
//                          al_timer.s51                                      /
//                                                                            /
//                                                                            /
///////////////////////////////////////////////////////////////////////////////

        NAME hal_timer

        RTMODEL "__calling_convention", "xdata_reentrant"
        RTMODEL "__code_model", "banked"
        RTMODEL "__core", "plain"
        RTMODEL "__data_model", "large"
        RTMODEL "__dptr_size", "16"
        RTMODEL "__extended_stack", "disabled"
        RTMODEL "__location_for_constants", "data"
        RTMODEL "__number_of_dptrs", "1"
        RTMODEL "__rt_version", "1"

        RSEG DOVERLAY:DATA:NOROOT(0)
        RSEG IOVERLAY:IDATA:NOROOT(0)
        RSEG ISTACK:IDATA:NOROOT(0)
        RSEG PSTACK:XDATA:NOROOT(0)
        RSEG XSTACK:XDATA:NOROOT(0)

        EXTERN ??HalTimerInterruptEnable?relay
        EXTERN ??halProcessTimer1?relay
        EXTERN ??halProcessTimer3?relay
        EXTERN ??halProcessTimer4?relay
        EXTERN ??halTimerRemap?relay
        EXTERN ??halTimerSendCallBack?relay
        EXTERN ??halTimerSetChannelMode?relay
        EXTERN ??halTimerSetCount?relay
        EXTERN ??halTimerSetOpMode?relay
        EXTERN ??halTimerSetPrescale?relay
        EXTERN ?BANKED_ENTER_XDATA
        EXTERN ?BANKED_LEAVE_XDATA
        EXTERN ?BDISPATCH
        EXTERN ?BRET
        EXTERN ?CALL_IND
        EXTERN ?INTERRUPT_ENTER_XSP
        EXTERN ?INTERRUPT_LEAVE_XSP
        EXTERN ?L_MUL
        EXTERN ?UC_SWITCH_DENSE
        EXTERN ?UC_SWITCH_SPARSE
        EXTERN ?UL_DIV_MOD
        EXTERN ?V0
        EXTERN ?XSTACK_DISP0_8
        EXTERN __INIT_XDATA_Z

        PUBLIC ??HalTimerConfig?relay
        FUNCTION ??HalTimerConfig?relay,0203H
        PUBLIC ??HalTimerInit?relay
        FUNCTION ??HalTimerInit?relay,0203H
        PUBLIC ??HalTimerInterruptEnable?relay
        FUNCTION ??HalTimerInterruptEnable?relay,0203H
        PUBLIC ??HalTimerStart?relay
        FUNCTION ??HalTimerStart?relay,0203H
        PUBLIC ??HalTimerStop?relay
        FUNCTION ??HalTimerStop?relay,0203H
        PUBLIC ??HalTimerTick?relay
        FUNCTION ??HalTimerTick?relay,0203H
        PUBLIC ??halProcessTimer1?relay
        FUNCTION ??halProcessTimer1?relay,0203H
        PUBLIC ??halProcessTimer3?relay
        FUNCTION ??halProcessTimer3?relay,0203H
        PUBLIC ??halProcessTimer4?relay
        FUNCTION ??halProcessTimer4?relay,0203H
        PUBWEAK `??halTimer1Isr??INTVEC 75`
        PUBWEAK `??halTimer3Isr??INTVEC 91`
        PUBWEAK `??halTimer4Isr??INTVEC 99`
        PUBLIC ??halTimerRemap?relay
        FUNCTION ??halTimerRemap?relay,0203H
        PUBLIC ??halTimerSendCallBack?relay
        FUNCTION ??halTimerSendCallBack?relay,0203H
        PUBLIC ??halTimerSetChannelMode?relay
        FUNCTION ??halTimerSetChannelMode?relay,0203H
        PUBLIC ??halTimerSetCount?relay
        FUNCTION ??halTimerSetCount?relay,0203H
        PUBLIC ??halTimerSetOpMode?relay
        FUNCTION ??halTimerSetOpMode?relay,0203H
        PUBLIC ??halTimerSetPrescale?relay
        FUNCTION ??halTimerSetPrescale?relay,0203H
        PUBLIC HalTimerConfig
        FUNCTION HalTimerConfig,021203H
        ARGFRAME XSTACK, 2, STACK
        LOCFRAME ISTACK, 1, STACK
        LOCFRAME XSTACK, 13, STACK
        PUBLIC HalTimerInit
        FUNCTION HalTimerInit,0203H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 2, STACK
        PUBLIC HalTimerInterruptEnable
        FUNCTION HalTimerInterruptEnable,080203H
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME ISTACK, 2, STACK
        PUBLIC HalTimerStart
        FUNCTION HalTimerStart,021203H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME XSTACK, 16, STACK
        PUBLIC HalTimerStop
        FUNCTION HalTimerStop,0a1203H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 2, STACK
        PUBLIC HalTimerTick
        FUNCTION HalTimerTick,021203H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 2, STACK
        PUBWEAK T1CCTL0
        PUBWEAK T1CCTL1
        PUBWEAK T1CCTL2
        PUBWEAK T1CTL
        PUBWEAK T3CCTL0
        PUBWEAK T3CCTL1
        PUBWEAK T3CTL
        PUBWEAK T4CCTL0
        PUBWEAK T4CCTL1
        PUBWEAK T4CTL
        PUBWEAK _A_IEN1
        PUBWEAK _A_TIMIF
        PUBLIC halProcessTimer1
        FUNCTION halProcessTimer1,021203H
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME ISTACK, 2, STACK
        PUBLIC halProcessTimer3
        FUNCTION halProcessTimer3,021203H
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME ISTACK, 2, STACK
        PUBLIC halProcessTimer4
        FUNCTION halProcessTimer4,021203H
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME ISTACK, 2, STACK
        PUBLIC halTimer1Isr
        FUNCTION halTimer1Isr,021233H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 15, STACK
        PUBLIC halTimer3Isr
        FUNCTION halTimer3Isr,021233H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 15, STACK
        PUBLIC halTimer4Isr
        FUNCTION halTimer4Isr,021233H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 15, STACK
        PUBLIC halTimerRemap
        FUNCTION halTimerRemap,080203H
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME ISTACK, 2, STACK
        PUBLIC halTimerSendCallBack
        FUNCTION halTimerSendCallBack,021203H
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME XSTACK, 9, STACK
        PUBLIC halTimerSetChannelMode
        FUNCTION halTimerSetChannelMode,080203H
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME ISTACK, 2, STACK
        PUBLIC halTimerSetCount
        FUNCTION halTimerSetCount,0203H
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME ISTACK, 1, STACK
        LOCFRAME XSTACK, 16, STACK
        PUBLIC halTimerSetOpMode
        FUNCTION halTimerSetOpMode,080203H
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME ISTACK, 2, STACK
        PUBLIC halTimerSetPrescale
        FUNCTION halTimerSetPrescale,080203H
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME ISTACK, 2, STACK
        
        CFI Names cfiNames0
        CFI StackFrame CFA_SP SP DATA
        CFI StackFrame CFA_PSP16 PSP16 XDATA
        CFI StackFrame CFA_XSP16 XSP16 XDATA
        CFI StaticOverlayFrame CFA_IOVERLAY IOVERLAY
        CFI StaticOverlayFrame CFA_DOVERLAY DOVERLAY
        CFI Resource `PSW.CY`:1, `B.BR0`:1, `B.BR1`:1, `B.BR2`:1, `B.BR3`:1
        CFI Resource `B.BR4`:1, `B.BR5`:1, `B.BR6`:1, `B.BR7`:1, `VB.BR8`:1
        CFI Resource `VB.BR9`:1, `VB.BR10`:1, `VB.BR11`:1, `VB.BR12`:1
        CFI Resource `VB.BR13`:1, `VB.BR14`:1, `VB.BR15`:1, VB:8, B:8, A:8
        CFI Resource PSW:8, DPL0:8, DPH0:8, R0:8, R1:8, R2:8, R3:8, R4:8, R5:8
        CFI Resource R6:8, R7:8, V0:8, V1:8, V2:8, V3:8, V4:8, V5:8, V6:8, V7:8
        CFI Resource SP:8, PSPH:8, PSPL:8, PSP16:16, XSPH:8, XSPL:8, XSP16:16
        CFI VirtualResource ?RET:24
        CFI Resource ?BRET_EXT:8
        CFI VirtualResource ?RET_HIGH:8, ?RET_LOW:8
        CFI ResourceParts PSP16 PSPH, PSPL
        CFI ResourceParts XSP16 XSPH, XSPL
        CFI ResourceParts ?RET ?BRET_EXT, ?RET_HIGH, ?RET_LOW
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 1
        CFI DataAlign -1
        CFI ReturnAddress ?RET CODE
        CFI CFA_DOVERLAY Used
        CFI CFA_IOVERLAY Used
        CFI CFA_SP SP+-3
        CFI CFA_PSP16 PSP16+0
        CFI CFA_XSP16 XSP16+0
        CFI `PSW.CY` SameValue
        CFI `B.BR0` SameValue
        CFI `B.BR1` SameValue
        CFI `B.BR2` SameValue
        CFI `B.BR3` SameValue
        CFI `B.BR4` SameValue
        CFI `B.BR5` SameValue
        CFI `B.BR6` SameValue
        CFI `B.BR7` SameValue
        CFI `VB.BR8` SameValue
        CFI `VB.BR9` SameValue
        CFI `VB.BR10` SameValue
        CFI `VB.BR11` SameValue
        CFI `VB.BR12` SameValue
        CFI `VB.BR13` SameValue
        CFI `VB.BR14` SameValue
        CFI `VB.BR15` SameValue
        CFI VB SameValue
        CFI B Undefined
        CFI A Undefined
        CFI PSW SameValue
        CFI DPL0 SameValue
        CFI DPH0 SameValue
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 Undefined
        CFI R5 Undefined
        CFI R6 SameValue
        CFI R7 SameValue
        CFI V0 SameValue
        CFI V1 SameValue
        CFI V2 SameValue
        CFI V3 SameValue
        CFI V4 SameValue
        CFI V5 SameValue
        CFI V6 SameValue
        CFI V7 SameValue
        CFI PSPH Undefined
        CFI PSPL Undefined
        CFI XSPH Undefined
        CFI XSPL Undefined
        CFI ?RET Concat
        CFI ?BRET_EXT Frame(CFA_SP, 3)
        CFI ?RET_HIGH Frame(CFA_SP, 2)
        CFI ?RET_LOW Frame(CFA_SP, 1)
        CFI EndCommon cfiCommon0
        
        
        CFI Common cfiCommon1 Using cfiNames0
        CFI CodeAlign 1
        CFI DataAlign -1
        CFI ReturnAddress ?RET CODE
        CFI CFA_DOVERLAY Used
        CFI CFA_IOVERLAY Used
        CFI CFA_SP SP+-2
        CFI CFA_PSP16 PSP16+0
        CFI CFA_XSP16 XSP16+0
        CFI `PSW.CY` SameValue
        CFI `B.BR0` SameValue
        CFI `B.BR1` SameValue
        CFI `B.BR2` SameValue
        CFI `B.BR3` SameValue
        CFI `B.BR4` SameValue
        CFI `B.BR5` SameValue
        CFI `B.BR6` SameValue
        CFI `B.BR7` SameValue
        CFI `VB.BR8` SameValue
        CFI `VB.BR9` SameValue
        CFI `VB.BR10` SameValue
        CFI `VB.BR11` SameValue
        CFI `VB.BR12` SameValue
        CFI `VB.BR13` SameValue
        CFI `VB.BR14` SameValue
        CFI `VB.BR15` SameValue
        CFI VB SameValue
        CFI B SameValue
        CFI A SameValue
        CFI PSW SameValue
        CFI DPL0 SameValue
        CFI DPH0 SameValue
        CFI R0 SameValue
        CFI R1 SameValue
        CFI R2 SameValue
        CFI R3 SameValue
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI V0 SameValue
        CFI V1 SameValue
        CFI V2 SameValue
        CFI V3 SameValue
        CFI V4 SameValue
        CFI V5 SameValue
        CFI V6 SameValue
        CFI V7 SameValue
        CFI PSPH Undefined
        CFI PSPL Undefined
        CFI XSPH Undefined
        CFI XSPL Undefined
        CFI ?RET Concat
        CFI ?BRET_EXT SameValue
        CFI ?RET_HIGH Frame(CFA_SP, 2)
        CFI ?RET_LOW Frame(CFA_SP, 1)
        CFI EndCommon cfiCommon1
        
HalTimerConfig      SYMBOL "HalTimerConfig"
??HalTimerConfig?relay SYMBOL "?relay", HalTimerConfig
HalTimerInit        SYMBOL "HalTimerInit"
??HalTimerInit?relay SYMBOL "?relay", HalTimerInit
HalTimerInterruptEnable SYMBOL "HalTimerInterruptEnable"
??HalTimerInterruptEnable?relay SYMBOL "?relay", HalTimerInterruptEnable
HalTimerStart       SYMBOL "HalTimerStart"
??HalTimerStart?relay SYMBOL "?relay", HalTimerStart
HalTimerStop        SYMBOL "HalTimerStop"
??HalTimerStop?relay SYMBOL "?relay", HalTimerStop
HalTimerTick        SYMBOL "HalTimerTick"
??HalTimerTick?relay SYMBOL "?relay", HalTimerTick
halProcessTimer1    SYMBOL "halProcessTimer1"
??halProcessTimer1?relay SYMBOL "?relay", halProcessTimer1
halProcessTimer3    SYMBOL "halProcessTimer3"
??halProcessTimer3?relay SYMBOL "?relay", halProcessTimer3
halProcessTimer4    SYMBOL "halProcessTimer4"
??halProcessTimer4?relay SYMBOL "?relay", halProcessTimer4
halTimer1Isr        SYMBOL "halTimer1Isr"
`??halTimer1Isr??INTVEC 75` SYMBOL "??INTVEC 75", halTimer1Isr
halTimer3Isr        SYMBOL "halTimer3Isr"
`??halTimer3Isr??INTVEC 91` SYMBOL "??INTVEC 91", halTimer3Isr
halTimer4Isr        SYMBOL "halTimer4Isr"
`??halTimer4Isr??INTVEC 99` SYMBOL "??INTVEC 99", halTimer4Isr
halTimerRemap       SYMBOL "halTimerRemap"
??halTimerRemap?relay SYMBOL "?relay", halTimerRemap
halTimerSendCallBack SYMBOL "halTimerSendCallBack"
??halTimerSendCallBack?relay SYMBOL "?relay", halTimerSendCallBack
halTimerSetChannelMode SYMBOL "halTimerSetChannelMode"
??halTimerSetChannelMode?relay SYMBOL "?relay", halTimerSetChannelMode
halTimerSetCount    SYMBOL "halTimerSetCount"
??halTimerSetCount?relay SYMBOL "?relay", halTimerSetCount
halTimerSetOpMode   SYMBOL "halTimerSetOpMode"
??halTimerSetOpMode?relay SYMBOL "?relay", halTimerSetOpMode
halTimerSetPrescale SYMBOL "halTimerSetPrescale"
??halTimerSetPrescale?relay SYMBOL "?relay", halTimerSetPrescale

// C:\Texas Instruments\ZStack-1.4.3-1.2.1\Components\hal\target\CC2430EB\hal_timer.c
//    1 /**************************************************************************************************
//    2   Filename:       hal_timer.c
//    3   Revised:        $Date: 2007-11-01 08:44:53 -0700 (Thu, 01 Nov 2007) $
//    4   Revision:       $Revision: 15821 $
//    5 
//    6   Description:   This file contains the interface to the Timer Service.
//    7 
//    8 
//    9   Copyright 2006-2007 Texas Instruments Incorporated. All rights reserved.
//   10 
//   11   IMPORTANT: Your use of this Software is limited to those specific rights
//   12   granted under the terms of a software license agreement between the user
//   13   who downloaded the software, his/her employer (which must be your employer)
//   14   and Texas Instruments Incorporated (the "License").  You may not use this
//   15   Software unless you agree to abide by the terms of the License. The License
//   16   limits your use, and you acknowledge, that the Software may not be modified,
//   17   copied or distributed unless embedded on a Texas Instruments microcontroller
//   18   or used solely and exclusively in conjunction with a Texas Instruments radio
//   19   frequency transceiver, which is integrated into your product.  Other than for
//   20   the foregoing purpose, you may not use, reproduce, copy, prepare derivative
//   21   works of, modify, distribute, perform, display or sell this Software and/or
//   22   its documentation for any purpose.
//   23 
//   24   YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
//   25   PROVIDED “AS IS?WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
//   26   INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
//   27   NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
//   28   TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
//   29   NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
//   30   LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
//   31   INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
//   32   OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
//   33   OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
//   34   (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
//   35 
//   36   Should you have any questions regarding your right to use this Software,
//   37   contact Texas Instruments Incorporated at www.TI.com.
//   38 **************************************************************************************************/
//   39 /*********************************************************************
//   40  NOTE: The following mapping is done between the logical timer
//   41        names defined in HAL_TIMER.H and the physical HW timer.
//   42 
//   43        HAL_TIMER_0 --> HW Timer 3  (8-bits)
//   44        HAL_TIMER_2 --> HW Timer 4  (8-bits)
//   45        HAL_TIMER_3 --> HW Timer 1  (16-bits)
//   46 
//   47  NOTE: The timer code assumes only one channel, CHANNEL 0, is used
//   48        for each timer.  There is currently no support for other
//   49        channels.
//   50 
//   51  NOTE: Only Output Compare Mode is supported.  There is no provision
//   52        to support Input Capture Mode.
//   53 
//   54  NOTE: There is no support to map the output of the timers to a
//   55        physical I/O pin
//   56 
//   57 *********************************************************************/
//   58 /*********************************************************************
//   59  * INCLUDES
//   60  */
//   61 #include  "hal_mcu.h"

        ASEGN SFR_AN:DATA:NOROOT,0b8H
// union <unnamed> volatile __sfr _A_IEN1
_A_IEN1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0cbH
// unsigned char volatile __sfr T3CTL
T3CTL:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0ccH
// unsigned char volatile __sfr T3CCTL0
T3CCTL0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0ceH
// unsigned char volatile __sfr T3CCTL1
T3CCTL1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0d8H
// union <unnamed> volatile __sfr _A_TIMIF
_A_TIMIF:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0e4H
// unsigned char volatile __sfr T1CTL
T1CTL:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0e5H
// unsigned char volatile __sfr T1CCTL0
T1CCTL0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0e6H
// unsigned char volatile __sfr T1CCTL1
T1CCTL1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0e7H
// unsigned char volatile __sfr T1CCTL2
T1CCTL2:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0ebH
// unsigned char volatile __sfr T4CTL
T4CTL:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0ecH
// unsigned char volatile __sfr T4CCTL0
T4CCTL0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0eeH
// unsigned char volatile __sfr T4CCTL1
T4CCTL1:
        DS 1
//   62 #include  "hal_defs.h"
//   63 #include  "hal_types.h"
//   64 #include  "hal_timer.h"
//   65 
//   66 /*********************************************************************
//   67  * MACROS
//   68  */
//   69 
//   70 /*********************************************************************
//   71  * CONSTANTS
//   72  */
//   73 #define HW_TIMER_1        0x00
//   74 #define HW_TIMER_3        0x01
//   75 #define HW_TIMER_4        0x02
//   76 #define HW_TIMER_INVALID  0x03
//   77 #define HW_TIMER_MAX      0x03
//   78 
//   79 #define IEN1_T1IE     0x02    /* Timer1 Interrupt Enable */
//   80 #define IEN1_T3IE     0x08    /* Timer3 Interrupt Enable */
//   81 #define IEN1_T4IE     0x10    /* Timer4 Interrupt Enable */
//   82 
//   83 #define T1CTL_CH2IF   0x80
//   84 #define T1CTL_CH1IF   0x40
//   85 #define T1CTL_CH0IF   0x20
//   86 #define T1CTL_OVFIF   0x10
//   87 
//   88 #define TIMIF_T1OVFIM 0x40
//   89 #define TIMIF_T4CH1IF 0x20
//   90 #define TIMIF_T4CH0IF 0x10
//   91 #define TIMIF_T4OVFIF 0x08
//   92 #define TIMIF_T3CH1IF 0x04
//   93 #define TIMIF_T3CH0IF 0x02
//   94 #define TIMIF_T3OVFIF 0x01
//   95 
//   96 #define T34CTL_OVFIM  0x80
//   97 
//   98 #define T134CCTL_IM         0x40    /* Interrupt Mask */
//   99 #define T134CCTL_CMP_BITS   0x38    /* Bits[5:3] == CMP[2:0] */
//  100 #define T134CCTL_MODE       0x04    /* Capture(0)/Compare(1) mode */
//  101 #define T134CCTL_CAP_BITS   0x03    /* Bits[1:0] == CAP[1:0] */
//  102 
//  103 #define T134CCTL_CMP_OC     0x18    /* Set output on compare, clear at 0 */
//  104 #define T134CCTL_CAP_RE     0x01    /* Set input capture on rising edge */
//  105 
//  106 /* Timer clock pre-scaler definitions for 16bit timer1 */
//  107 #define HAL_TIMER1_16_TC_DIV1     0x00  /* No clock pre-scaling */
//  108 #define HAL_TIMER1_16_TC_DIV8     0x04  /* Clock pre-scaled by 8 */
//  109 #define HAL_TIMER1_16_TC_DIV32    0x08  /* Clock pre-scaled by 32 */
//  110 #define HAL_TIMER1_16_TC_DIV128   0x0c  /* Clock pre-scaled by 128 */
//  111 #define HAL_TIMER1_16_TC_BITS     0x0c  /* Bits 3:2 */
//  112 
//  113 /* Timer clock pre-scaler definitions for 8bit timer3 and timer4 */
//  114 #define HAL_TIMER34_8_TC_DIV1     0x00  /* No clock pre-scaling */
//  115 #define HAL_TIMER34_8_TC_DIV2     0x20  /* Clock pre-scaled by 2 */
//  116 #define HAL_TIMER34_8_TC_DIV4     0x40  /* Clock pre-scaled by 4 */
//  117 #define HAL_TIMER34_8_TC_DIV8     0x60  /* Clock pre-scaled by 8 */
//  118 #define HAL_TIMER34_8_TC_DIV16    0x80  /* Clock pre-scaled by 16 */
//  119 #define HAL_TIMER34_8_TC_DIV32    0xA0  /* Clock pre-scaled by 32 */
//  120 #define HAL_TIMER34_8_TC_DIV64    0xC0  /* Clock pre-scaled by 64 */
//  121 #define HAL_TIMER34_8_TC_DIV128   0xE0  /* Clock pre-scaled by 128 */
//  122 #define HAL_TIMER34_8_TC_BITS     0xE0  /* Bits 7:5 */
//  123 
//  124 /* Operation Mode definitions */
//  125 #define HAL_TIMER1_OPMODE_STOP      0x00  /* Free Running Mode, Count from 0 to Max */
//  126 #define HAL_TIMER1_OPMODE_FREERUN   0x01  /* Free Running Mode, Count from 0 to Max */
//  127 #define HAL_TIMER1_OPMODE_MODULO    0x02  /* Modulo Mode, Count from 0 to CompareValue */
//  128 #define HAL_TIMER1_OPMODE_BITS      0x03  /* Bits 1:0 */
//  129 
//  130 #define HAL_TIMER34_START           0x10  /* Timer3 and Timer4 have separate Start bit */
//  131 #define HAL_TIMER34_OPMODE_FREERUN  0x00  /* Free Running Mode, Count from 0 to Max */
//  132 #define HAL_TIMER34_OPMODE_MODULO   0x02  /* Modulo Mode, Count from 0 to CompareValue */
//  133 #define HAL_TIMER34_OPMODE_BITS     0x03  /* Bits 1:0 */
//  134 
//  135 #define HAL_TIMER_MODE_STOP         0x03
//  136 
//  137 /* Prescale settings */
//  138 #define HAL_TIMER1_16_PRESCALE      HAL_TIMER1_16_TC_DIV128
//  139 #define HAL_TIMER1_16_PRESCALE_VAL  128
//  140 #define HAL_TIMER3_8_PRESCALE       HAL_TIMER34_8_TC_DIV128
//  141 #define HAL_TIMER3_8_PRESCALE_VAL   128
//  142 #define HAL_TIMER4_8_PRESCALE       HAL_TIMER34_8_TC_DIV128
//  143 #define HAL_TIMER4_8_PRESCALE_VAL   128
//  144 
//  145 /* Clock settings */
//  146 #define HAL_TIMER_16MHZ           16
//  147 #define HAL_TIMER_32MHZ           32
//  148 
//  149 /* Default all timers to use channel 0 */
//  150 #define TCHN_T1CCTL   &(X_T1CCTL0)
//  151 #define TCHN_T1CCL    &(X_T1CC0L)
//  152 #define TCHN_T1CCH    &(X_T1CC0H)
//  153 #define TCNH_T1OVF    &(X_TIMIF)
//  154 #define TCHN_T1OVFBIT TIMIF_T1OVFIM
//  155 #define TCHN_T1INTBIT IEN1_T1IE
//  156 
//  157 #define TCHN_T3CCTL   &(X_T3CCTL0)
//  158 #define TCHN_T3CCL    &(X_T3CC0)
//  159 #define TCHN_T3CCH    &(X_T3CC0)
//  160 #define TCNH_T3OVF    &(X_T3CTL)
//  161 #define TCHN_T3OVFBIT T34CTL_OVFIM
//  162 #define TCHN_T3INTBIT IEN1_T3IE
//  163 
//  164 #define TCHN_T4CCTL   &(X_T4CCTL0)
//  165 #define TCHN_T4CCL    &(X_T4CC0)
//  166 #define TCHN_T4CCH    &(X_T4CC0)
//  167 #define TCNH_T4OVF    &(X_T4CTL)
//  168 #define TCHN_T4OVFBIT T34CTL_OVFIM
//  169 #define TCHN_T4INTBIT IEN1_T4IE
//  170 
//  171 /*********************************************************************
//  172  * TYPEDEFS
//  173  */
//  174 typedef struct
//  175 {
//  176   bool configured;
//  177   bool intEnable;
//  178   uint8 opMode;
//  179   uint8 channel;
//  180   uint8 channelMode;
//  181   uint8 prescale;
//  182   uint8 prescaleVal;
//  183   uint8 clock;
//  184   halTimerCBack_t callBackFunc;
//  185 } halTimerSettings_t;
//  186 
//  187 typedef struct
//  188 {
//  189   uint8 volatile XDATA *TxCCTL;
//  190   uint8 volatile XDATA *TxCCH;
//  191   uint8 volatile XDATA *TxCCL;
//  192   uint8 volatile XDATA *TxOVF;
//  193   uint8 ovfbit;
//  194   uint8 intbit;
//  195 } halTimerChannel_t;
//  196 
//  197 /*********************************************************************
//  198  * GLOBAL VARIABLES
//  199  */

        RSEG XDATA_Z:XDATA:NOROOT(0)
//  200 static halTimerSettings_t halTimerRecord[HW_TIMER_MAX];
halTimerRecord:
        DS 30
        REQUIRE __INIT_XDATA_Z

        RSEG XDATA_Z:XDATA:NOROOT(0)
//  201 static halTimerChannel_t  halTimerChannel[HW_TIMER_MAX];
halTimerChannel:
        DS 30
        REQUIRE __INIT_XDATA_Z
//  202 
//  203 /*********************************************************************
//  204  * FUNCTIONS - External
//  205  */
//  206 
//  207 /*********************************************************************
//  208  * FUNCTIONS - Local
//  209  */
//  210 uint8 halTimerSetCount (uint8 cc2430id, uint32 timePerTick);
//  211 uint8 halTimerSetPrescale (uint8 cc2430id, uint8 prescale);
//  212 uint8 halTimerSetOpMode (uint8 cc2430id, uint8 opMode);
//  213 uint8 halTimerSetChannelMode (uint8 cc2430id, uint8 channelMode);
//  214 void halTimerSendCallBack (uint8 timerId, uint8 channel, uint8 channelMode);
//  215 uint8 halTimerRemap (uint8 timerId);
//  216 void halProcessTimer1 (void);
//  217 void halProcessTimer3 (void);
//  218 void halProcessTimer4 (void);
//  219 
//  220 
//  221 /*********************************************************************
//  222  * FUNCTIONS - API
//  223  */
//  224 
//  225 /*********************************************************************
//  226  * @fn      HalTimerInit
//  227  *
//  228  * @brief   Initialize Timer Service
//  229  *
//  230  * @param   None
//  231  *
//  232  * @return  None
//  233  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  234 void HalTimerInit (void)
HalTimerInit:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function HalTimerInit
//  235 {
        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
//  236   T1CCTL0 = 0;    /* Make sure interrupts are disabled */
        MOV     0xe5,#0x0
//  237   T1CCTL1 = 0;    /* Make sure interrupts are disabled */
        MOV     0xe6,#0x0
//  238   T1CCTL2 = 0;    /* Make sure interrupts are disabled */
        MOV     0xe7,#0x0
//  239   T3CCTL0 = 0;    /* Make sure interrupts are disabled */
        MOV     0xcc,#0x0
//  240   T3CCTL1 = 0;    /* Make sure interrupts are disabled */
        MOV     0xce,#0x0
//  241   T4CCTL0 = 0;    /* Make sure interrupts are disabled */
        MOV     0xec,#0x0
//  242   T4CCTL1 = 0;    /* Make sure interrupts are disabled */
        MOV     0xee,#0x0
//  243 
//  244   /* Setup prescale & clock for timer0 */
//  245   halTimerRecord[HW_TIMER_1].prescale    = HAL_TIMER1_16_PRESCALE;
        MOV     A,#0xc
        MOV     DPTR,#(halTimerRecord + 5)
        MOVX    @DPTR,A
//  246   halTimerRecord[HW_TIMER_1].clock       = HAL_TIMER_32MHZ;
        MOV     A,#0x20
        MOV     DPTR,#(halTimerRecord + 7)
        MOVX    @DPTR,A
//  247   halTimerRecord[HW_TIMER_1].prescaleVal = HAL_TIMER1_16_PRESCALE_VAL;
        MOV     A,#-0x80
        MOV     DPTR,#(halTimerRecord + 6)
        MOVX    @DPTR,A
//  248 
//  249   /* Setup prescale & clock for timer2 */
//  250   halTimerRecord[HW_TIMER_3].prescale    = HAL_TIMER3_8_PRESCALE;
        MOV     A,#-0x20
        MOV     DPTR,#(halTimerRecord + 15)
        MOVX    @DPTR,A
//  251   halTimerRecord[HW_TIMER_3].clock       = HAL_TIMER_32MHZ;
        MOV     A,#0x20
        MOV     DPTR,#(halTimerRecord + 17)
        MOVX    @DPTR,A
//  252   halTimerRecord[HW_TIMER_3].prescaleVal = HAL_TIMER3_8_PRESCALE_VAL;
        MOV     A,#-0x80
        MOV     DPTR,#(halTimerRecord + 16)
        MOVX    @DPTR,A
//  253 
//  254   /* Setup prescale & clock for timer3 */
//  255   halTimerRecord[HW_TIMER_4].prescale    = HAL_TIMER4_8_PRESCALE;
        MOV     A,#-0x20
        MOV     DPTR,#(halTimerRecord + 25)
        MOVX    @DPTR,A
//  256   halTimerRecord[HW_TIMER_4].clock       = HAL_TIMER_32MHZ;
        MOV     A,#0x20
        MOV     DPTR,#(halTimerRecord + 27)
        MOVX    @DPTR,A
//  257   halTimerRecord[HW_TIMER_4].prescaleVal = HAL_TIMER4_8_PRESCALE_VAL;
        MOV     A,#-0x80
        MOV     DPTR,#(halTimerRecord + 26)
        MOVX    @DPTR,A
//  258 
//  259   /* Setup Timer1 Channel structure */
//  260   halTimerChannel[HW_TIMER_1].TxCCTL =  TCHN_T1CCTL;
        MOV     DPTR,#halTimerChannel
        MOV     A,#-0x1b
        LCALL   ??Subroutine0_0 & 0xFFFF
//  261   halTimerChannel[HW_TIMER_1].TxCCL =   TCHN_T1CCL;
??CrossCallReturnLabel_0:
        MOV     DPTR,#(halTimerChannel + 4)
        MOV     A,#-0x26
        LCALL   ??Subroutine0_0 & 0xFFFF
//  262   halTimerChannel[HW_TIMER_1].TxCCH =   TCHN_T1CCH;
??CrossCallReturnLabel_1:
        MOV     DPTR,#(halTimerChannel + 2)
        MOV     A,#-0x25
        LCALL   ??Subroutine0_0 & 0xFFFF
//  263   halTimerChannel[HW_TIMER_1].TxOVF =   TCNH_T1OVF;
??CrossCallReturnLabel_2:
        MOV     DPTR,#(halTimerChannel + 6)
        MOV     A,#-0x28
        LCALL   ??Subroutine0_0 & 0xFFFF
//  264   halTimerChannel[HW_TIMER_1].ovfbit =  TCHN_T1OVFBIT;
??CrossCallReturnLabel_3:
        MOV     A,#0x40
        MOV     DPTR,#(halTimerChannel + 8)
        MOVX    @DPTR,A
//  265   halTimerChannel[HW_TIMER_1].intbit =  TCHN_T1INTBIT;
        MOV     A,#0x2
        MOV     DPTR,#(halTimerChannel + 9)
        MOVX    @DPTR,A
//  266 
//  267   /* Setup Timer3 Channel structure */
//  268   halTimerChannel[HW_TIMER_3].TxCCTL =  TCHN_T3CCTL;
        MOV     DPTR,#(halTimerChannel + 10)
        MOV     A,#-0x34
        LCALL   ??Subroutine0_0 & 0xFFFF
//  269   halTimerChannel[HW_TIMER_3].TxCCL =   TCHN_T3CCL;
??CrossCallReturnLabel_4:
        MOV     DPTR,#(halTimerChannel + 14)
        LCALL   ?Subroutine0 & 0xFFFF
//  270   halTimerChannel[HW_TIMER_3].TxCCH =   TCHN_T3CCH;
??CrossCallReturnLabel_5:
        MOV     DPTR,#(halTimerChannel + 12)
        LCALL   ?Subroutine0 & 0xFFFF
//  271   halTimerChannel[HW_TIMER_3].TxOVF =   TCNH_T3OVF;
??CrossCallReturnLabel_6:
        MOV     DPTR,#(halTimerChannel + 16)
        MOV     A,#-0x35
        LCALL   ??Subroutine0_0 & 0xFFFF
//  272   halTimerChannel[HW_TIMER_3].ovfbit =  TCHN_T3OVFBIT;
??CrossCallReturnLabel_7:
        MOV     A,#-0x80
        MOV     DPTR,#(halTimerChannel + 18)
        MOVX    @DPTR,A
//  273   halTimerChannel[HW_TIMER_3].intbit =  TCHN_T3INTBIT;
        MOV     A,#0x8
        MOV     DPTR,#(halTimerChannel + 19)
        MOVX    @DPTR,A
//  274 
//  275   /* Setup Timer4 Channel structure */
//  276   halTimerChannel[HW_TIMER_4].TxCCTL =  TCHN_T4CCTL;
        MOV     DPTR,#(halTimerChannel + 20)
        MOV     A,#-0x14
        LCALL   ??Subroutine0_0 & 0xFFFF
//  277   halTimerChannel[HW_TIMER_4].TxCCL =   TCHN_T4CCL;
??CrossCallReturnLabel_8:
        MOV     DPTR,#(halTimerChannel + 24)
        MOV     A,#-0x13
        LCALL   ??Subroutine0_0 & 0xFFFF
//  278   halTimerChannel[HW_TIMER_4].TxCCH =   TCHN_T4CCH;
??CrossCallReturnLabel_9:
        MOV     DPTR,#(halTimerChannel + 22)
        MOV     A,#-0x13
        LCALL   ??Subroutine0_0 & 0xFFFF
//  279   halTimerChannel[HW_TIMER_4].TxOVF =   TCNH_T4OVF;
??CrossCallReturnLabel_10:
        MOV     DPTR,#(halTimerChannel + 26)
        MOV     A,#-0x15
        LCALL   ??Subroutine0_0 & 0xFFFF
//  280   halTimerChannel[HW_TIMER_4].ovfbit =  TCHN_T4OVFBIT;
??CrossCallReturnLabel_11:
        MOV     A,#-0x80
        MOV     DPTR,#(halTimerChannel + 28)
        MOVX    @DPTR,A
//  281   halTimerChannel[HW_TIMER_4].intbit =  TCHN_T4INTBIT;
        MOV     A,#0x10
        MOV     DPTR,#(halTimerChannel + 29)
        MOVX    @DPTR,A
//  282 }
        LJMP    ?Subroutine12 & 0xFFFF
        CFI EndBlock cfiBlock0
        REQUIRE T3CCTL0
        REQUIRE T3CCTL1
        REQUIRE T1CCTL0
        REQUIRE T1CCTL1
        REQUIRE T1CCTL2
        REQUIRE T4CCTL0
        REQUIRE T4CCTL1

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiCond1 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond2 Using cfiCommon0
        CFI (cfiCond2) NoFunction
        CFI (cfiCond2) Conditional ??CrossCallReturnLabel_6
        CFI (cfiCond2) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond2) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond2) CFA_SP SP+-5
        CFI Block cfiPicker3 Using cfiCommon1
        CFI (cfiPicker3) NoFunction
        CFI (cfiPicker3) Picker
        MOV     A,#-0x33
        CFI Block cfiCond4 Using cfiCommon0
        CFI (cfiCond4) NoFunction
        CFI (cfiCond4) Conditional ??CrossCallReturnLabel_0
        CFI (cfiCond4) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond4) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond4) CFA_SP SP+-5
        CFI Block cfiCond5 Using cfiCommon0
        CFI (cfiCond5) NoFunction
        CFI (cfiCond5) Conditional ??CrossCallReturnLabel_1
        CFI (cfiCond5) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond5) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond5) CFA_SP SP+-5
        CFI Block cfiCond6 Using cfiCommon0
        CFI (cfiCond6) NoFunction
        CFI (cfiCond6) Conditional ??CrossCallReturnLabel_2
        CFI (cfiCond6) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond6) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond6) CFA_SP SP+-5
        CFI Block cfiCond7 Using cfiCommon0
        CFI (cfiCond7) NoFunction
        CFI (cfiCond7) Conditional ??CrossCallReturnLabel_3
        CFI (cfiCond7) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond7) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond7) CFA_SP SP+-5
        CFI Block cfiCond8 Using cfiCommon0
        CFI (cfiCond8) NoFunction
        CFI (cfiCond8) Conditional ??CrossCallReturnLabel_4
        CFI (cfiCond8) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond8) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond8) CFA_SP SP+-5
        CFI Block cfiCond9 Using cfiCommon0
        CFI (cfiCond9) NoFunction
        CFI (cfiCond9) Conditional ??CrossCallReturnLabel_7
        CFI (cfiCond9) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond9) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond9) CFA_SP SP+-5
        CFI Block cfiCond10 Using cfiCommon0
        CFI (cfiCond10) NoFunction
        CFI (cfiCond10) Conditional ??CrossCallReturnLabel_8
        CFI (cfiCond10) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond10) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond10) CFA_SP SP+-5
        CFI Block cfiCond11 Using cfiCommon0
        CFI (cfiCond11) NoFunction
        CFI (cfiCond11) Conditional ??CrossCallReturnLabel_9
        CFI (cfiCond11) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond11) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond11) CFA_SP SP+-5
        CFI Block cfiCond12 Using cfiCommon0
        CFI (cfiCond12) NoFunction
        CFI (cfiCond12) Conditional ??CrossCallReturnLabel_10
        CFI (cfiCond12) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond12) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond12) CFA_SP SP+-5
        CFI Block cfiCond13 Using cfiCommon0
        CFI (cfiCond13) NoFunction
        CFI (cfiCond13) Conditional ??CrossCallReturnLabel_11
        CFI (cfiCond13) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond13) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond13) CFA_SP SP+-5
??Subroutine0_0:
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,#-0x21
        MOVX    @DPTR,A
        RET
        CFI EndBlock cfiCond1
        CFI EndBlock cfiCond2
        CFI EndBlock cfiPicker3
        CFI EndBlock cfiCond4
        CFI EndBlock cfiCond5
        CFI EndBlock cfiCond6
        CFI EndBlock cfiCond7
        CFI EndBlock cfiCond8
        CFI EndBlock cfiCond9
        CFI EndBlock cfiCond10
        CFI EndBlock cfiCond11
        CFI EndBlock cfiCond12
        CFI EndBlock cfiCond13
//  283 
//  284 /***************************************************************************************************
//  285  * @fn      HalTimerConfig
//  286  *
//  287  * @brief   Configure the Timer Serivce
//  288  *
//  289  * @param   timerId - Id of the timer
//  290  *          opMode  - Operation mode
//  291  *          channel - Channel where the counter operates on
//  292  *          channelMode - Mode of that channel
//  293  *          prescale - Prescale of the clock
//  294  *          cBack - Pointer to the callback function
//  295  *
//  296  * @return  Status of the configuration
//  297  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  298 uint8 HalTimerConfig (uint8 timerId, uint8 opMode, uint8 channel, uint8 channelMode,
HalTimerConfig:
        CFI Block cfiBlock14 Using cfiCommon0
        CFI Function HalTimerConfig
//  299                       bool intEnable, halTimerCBack_t cBack)
//  300 {
        FUNCALL HalTimerConfig, halTimerRemap
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 13, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 13, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        MOV     A,#-0xd
        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 V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 13)
        ; Saved register size: 13
        ; Auto size: 0
        MOV     ?V0 + 4,R1
        MOV     ?V0 + 0,R2
        MOV     ?V0 + 1,R3
        MOV     ?V0 + 2,R4
        MOV     ?V0 + 3,R5
        MOV     A,#0xd
        LCALL   ?XSTACK_DISP0_8
        MOVX    A,@DPTR
        MOV     R6,A
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R7,A
//  301   uint8 hwtimerid;
//  302 
//  303   hwtimerid = halTimerRemap (timerId);
        ; Setup parameters for call to function halTimerRemap
        LCALL   ??halTimerRemap?relay
        MOV     A,R1
        MOV     R2,A
//  304 
//  305   if ((opMode & HAL_TIMER_MODE_MASK) && (timerId < HAL_TIMER_MAX) &&
//  306       (channelMode & HAL_TIMER_CHANNEL_MASK) && (channel & HAL_TIMER_CHANNEL_MASK))
        MOV     A,#0x3
        ANL     A,?V0 + 0
        JZ      ??HalTimerConfig_0
        MOV     A,?V0 + 4
        CLR     C
        SUBB    A,#0x4
        JNC     ??HalTimerConfig_0
        MOV     A,#0xf
        ANL     A,?V0 + 2
        JZ      ??HalTimerConfig_0
        MOV     A,#0xf
        ANL     A,?V0 + 1
        JZ      ??HalTimerConfig_0
//  307   {
//  308     halTimerRecord[hwtimerid].configured    = TRUE;
        MOV     A,R2
        MOV     B,#0xa
        MUL     AB
        ADD     A,#(halTimerRecord & 0xff)
        MOV     R0,A
        MOV     A,B
        ADDC    A,#((halTimerRecord >> 8) & 0xff)
        MOV     R1,A
        MOV     A,R0
        MOV     R2,A
        MOV     A,R1
        MOV     R3,A
        MOV     A,#0x1
        MOV     DPL,R2
        MOV     DPH,R3
        MOVX    @DPTR,A
//  309     halTimerRecord[hwtimerid].opMode        = opMode;
        INC     DPTR
        INC     DPTR
        MOV     A,?V0 + 0
        LCALL   ?Subroutine1 & 0xFFFF
//  310     halTimerRecord[hwtimerid].channel       = channel;
??CrossCallReturnLabel_12:
        MOV     A,?V0 + 1
        LCALL   ?Subroutine1 & 0xFFFF
//  311     halTimerRecord[hwtimerid].channelMode   = channelMode;
??CrossCallReturnLabel_13:
        INC     DPTR
        MOV     A,?V0 + 2
        MOVX    @DPTR,A
//  312     halTimerRecord[hwtimerid].intEnable     = intEnable;
        MOV     DPL,R2
        MOV     DPH,R3
        INC     DPTR
        MOV     A,?V0 + 3
        MOVX    @DPTR,A
//  313     halTimerRecord[hwtimerid].callBackFunc  = cBack;
        MOV     A,R6
        MOV     R0,A
        MOV     A,R7
        MOV     R1,A
        MOV     DPL,R2
        MOV     DPH,R3
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOV     A,R0
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,R1
        MOVX    @DPTR,A
//  314   }
//  315   else
//  316   {
//  317     return HAL_TIMER_PARAMS_ERROR;
//  318   }
//  319   return HAL_TIMER_OK;
        MOV     R1,#0x0
        SJMP    ??HalTimerConfig_1
??HalTimerConfig_0:
        MOV     R1,#0x2
??HalTimerConfig_1:
        MOV     R7,#0x5
        LJMP    ?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock14
//  320 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
        CFI Block cfiCond15 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_12
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 13)
        CFI Block cfiCond16 Using cfiCommon0
        CFI (cfiCond16) NoFunction
        CFI (cfiCond16) Conditional ??CrossCallReturnLabel_13
        CFI (cfiCond16) R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond16) VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond16) V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond16) V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond16) V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond16) V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond16) V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond16) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond16) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond16) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond16) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond16) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond16) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond16) CFA_SP SP+0
        CFI (cfiCond16) CFA_XSP16 add(XSP16, 13)
        CFI Block cfiPicker17 Using cfiCommon1
        CFI (cfiPicker17) NoFunction
        CFI (cfiPicker17) Picker
        MOVX    @DPTR,A
        MOV     DPL,R2
        MOV     DPH,R3
        INC     DPTR
        INC     DPTR
        INC     DPTR
        RET
        CFI EndBlock cfiCond15
        CFI EndBlock cfiCond16
        CFI EndBlock cfiPicker17
//  321 
//  322 
//  323 /***************************************************************************************************
//  324  * @fn      HalTimerStart
//  325  *
//  326  * @brief   Start the Timer Service
//  327  *
//  328  * @param   timerId      - ID of the timer
//  329  *          timerPerTick - number of micro sec per tick, (ticks x prescale) / clock = usec/tick
//  330  *
//  331  * @return  Status - OK or Not OK
//  332  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  333 uint8 HalTimerStart (uint8 timerId, uint32 timePerTick)
HalTimerStart:
        CFI Block cfiBlock18 Using cfiCommon0
        CFI Function HalTimerStart
//  334 {
        FUNCALL HalTimerStart, halTimerRemap
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 16, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalTimerStart, halTimerSetCount
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 16, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalTimerStart, halTimerSetPrescale
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 16, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalTimerStart, halTimerSetOpMode
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 16, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalTimerStart, halTimerSetChannelMode
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 16, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalTimerStart, HalTimerInterruptEnable
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 16, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 16, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        MOV     A,#-0x10
        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 V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        ; Saved register size: 16
        ; Auto size: 0
        MOV     ?V0 + 4,R2
        MOV     ?V0 + 5,R3
        MOV     ?V0 + 6,R4
        MOV     ?V0 + 7,R5
//  335   uint8 hwtimerid;
//  336 
//  337   hwtimerid = halTimerRemap (timerId);
        ; Setup parameters for call to function halTimerRemap
        LCALL   ??halTimerRemap?relay
        MOV     A,R1
        MOV     ?V0 + 0,A
//  338 
//  339   if (halTimerRecord[hwtimerid].configured)
        MOV     B,#0xa
        MUL     AB
        ADD     A,#(halTimerRecord & 0xff)
        MOV     DPL,A
        MOV     A,B
        ADDC    A,#((halTimerRecord >> 8) & 0xff)
        MOV     DPH,A
        MOVX    A,@DPTR
        JZ      ??HalTimerStart_0
//  340   {
//  341     halTimerSetCount (hwtimerid, timePerTick);
        ; Setup parameters for call to function halTimerSetCount
        MOV     R2,?V0 + 4
        MOV     R3,?V0 + 5
        MOV     R4,?V0 + 6
        MOV     R5,?V0 + 7
        LCALL   ??halTimerSetCount?relay
//  342     halTimerSetPrescale (hwtimerid, halTimerRecord[hwtimerid].prescale);
        MOV     A,?V0 + 0
        MOV     B,#0xa
        MUL     AB
        ADD     A,#(halTimerRecord & 0xff)
        MOV     R6,A
        MOV     A,B
        ADDC    A,#((halTimerRecord >> 8) & 0xff)
        MOV     R7,A
        ; Setup parameters for call to function halTimerSetPrescale
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R2,A
        MOV     R1,?V0 + 0
        LCALL   ??halTimerSetPrescale?relay
//  343     halTimerSetOpMode (hwtimerid, halTimerRecord[hwtimerid].opMode);
        ; Setup parameters for call to function halTimerSetOpMode
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R2,A
        MOV     R1,?V0 + 0
        LCALL   ??halTimerSetOpMode?relay
//  344     halTimerSetChannelMode (hwtimerid, halTimerRecord[hwtimerid].channelMode);
        ; Setup parameters for call to function halTimerSetChannelMode
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R2,A
        MOV     R1,?V0 + 0
        LCALL   ??halTimerSetChannelMode?relay
//  345 
//  346     if (hwtimerid == HW_TIMER_3)
        MOV     A,#0x1
        XRL     A,?V0 + 0
        JNZ     ??HalTimerStart_1
//  347     {
//  348       T3CTL |= HAL_TIMER34_START;
        ORL     0xcb,#0x10
        SJMP    ??HalTimerStart_2
//  349     }
//  350     if (hwtimerid == HW_TIMER_4)
??HalTimerStart_1:
        MOV     A,#0x2
        XRL     A,?V0 + 0
        JNZ     ??HalTimerStart_2
//  351     {
//  352       T4CTL |= HAL_TIMER34_START;
        ORL     0xeb,#0x10
//  353     }
//  354     HalTimerInterruptEnable (hwtimerid, halTimerRecord[hwtimerid].channelMode,
//  355                              halTimerRecord[hwtimerid].intEnable);
??HalTimerStart_2:
        ; Setup parameters for call to function HalTimerInterruptEnable
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R3,A
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R2,A
        MOV     R1,?V0 + 0
        LCALL   ??HalTimerInterruptEnable?relay
//  356   }
//  357   else
//  358   {
//  359     return HAL_TIMER_NOT_CONFIGURED;
//  360   }
//  361   return HAL_TIMER_OK;
        MOV     R1,#0x0
        SJMP    ??HalTimerStart_3
??HalTimerStart_0:
        MOV     R1,#0x3
        CFI EndBlock cfiBlock18
??HalTimerStart_3:
        REQUIRE ?Subroutine13
        REQUIRE T3CTL
        REQUIRE T4CTL
        ; // Fall through to label ?Subroutine13
//  362 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine13:
        CFI Block cfiBlock19 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        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)))
        MOV     R7,#0x8
        LJMP    ?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock19
//  363 
//  364 /***************************************************************************************************
//  365  * @fn      HalTimerTick
//  366  *
//  367  * @brief   Check the counter for expired counter.
//  368  *
//  369  * @param   None
//  370  *
//  371  * @return  None
//  372  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  373 void HalTimerTick (void)
HalTimerTick:
        CFI Block cfiBlock20 Using cfiCommon0
        CFI Function HalTimerTick
//  374 {
        FUNCALL HalTimerTick, halProcessTimer1
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalTimerTick, halProcessTimer3
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalTimerTick, halProcessTimer4
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        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
//  375   if (!halTimerRecord[HW_TIMER_1].intEnable)
        MOV     DPTR,#(halTimerRecord + 1)
        MOVX    A,@DPTR
        JNZ     ??HalTimerTick_0
//  376   {
//  377     halProcessTimer1 ();
        ; Setup parameters for call to function halProcessTimer1
        LCALL   ??halProcessTimer1?relay
//  378   }
//  379 
//  380   if (!halTimerRecord[HW_TIMER_3].intEnable)
??HalTimerTick_0:
        MOV     DPTR,#(halTimerRecord + 11)
        MOVX    A,@DPTR
        JNZ     ??HalTimerTick_1
//  381   {
//  382     halProcessTimer3 ();
        ; Setup parameters for call to function halProcessTimer3
        LCALL   ??halProcessTimer3?relay
//  383   }
//  384 
//  385   if (!halTimerRecord[HW_TIMER_4].intEnable)
??HalTimerTick_1:
        MOV     DPTR,#(halTimerRecord + 21)
        MOVX    A,@DPTR
        JNZ     ??HalTimerTick_2
//  386   {
//  387     halProcessTimer4 ();
        ; Setup parameters for call to function halProcessTimer4
        LCALL   ??halProcessTimer4?relay
//  388   }
//  389 }
??HalTimerTick_2:
        LJMP    ?Subroutine12 & 0xFFFF
        CFI EndBlock cfiBlock20
//  390 
//  391 /***************************************************************************************************
//  392  * @fn      HalTimerStop
//  393  *
//  394  * @brief   Stop the Timer Service
//  395  *
//  396  * @param   timerId - ID of the timer
//  397  *
//  398  * @return  Status - OK or Not OK
//  399  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  400 uint8 HalTimerStop (uint8 timerId)
HalTimerStop:
        CFI Block cfiBlock21 Using cfiCommon0
        CFI Function HalTimerStop
//  401 {
        FUNCALL HalTimerStop, halTimerRemap
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalTimerStop, halTimerSetOpMode
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        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
//  402   uint8 hwtimerid;
//  403 
//  404   hwtimerid = halTimerRemap (timerId);
//  405 
//  406   switch (hwtimerid)
        ; Setup parameters for call to function halTimerRemap
        LCALL   ??halTimerRemap?relay
        MOV     A,R1
        LCALL   ?UC_SWITCH_DENSE
`?<Jumptable for HalTimerStop>_0`:
        DATA
        DB        0
        DB        2
        DW        ??HalTimerStop_0
        DW        ??HalTimerStop_1
        DW        ??HalTimerStop_2
        DW        ??HalTimerStop_3
        CODE
//  407   {
//  408     case HW_TIMER_1:
//  409       halTimerSetOpMode(HW_TIMER_1, HAL_TIMER_MODE_STOP);
??HalTimerStop_1:
        ; Setup parameters for call to function halTimerSetOpMode
        MOV     R2,#0x3
        MOV     R1,#0x0
        LCALL   ??halTimerSetOpMode?relay
//  410       break;
//  411     case HW_TIMER_3:
//  412       T3CTL &= ~(HAL_TIMER34_START);
//  413       break;
//  414     case HW_TIMER_4:
//  415       T4CTL &= ~(HAL_TIMER34_START);
//  416       break;
//  417     default:
//  418       return HAL_TIMER_INVALID_ID;
//  419   }
//  420   return HAL_TIMER_OK;
??HalTimerStop_4:
        MOV     R1,#0x0
??HalTimerStop_5:
        LJMP    ?Subroutine12 & 0xFFFF
??HalTimerStop_2:
        ANL     0xcb,#0xef
        SJMP    ??HalTimerStop_4
??HalTimerStop_3:
        ANL     0xeb,#0xef
        SJMP    ??HalTimerStop_4
??HalTimerStop_0:
        MOV     R1,#0x4
        SJMP    ??HalTimerStop_5
        CFI EndBlock cfiBlock21
        REQUIRE T3CTL
        REQUIRE T4CTL
//  421 }
//  422 
//  423 /***************************************************************************************************
//  424  * @fn      halTimerSetCount
//  425  *
//  426  * @brief   Stop the Timer Service
//  427  *
//  428  * @param   hwtimerid - ID of the timer
//  429  *          timerPerTick - Number micro sec per ticks
//  430  *
//  431  * @return  Status - OK or Not OK
//  432  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  433 uint8 halTimerSetCount (uint8 hwtimerid, uint32 timePerTick)
halTimerSetCount:
        CFI Block cfiBlock22 Using cfiCommon0
        CFI Function halTimerSetCount
//  434 {
        MOV     A,#-0x10
        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 V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        ; Saved register size: 16
        ; Auto size: 0
        MOV     ?V0 + 4,R2
        MOV     ?V0 + 5,R3
        MOV     ?V0 + 6,R4
        MOV     ?V0 + 7,R5
//  435   uint16  count;
//  436   uint8   high, low;
//  437 
//  438   /* Load count = ((sec/tick) x clock) / prescale */
//  439   count = (uint16)((timePerTick * halTimerRecord[hwtimerid].clock) / halTimerRecord[hwtimerid].prescaleVal);
        MOV     A,R1
        MOV     B,#0xa
        MUL     AB
        MOV     R2,A
        MOV     R3,B
        ADD     A,#(halTimerRecord & 0xff)
        MOV     R4,A
        MOV     A,R3
        ADDC    A,#((halTimerRecord >> 8) & 0xff)
        MOV     R5,A
        MOV     DPL,R4
        MOV     DPH,R5
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     ?V0 + 0,A
        MOV     ?V0 + 1,#0x0
        MOV     ?V0 + 2,#0x0
        MOV     ?V0 + 3,#0x0
        MOV     R0,#?V0 + 4
        MOV     R1,#?V0 + 0
        LCALL   ?L_MUL
        MOV     DPL,R4
        MOV     DPH,R5
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     ?V0 + 0,A
        MOV     R0,#?V0 + 4
        MOV     R1,#?V0 + 0
        LCALL   ?UL_DIV_MOD
//  440   high = (uint8) (count >> 8);
//  441   low = (uint8) count;
//  442 
//  443   *(halTimerChannel[hwtimerid].TxCCH) = high;
        MOV     A,R2
        ADD     A,#(halTimerChannel & 0xff)
        MOV     R0,A
        MOV     A,R3
        ADDC    A,#((halTimerChannel >> 8) & 0xff)
        MOV     R1,A
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        LCALL   ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_29:
        MOV     A,?V0 + 5
        MOVX    @DPTR,A
//  444   *(halTimerChannel[hwtimerid].TxCCL) = low;
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        LCALL   ?Subroutine8 & 0xFFFF
??CrossCallReturnLabel_31:
        MOV     A,?V0 + 4
        MOVX    @DPTR,A
//  445 
//  446   return HAL_TIMER_OK;
        MOV     R1,#0x0
        LJMP    ?Subroutine13 & 0xFFFF
        CFI EndBlock cfiBlock22
//  447 }
//  448 
//  449 /***************************************************************************************************
//  450  * @fn      halTimerSetPrescale
//  451  *
//  452  * @brief   Stop the Timer Service
//  453  *
//  454  * @param   hwtimerid - ID of the timer
//  455  *          prescale - Prescale of the clock
//  456  *
//  457  * @return  Status - OK or Not OK
//  458  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  459 uint8 halTimerSetPrescale (uint8 hwtimerid, uint8 prescale)
halTimerSetPrescale:
        CFI Block cfiBlock23 Using cfiCommon0
        CFI Function halTimerSetPrescale
//  460 {
        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
//  461   switch (hwtimerid)
        MOV     A,R1
        LCALL   ?UC_SWITCH_DENSE
`?<Jumptable for halTimerSetPrescale>_0`:
        DATA
        DB        0
        DB        2
        DW        ??halTimerSetPrescale_0
        DW        ??halTimerSetPrescale_1
        DW        ??halTimerSetPrescale_2
        DW        ??halTimerSetPrescale_3
        CODE
//  462   {
//  463     case HW_TIMER_1:
//  464       T1CTL &= ~(HAL_TIMER1_16_TC_BITS);
??halTimerSetPrescale_1:
        ANL     0xe4,#0xf3
        MOV     A,0xe4
//  465       T1CTL |= prescale;
        MOV     A,R2
        ORL     A,0xe4
        MOV     0xe4,A
//  466       break;
//  467     case HW_TIMER_3:
//  468       T3CTL &= ~(HAL_TIMER34_8_TC_BITS);
//  469       T3CTL |= prescale;
//  470       break;
//  471     case HW_TIMER_4:
//  472       T4CTL &= ~(HAL_TIMER34_8_TC_BITS);
//  473       T4CTL |= prescale;
//  474       break;
//  475     default:
//  476       return HAL_TIMER_INVALID_ID;
//  477   }
//  478   return HAL_TIMER_OK;
??halTimerSetPrescale_4:
        MOV     R1,#0x0
??halTimerSetPrescale_5:
        LJMP    ?Subroutine12 & 0xFFFF
??halTimerSetPrescale_2:
        ANL     0xcb,#0x1f
        MOV     A,0xcb
        MOV     A,R2
        ORL     A,0xcb
        MOV     0xcb,A
        SJMP    ??halTimerSetPrescale_4
??halTimerSetPrescale_3:
        ANL     0xeb,#0x1f
        MOV     A,0xeb
        MOV     A,R2
        ORL     A,0xeb
        MOV     0xeb,A
        SJMP    ??halTimerSetPrescale_4
??halTimerSetPrescale_0:
        MOV     R1,#0x4
        SJMP    ??halTimerSetPrescale_5
        CFI EndBlock cfiBlock23
        REQUIRE T3CTL
        REQUIRE T1CTL
        REQUIRE T4CTL
//  479 }
//  480 
//  481 /***************************************************************************************************
//  482  * @fn      halTimerSetOpMode
//  483  *
//  484  * @brief   Setup operate modes
//  485  *
//  486  * @param   hwtimerid - ID of the timer
//  487  *          opMode - operation mode of the timer
//  488  *
//  489  * @return  Status - OK or Not OK
//  490  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  491 uint8 halTimerSetOpMode (uint8 hwtimerid, uint8 opMode)
halTimerSetOpMode:
        CFI Block cfiBlock24 Using cfiCommon0
        CFI Function halTimerSetOpMode
//  492 {
        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
//  493   /* Load Waveform Generation Mode */
//  494   switch (opMode)
        MOV     A,R2
        LCALL   ?UC_SWITCH_DENSE
`?<Jumptable for halTimerSetOpMode>_0`:
        DATA
        DB        1
        DB        2
        DW        ??halTimerSetOpMode_0
        DW        ??halTimerSetOpMode_1
        DW        ??halTimerSetOpMode_2
        DW        ??halTimerSetOpMode_3
        CODE
//  495   {
//  496     case HAL_TIMER_MODE_NORMAL:
//  497       switch (hwtimerid)
??halTimerSetOpMode_1:
        MOV     A,R1
        LCALL   ?UC_SWITCH_DENSE
`?<Jumptable for halTimerSetOpMode>_1`:
        DATA
        DB        0
        DB        2
        DW        ??halTimerSetOpMode_4
        DW        ??halTimerSetOpMode_5
        DW        ??halTimerSetOpMode_6
        DW        ??halTimerSetOpMode_7
        CODE
//  498       {
//  499         case HW_TIMER_1:
//  500           T1CTL &= ~(HAL_TIMER1_OPMODE_BITS);
??halTimerSetOpMode_5:
        ANL     0xe4,#0xfc
        MOV     A,0xe4
//  501           T1CTL |= HAL_TIMER1_OPMODE_FREERUN;
        ORL     0xe4,#0x1
//  502           break;
//  503         case HW_TIMER_3:
//  504           T3CTL &= ~(HAL_TIMER34_OPMODE_BITS);
//  505           T3CTL |= HAL_TIMER34_OPMODE_FREERUN;
//  506           break;
//  507         case HW_TIMER_4:
//  508           T4CTL &= ~(HAL_TIMER34_OPMODE_BITS);
//  509           T4CTL |= HAL_TIMER34_OPMODE_FREERUN;
//  510           break;
//  511         default:
//  512           return HAL_TIMER_INVALID_ID;
//  513       }
//  514       break;
//  515 
//  516     case HAL_TIMER_MODE_CTC:
//  517       switch (hwtimerid)
//  518       {
//  519         case HW_TIMER_1:
//  520           T1CTL &= ~(HAL_TIMER1_OPMODE_BITS);
//  521           T1CTL |= HAL_TIMER1_OPMODE_MODULO;
//  522           break;
//  523         case HW_TIMER_3:
//  524           T3CTL &= ~(HAL_TIMER34_OPMODE_BITS);
//  525           T3CTL |= HAL_TIMER34_OPMODE_MODULO;
//  526           break;
//  527         case HW_TIMER_4:
//  528           T4CTL &= ~(HAL_TIMER34_OPMODE_BITS);
//  529           T4CTL |= HAL_TIMER34_OPMODE_MODULO;
//  530           break;
//  531         default:
//  532           return HAL_TIMER_INVALID_ID;
//  533       }
//  534       break;
//  535 
//  536     case HAL_TIMER_MODE_STOP:
//  537       if (hwtimerid == HW_TIMER_1)
//  538       {
//  539         T1CTL &= ~(HAL_TIMER1_OPMODE_BITS);
//  540         T1CTL |= HAL_TIMER1_OPMODE_STOP;
//  541       }
//  542       break;
//  543 
//  544     default:
//  545       return HAL_TIMER_INVALID_OP_MODE;
//  546   }
//  547   return HAL_TIMER_OK;
??halTimerSetOpMode_8:
        MOV     R1,#0x0
??halTimerSetOpMode_9:
        LJMP    ?Subroutine12 & 0xFFFF
??halTimerSetOpMode_6:
        ANL     0xcb,#0xfc
        MOV     A,0xcb
        MOV     0xcb,0xcb
        SJMP    ??halTimerSetOpMode_8
??halTimerSetOpMode_7:
        ANL     0xeb,#0xfc
        MOV     A,0xeb
        MOV     0xeb,0xeb
        SJMP    ??halTimerSetOpMode_8
??halTimerSetOpMode_4:
        MOV     R1,#0x4
        SJMP    ??halTimerSetOpMode_9
??halTimerSetOpMode_2:
        MOV     A,R1
        LCALL   ?UC_SWITCH_DENSE
`?<Jumptable for halTimerSetOpMode>_2`:
        DATA
        DB        0
        DB        2
        DW        ??halTimerSetOpMode_4
        DW        ??halTimerSetOpMode_10
        DW        ??halTimerSetOpMode_11
        DW        ??halTimerSetOpMode_12
        CODE
??halTimerSetOpMode_10:
        ANL     0xe4,#0xfc
        MOV     A,0xe4
        ORL     0xe4,#0x2
        SJMP    ??halTimerSetOpMode_8
??halTimerSetOpMode_11:
        ANL     0xcb,#0xfc
        MOV     A,0xcb
        ORL     0xcb,#0x2
        SJMP    ??halTimerSetOpMode_8
??halTimerSetOpMode_12:
        ANL     0xeb,#0xfc
        MOV     A,0xeb
        ORL     0xeb,#0x2
        SJMP    ??halTimerSetOpMode_8
??halTimerSetOpMode_3:
        MOV     A,R1
        JNZ     ??halTimerSetOpMode_8
        ANL     0xe4,#0xfc
        MOV     A,0xe4
        MOV     0xe4,0xe4
        SJMP    ??halTimerSetOpMode_8
??halTimerSetOpMode_0:
        MOV     R1,#0x6
        SJMP    ??halTimerSetOpMode_9
        CFI EndBlock cfiBlock24
        REQUIRE T3CTL
        REQUIRE T1CTL
        REQUIRE T4CTL
//  548 }
//  549 
//  550 /***************************************************************************************************
//  551  * @fn      halTimerSetChannelMode
//  552  *
//  553  * @brief   Setup channel modes.  Currently, only output compare mode is supported.  Input capture
//  554  *          mode is NOT supported.  Additionally, mapping timer channel inputs/outputs to I/O pins
//  555  *          is NOT supported.
//  556  *
//  557  * @param   hwtimerid - ID of the timer
//  558  *          channelMode - channel mode of the timer
//  559  *
//  560  * @return  Status - OK or Not OK
//  561  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  562 uint8 halTimerSetChannelMode (uint8 hwtimerid, uint8 channelMode)
halTimerSetChannelMode:
        CFI Block cfiBlock25 Using cfiCommon0
        CFI Function halTimerSetChannelMode
//  563 {
        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
//  564   switch (channelMode)
        MOV     A,R2
        LCALL   ?UC_SWITCH_DENSE
`?<Jumptable for halTimerSetChannelMode>_0`:
        DATA
        DB        1
        DB        1
        DW        ??halTimerSetChannelMode_0
        DW        ??halTimerSetChannelMode_1
        DW        ??halTimerSetChannelMode_2
        CODE
//  565   {
//  566     case HAL_TIMER_CH_MODE_OUTPUT_COMPARE:
//  567       *(halTimerChannel[hwtimerid].TxCCTL) &= ~(T134CCTL_CMP_BITS);
??halTimerSetChannelMode_2:
        MOV     A,R1
        MOV     B,#0xa
        MUL     AB
        ADD     A,#(halTimerChannel & 0xff)
        MOV     R0,A
        MOV     A,B
        ADDC    A,#((halTimerChannel >> 8) & 0xff)
        MOV     R1,A
        MOV     DPL,R0
        MOV     DPH,R1
        LCALL   ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_30:
        MOVX    A,@DPTR
        ANL     A,#0xc7
        MOVX    @DPTR,A
//  568       *(halTimerChannel[hwtimerid].TxCCTL) |= (T134CCTL_CMP_OC | T134CCTL_MODE);
        MOV     DPL,R0
        MOV     DPH,R1
        LCALL   ??Subroutine4_0 & 0xFFFF
??CrossCallReturnLabel_20:
        ORL     A,#0x1c
        MOVX    @DPTR,A
//  569       break;
//  570 
//  571     case HAL_TIMER_CH_MODE_INPUT_CAPTURE:       /* Not Supported */
//  572 /*
//  573       *(halTimerChannel[hwtimerid].TxCCTL) &= ~(T134CCTL_CAP_BITS | T134CCTL_MODE);
//  574       *(halTimerChannel[hwtimerid].TxCCTL) |= T134CCTL_CAP_RE;
//  575 */
//  576       break;
//  577 
//  578     default:
//  579       return HAL_TIMER_INVALID_CH_MODE;
//  580   }
//  581   return HAL_TIMER_OK;
??halTimerSetChannelMode_1:
        MOV     R1,#0x0
??halTimerSetChannelMode_3:
        LJMP    ?Subroutine12 & 0xFFFF
??halTimerSetChannelMode_0:
        MOV     R1,#0x5
        SJMP    ??halTimerSetChannelMode_3
        CFI EndBlock cfiBlock25
//  582 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine7:
        CFI Block cfiCond26 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_29
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        CFI Block cfiCond27 Using cfiCommon0
        CFI (cfiCond27) NoFunction
        CFI (cfiCond27) Conditional ??CrossCallReturnLabel_30
        CFI (cfiCond27) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond27) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond27) CFA_SP SP+-5
        CFI Block cfiPicker28 Using cfiCommon1
        CFI (cfiPicker28) NoFunction
        CFI (cfiPicker28) Picker
        MOVX    A,@DPTR
        MOV     R2,A
        INC     DPTR
        MOVX    A,@DPTR
        MOV     DPH,A
        MOV     DPL,R2
        RET
        CFI EndBlock cfiCond26
        CFI EndBlock cfiCond27
        CFI EndBlock cfiPicker28
//  583 
//  584 /***************************************************************************************************
//  585  * @fn      HalTimerInterruptEnable
//  586  *
//  587  * @brief   Setup operate modes
//  588  *
//  589  * @param   hwtimerid - ID of the timer
//  590  *          channelMode - channel mode
//  591  *          enable - TRUE or FALSE
//  592  *
//  593  * @return  Status - OK or Not OK
//  594  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  595 uint8 HalTimerInterruptEnable (uint8 hwtimerid, uint8 channelMode, bool enable)
HalTimerInterruptEnable:
        CFI Block cfiBlock29 Using cfiCommon0
        CFI Function HalTimerInterruptEnable
//  596 {
        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
//  597   switch (channelMode)
        MOV     A,R2
        LCALL   ?UC_SWITCH_SPARSE
`?<Jumptable for HalTimerInterruptEnable>_0`:
        DATA
        DB        1
        DB        1
        DB        2
        DW        ??HalTimerInterruptEnable_0
        DB        1
        DB        4
        DW        ??HalTimerInterruptEnable_1
        DW        ??HalTimerInterruptEnable_2
        CODE
//  598   {
//  599     case HAL_TIMER_CH_MODE_OVERFLOW:
//  600 
//  601       if (enable)
??HalTimerInterruptEnable_1:
        MOV     A,R3
        JZ      ??HalTimerInterruptEnable_3
//  602       {
//  603         *(halTimerChannel[hwtimerid].TxOVF) |= halTimerChannel[hwtimerid].ovfbit;
        LCALL   ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_25:
        MOV     R4,A
        MOV     DPL,R2
        MOV     DPH,R3
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        LCALL   ??Subroutine4_0 & 0xFFFF
??CrossCallReturnLabel_21:
        ORL     A,R4
??HalTimerInterruptEnable_4:
        MOVX    @DPTR,A
//  604       }
//  605       else
//  606       {
//  607         *(halTimerChannel[hwtimerid].TxOVF) &= ~(halTimerChannel[hwtimerid].ovfbit);
//  608       }
//  609       break;
//  610 
//  611     case HAL_TIMER_CH_MODE_OUTPUT_COMPARE:
//  612     case HAL_TIMER_CH_MODE_INPUT_CAPTURE:
//  613 
//  614       if (enable)
//  615       {
//  616         *(halTimerChannel[hwtimerid].TxCCTL) |= T134CCTL_IM;
//  617       }
//  618       else
//  619       {
//  620         *(halTimerChannel[hwtimerid].TxCCTL) &= ~(T134CCTL_IM);
//  621       }
//  622       break;
//  623 
//  624     default:
//  625       return HAL_TIMER_INVALID_CH_MODE;
//  626   }
//  627 
//  628   if (halTimerRecord[hwtimerid].intEnable)
        MOV     A,R1
        MOV     B,#0xa
        MUL     AB
        ADD     A,#((halTimerRecord + 1) & 0xff)
        MOV     DPL,A
        MOV     A,B
        ADDC    A,#(((halTimerRecord + 1) >> 8) & 0xff)
        MOV     DPH,A
        MOVX    A,@DPTR
        JZ      ??HalTimerInterruptEnable_5
//  629   {
//  630     IEN1 |= halTimerChannel[hwtimerid].intbit;
        LCALL   ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_27:
        ORL     A,0xb8
        SJMP    ??HalTimerInterruptEnable_6
//  631   }
??HalTimerInterruptEnable_3:
        LCALL   ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_26:
        CPL     A
        MOV     R4,A
        MOV     DPL,R2
        MOV     DPH,R3
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        LCALL   ??Subroutine4_0 & 0xFFFF
??CrossCallReturnLabel_22:
        ANL     A,R4
        SJMP    ??HalTimerInterruptEnable_4
??HalTimerInterruptEnable_0:
        MOV     A,R3
        JZ      ??HalTimerInterruptEnable_7
        LCALL   ?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_23:
        SETB    0xE0 /* A   */.6
        SJMP    ??HalTimerInterruptEnable_4
??HalTimerInterruptEnable_7:
        LCALL   ?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_24:
        CLR     0xE0 /* A   */.6
        SJMP    ??HalTimerInterruptEnable_4
??HalTimerInterruptEnable_2:
        MOV     R1,#0x5
        SJMP    ??HalTimerInterruptEnable_8
//  632   else
//  633   {
//  634     IEN1 &= ~(halTimerChannel[hwtimerid].intbit);
??HalTimerInterruptEnable_5:
        LCALL   ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_28:
        CPL     A
        ANL     A,0xb8
??HalTimerInterruptEnable_6:
        MOV     0xb8,A
//  635   }
//  636   return HAL_TIMER_OK;
        MOV     R1,#0x0
??HalTimerInterruptEnable_8:
        LJMP    ?Subroutine12 & 0xFFFF
        CFI EndBlock cfiBlock29
        REQUIRE _A_IEN1
//  637 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine6:
        CFI Block cfiCond30 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_27
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond31 Using cfiCommon0
        CFI (cfiCond31) NoFunction
        CFI (cfiCond31) Conditional ??CrossCallReturnLabel_28
        CFI (cfiCond31) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond31) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond31) CFA_SP SP+-5
        CFI Block cfiPicker32 Using cfiCommon1
        CFI (cfiPicker32) NoFunction
        CFI (cfiPicker32) Picker
        MOV     A,R1
        MOV     B,#0xa
        MUL     AB
        ADD     A,#((halTimerChannel + 9) & 0xff)
        MOV     DPL,A
        MOV     A,B
        ADDC    A,#(((halTimerChannel + 9) >> 8) & 0xff)
        MOV     DPH,A
        MOVX    A,@DPTR
        RET
        CFI EndBlock cfiCond30
        CFI EndBlock cfiCond31
        CFI EndBlock cfiPicker32

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine5:
        CFI Block cfiCond33 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_25
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond34 Using cfiCommon0
        CFI (cfiCond34) NoFunction
        CFI (cfiCond34) Conditional ??CrossCallReturnLabel_26
        CFI (cfiCond34) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond34) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond34) CFA_SP SP+-5
        CFI Block cfiPicker35 Using cfiCommon1
        CFI (cfiPicker35) NoFunction
        CFI (cfiPicker35) Picker
        MOV     A,R1
        MOV     B,#0xa
        MUL     AB
        ADD     A,#(halTimerChannel & 0xff)
        MOV     R2,A
        MOV     A,B
        ADDC    A,#((halTimerChannel >> 8) & 0xff)
        MOV     R3,A
        MOV     DPL,R2
        MOV     DPH,R3
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        RET
        CFI EndBlock cfiCond33
        CFI EndBlock cfiCond34
        CFI EndBlock cfiPicker35

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine4:
        CFI Block cfiCond36 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_23
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond37 Using cfiCommon0
        CFI (cfiCond37) NoFunction
        CFI (cfiCond37) Conditional ??CrossCallReturnLabel_24
        CFI (cfiCond37) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond37) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond37) CFA_SP SP+-5
        CFI Block cfiPicker38 Using cfiCommon1
        CFI (cfiPicker38) NoFunction
        CFI (cfiPicker38) Picker
        MOV     A,R1
        MOV     B,#0xa
        MUL     AB
        ADD     A,#(halTimerChannel & 0xff)
        MOV     DPL,A
        MOV     A,B
        ADDC    A,#((halTimerChannel >> 8) & 0xff)
        MOV     DPH,A
        CFI Block cfiCond39 Using cfiCommon0
        CFI (cfiCond39) NoFunction
        CFI (cfiCond39) Conditional ??CrossCallReturnLabel_20
        CFI (cfiCond39) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond39) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond39) CFA_SP SP+-5
        CFI Block cfiCond40 Using cfiCommon0
        CFI (cfiCond40) NoFunction
        CFI (cfiCond40) Conditional ??CrossCallReturnLabel_21
        CFI (cfiCond40) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond40) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond40) CFA_SP SP+-5
        CFI Block cfiCond41 Using cfiCommon0
        CFI (cfiCond41) NoFunction
        CFI (cfiCond41) Conditional ??CrossCallReturnLabel_22
        CFI (cfiCond41) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond41) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond41) CFA_SP SP+-5
??Subroutine4_0:
        LCALL   ?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_37:
        MOVX    A,@DPTR
        RET
        CFI EndBlock cfiCond36
        CFI EndBlock cfiCond37
        CFI EndBlock cfiPicker38
        CFI EndBlock cfiCond39
        CFI EndBlock cfiCond40
        CFI EndBlock cfiCond41
//  638 
//  639 /***************************************************************************************************
//  640  * @fn      halTimerSendCallBack
//  641  *
//  642  * @brief   Send Callback back to the caller
//  643  *
//  644  * @param   timerId - ID of the timer
//  645  *          channel - channel where the interrupt occurs
//  646  *          channelMode - channel mode
//  647  *
//  648  *
//  649  * @return  None
//  650  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  651 void halTimerSendCallBack (uint8 timerId, uint8 channel, uint8 channelMode)
halTimerSendCallBack:
        CFI Block cfiBlock42 Using cfiCommon0
        CFI Function halTimerSendCallBack
//  652 {
        FUNCALL halTimerSendCallBack, halTimerRemap
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 9, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 9, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        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     R6,A
        MOV     A,R2
        MOV     R7,A
        MOV     ?V0 + 0,R3
//  653   uint8 hwtimerid;
//  654 
//  655   hwtimerid = halTimerRemap (timerId);
        ; Setup parameters for call to function halTimerRemap
        LCALL   ??halTimerRemap?relay
        MOV     A,R1
        MOV     R4,A
//  656 
//  657   if (halTimerRecord[hwtimerid].callBackFunc)
        LCALL   ?Subroutine9 & 0xFFFF
??CrossCallReturnLabel_33:
        MOVX    A,@DPTR
        JNZ     ??halTimerSendCallBack_0
        INC     DPTR
        MOVX    A,@DPTR
??halTimerSendCallBack_0:
        JZ      ??halTimerSendCallBack_1
//  658     (halTimerRecord[hwtimerid].callBackFunc) (timerId, channel, channelMode);
        ; Setup parameters for indirect call
        MOV     R3,?V0 + 0
        MOV     A,R7
        MOV     R2,A
        MOV     A,R6
        MOV     R1,A
        MOV     A,R4
        LCALL   ?Subroutine9 & 0xFFFF
??CrossCallReturnLabel_34:
        LCALL   ?Subroutine8 & 0xFFFF
??CrossCallReturnLabel_32:
        LCALL   ?CALL_IND
//  659 }
??halTimerSendCallBack_1:
        MOV     R7,#0x1
        LJMP    ?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock42

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine9:
        CFI Block cfiCond43 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_33
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        CFI Block cfiCond44 Using cfiCommon0
        CFI (cfiCond44) NoFunction
        CFI (cfiCond44) Conditional ??CrossCallReturnLabel_34
        CFI (cfiCond44) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond44) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond44) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond44) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond44) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond44) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond44) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond44) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond44) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond44) CFA_SP SP+0
        CFI (cfiCond44) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiPicker45 Using cfiCommon1
        CFI (cfiPicker45) NoFunction
        CFI (cfiPicker45) Picker
        MOV     B,#0xa
        MUL     AB
        ADD     A,#((halTimerRecord + 8) & 0xff)
        MOV     DPL,A
        MOV     A,B
        ADDC    A,#(((halTimerRecord + 8) >> 8) & 0xff)
        MOV     DPH,A
        RET
        CFI EndBlock cfiCond43
        CFI EndBlock cfiCond44
        CFI EndBlock cfiPicker45

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine8:
        CFI Block cfiCond46 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_31
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        CFI Block cfiCond47 Using cfiCommon0
        CFI (cfiCond47) NoFunction
        CFI (cfiCond47) Conditional ??CrossCallReturnLabel_32
        CFI (cfiCond47) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond47) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond47) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond47) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond47) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond47) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond47) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond47) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond47) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond47) CFA_SP SP+0
        CFI (cfiCond47) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiPicker48 Using cfiCommon1
        CFI (cfiPicker48) NoFunction
        CFI (cfiPicker48) Picker
        LCALL   ?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_38:
        RET
        CFI EndBlock cfiCond46
        CFI EndBlock cfiCond47
        CFI EndBlock cfiPicker48

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine11:
        CFI Block cfiCond49 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_37, ??CrossCallReturnLabel_23
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond50 Using cfiCommon0
        CFI (cfiCond50) NoFunction
        CFI (cfiCond50) Conditional ??CrossCallReturnLabel_37, ??CrossCallReturnLabel_24
        CFI (cfiCond50) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond50) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond50) CFA_SP SP+-5
        CFI Block cfiCond51 Using cfiCommon0
        CFI (cfiCond51) NoFunction
        CFI (cfiCond51) Conditional ??CrossCallReturnLabel_37, ??CrossCallReturnLabel_20
        CFI (cfiCond51) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond51) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond51) CFA_SP SP+-5
        CFI Block cfiCond52 Using cfiCommon0
        CFI (cfiCond52) NoFunction
        CFI (cfiCond52) Conditional ??CrossCallReturnLabel_37, ??CrossCallReturnLabel_21
        CFI (cfiCond52) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond52) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond52) CFA_SP SP+-5
        CFI Block cfiCond53 Using cfiCommon0
        CFI (cfiCond53) NoFunction
        CFI (cfiCond53) Conditional ??CrossCallReturnLabel_37, ??CrossCallReturnLabel_22
        CFI (cfiCond53) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond53) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond53) CFA_SP SP+-5
        CFI Block cfiCond54 Using cfiCommon0
        CFI (cfiCond54) NoFunction
        CFI (cfiCond54) Conditional ??CrossCallReturnLabel_38, ??CrossCallReturnLabel_31
        CFI (cfiCond54) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI (cfiCond54) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI (cfiCond54) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond54) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond54) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond54) V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond54) V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond54) V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond54) V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond54) V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond54) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond54) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond54) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond54) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond54) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond54) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond54) CFA_SP SP+0
        CFI (cfiCond54) CFA_XSP16 add(XSP16, 16)
        CFI Block cfiCond55 Using cfiCommon0
        CFI (cfiCond55) NoFunction
        CFI (cfiCond55) Conditional ??CrossCallReturnLabel_38, ??CrossCallReturnLabel_32
        CFI (cfiCond55) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond55) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond55) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond55) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond55) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond55) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond55) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond55) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond55) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond55) CFA_SP SP+0
        CFI (cfiCond55) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiPicker56 Using cfiCommon1
        CFI (cfiPicker56) NoFunction
        CFI (cfiPicker56) Picker
        MOVX    A,@DPTR
        MOV     R0,A
        INC     DPTR
        MOVX    A,@DPTR
        MOV     DPH,A
        MOV     DPL,R0
        RET
        CFI EndBlock cfiCond49
        CFI EndBlock cfiCond50
        CFI EndBlock cfiCond51
        CFI EndBlock cfiCond52
        CFI EndBlock cfiCond53
        CFI EndBlock cfiCond54
        CFI EndBlock cfiCond55
        CFI EndBlock cfiPicker56
//  660 
//  661 /***************************************************************************************************
//  662  * @fn      halTimerRemap
//  663  *
//  664  * @brief   Maps API HAL_TIMER_ID to HW Timer ID.
//  665  *          HAL_TIMER_0 --> HW Timer 3
//  666  *          HAL_TIMER_2 --> HW Timer 4
//  667  *          HAL_TIMER_3 --> HW Timer 1
//  668  *
//  669  * @param   timerId - ID of the timer
//  670  *
//  671  * @return  HW timer ID
//  672  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  673 uint8 halTimerRemap (uint8 timerId)
halTimerRemap:
        CFI Block cfiBlock57 Using cfiCommon0
        CFI Function halTimerRemap
//  674 {
        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
//  675   switch (timerId)
        MOV     A,R1
        LCALL   ?UC_SWITCH_DENSE
`?<Jumptable for halTimerRemap>_0`:
        DATA
        DB        0
        DB        3
        DW        ??halTimerRemap_0
        DW        ??halTimerRemap_1
        DW        ??halTimerRemap_0
        DW        ??halTimerRemap_2
        DW        ??halTimerRemap_3
        CODE
//  676   {
//  677     case HAL_TIMER_0:
//  678       return HW_TIMER_3;
??halTimerRemap_1:
        MOV     R1,#0x1
        SJMP    ??halTimerRemap_4
//  679     case HAL_TIMER_2:
//  680       return HW_TIMER_4;
??halTimerRemap_2:
        MOV     R1,#0x2
        SJMP    ??halTimerRemap_4
//  681     case HAL_TIMER_3:
//  682       return HW_TIMER_1;
??halTimerRemap_3:
        MOV     R1,#0x0
        SJMP    ??halTimerRemap_4
//  683     default:
//  684       return HW_TIMER_INVALID;
??halTimerRemap_0:
        MOV     R1,#0x3
        CFI EndBlock cfiBlock57
??halTimerRemap_4:
        REQUIRE ?Subroutine12
        ; // Fall through to label ?Subroutine12
//  685   }
//  686 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine12:
        CFI Block cfiBlock58 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        POP     DPH
        CFI CFA_SP SP+-4
        CFI DPH0 SameValue
        POP     DPL
        CFI CFA_SP SP+-3
        CFI DPL0 SameValue
        LJMP    ?BRET
        CFI EndBlock cfiBlock58
//  687 
//  688 /***************************************************************************************************
//  689  * @fn      halProcessTimer1
//  690  *
//  691  * @brief   Processes Timer 1 Events.
//  692  *
//  693  * @param
//  694  *
//  695  * @return
//  696  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  697 void halProcessTimer1 (void)
halProcessTimer1:
        CFI Block cfiBlock59 Using cfiCommon0
        CFI Function halProcessTimer1
//  698 {
        FUNCALL halProcessTimer1, halTimerRemap
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer1, halTimerSendCallBack
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer1, halTimerSendCallBack
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer1, halTimerSendCallBack
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer1, halTimerRemap
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer1, halTimerSendCallBack
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        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
//  699   if (halTimerRecord[halTimerRemap(HAL_TIMER_3)].channelMode == HAL_TIMER_CH_MODE_OUTPUT_COMPARE)
        ; Setup parameters for call to function halTimerRemap
        MOV     R1,#0x3
        LCALL   ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_14:
        JNZ     ??halProcessTimer1_0
//  700   {
//  701     if (T1CTL & T1CTL_CH0IF)
        MOV     A,0xe4
        MOV     C,0xE0 /* A   */.5
        JNC     ??halProcessTimer1_1
//  702     {
//  703       T1CTL &= ~(T1CTL_CH0IF);
        ANL     0xe4,#0xdf
//  704       halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_A, HAL_TIMER_CH_MODE_OUTPUT_COMPARE);
        ; Setup parameters for call to function halTimerSendCallBack
        MOV     R3,#0x2
        MOV     R2,#0x2
        MOV     R1,#0x3
        LCALL   ??halTimerSendCallBack?relay
//  705     }
//  706     if (T1CTL & T1CTL_CH1IF)
??halProcessTimer1_1:
        MOV     A,0xe4
        MOV     C,0xE0 /* A   */.6
        JNC     ??halProcessTimer1_2
//  707     {
//  708       T1CTL &= ~(T1CTL_CH1IF);
        ANL     0xe4,#0xbf
//  709       halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_B, HAL_TIMER_CH_MODE_OUTPUT_COMPARE);
        ; Setup parameters for call to function halTimerSendCallBack
        MOV     R3,#0x2
        MOV     R2,#0x4
        MOV     R1,#0x3
        LCALL   ??halTimerSendCallBack?relay
//  710     }
//  711     if (T1CTL & T1CTL_CH2IF)
??halProcessTimer1_2:
        MOV     A,0xe4
        MOV     C,0xE0 /* A   */.7
        JNC     ??halProcessTimer1_3
//  712     {
//  713       T1CTL &= ~(T1CTL_CH2IF);
        ANL     0xe4,#0x7f
//  714       halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_C, HAL_TIMER_CH_MODE_OUTPUT_COMPARE);
        ; Setup parameters for call to function halTimerSendCallBack
        MOV     R3,#0x2
        MOV     R2,#0x8
        SJMP    ??halProcessTimer1_4
//  715     }
//  716   }
//  717   else if (halTimerRecord[halTimerRemap(HAL_TIMER_3)].channelMode == HAL_TIMER_CH_MODE_OVERFLOW)
??halProcessTimer1_0:
        ; Setup parameters for call to function halTimerRemap
        MOV     R1,#0x3
        LCALL   ?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_17:
        JNZ     ??halProcessTimer1_3
//  718   {
//  719     if (T1CTL & T1CTL_OVFIF)
        MOV     A,0xe4
        MOV     C,0xE0 /* A   */.4
        JNC     ??halProcessTimer1_3
//  720     {
//  721       T1CTL &= ~(T1CTL_OVFIF);
        ANL     0xe4,#0xef
//  722       halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_SINGLE, HAL_TIMER_CH_MODE_OVERFLOW);
        ; Setup parameters for call to function halTimerSendCallBack
        MOV     R3,#0x4
        MOV     R2,#0x1
??halProcessTimer1_4:
        MOV     R1,#0x3
        LCALL   ??halTimerSendCallBack?relay
//  723     }
//  724   }
//  725 }
??halProcessTimer1_3:
        SJMP    ?Subroutine12
        CFI EndBlock cfiBlock59
        REQUIRE T1CTL
//  726 
//  727 /***************************************************************************************************
//  728  * @fn      halProcessTimer3
//  729  *
//  730  * @brief   Processes Timer 3 Events.
//  731  *
//  732  * @param
//  733  *
//  734  * @return
//  735  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  736 void halProcessTimer3 (void)
halProcessTimer3:
        CFI Block cfiBlock60 Using cfiCommon0
        CFI Function halProcessTimer3
//  737 {
        FUNCALL halProcessTimer3, halTimerRemap
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer3, halTimerSendCallBack
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer3, halTimerSendCallBack
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer3, halTimerRemap
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer3, halTimerSendCallBack
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        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
//  738   if (halTimerRecord[halTimerRemap(HAL_TIMER_0)].channelMode == HAL_TIMER_CH_MODE_OUTPUT_COMPARE)
        ; Setup parameters for call to function halTimerRemap
        MOV     R1,#0x0
        LCALL   ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_15:
        JNZ     ??halProcessTimer3_0
//  739   {
//  740     if (TIMIF & TIMIF_T3CH0IF)
        MOV     C,0xd8.1
        JNC     ??halProcessTimer3_1
//  741     {
//  742       TIMIF &= ~(TIMIF_T3CH0IF);
        CLR     0xd8.1
//  743       halTimerSendCallBack (HAL_TIMER_0, HAL_TIMER_CHANNEL_A, HAL_TIMER_CH_MODE_OUTPUT_COMPARE);
        ; Setup parameters for call to function halTimerSendCallBack
        MOV     R3,#0x2
        MOV     R2,#0x2
        MOV     R1,#0x0
        LCALL   ??halTimerSendCallBack?relay
//  744     }
//  745     if (TIMIF & TIMIF_T3CH1IF)
??halProcessTimer3_1:
        MOV     C,0xd8.2
        JNC     ??halProcessTimer3_2
//  746     {
//  747       TIMIF &= ~(TIMIF_T3CH1IF);
        CLR     0xd8.2
//  748       halTimerSendCallBack (HAL_TIMER_0, HAL_TIMER_CHANNEL_B, HAL_TIMER_CH_MODE_OUTPUT_COMPARE);
        ; Setup parameters for call to function halTimerSendCallBack
        MOV     R3,#0x2
        MOV     R2,#0x4
        SJMP    ??halProcessTimer3_3
//  749     }
//  750   }
//  751   else if (halTimerRecord[halTimerRemap(HAL_TIMER_0)].channelMode == HAL_TIMER_CH_MODE_OVERFLOW)
??halProcessTimer3_0:
        ; Setup parameters for call to function halTimerRemap
        MOV     R1,#0x0
        LCALL   ?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_18:
        JNZ     ??halProcessTimer3_2
//  752   {
//  753     if (TIMIF & TIMIF_T3OVFIF)
        MOV     C,0xd8.0
        JNC     ??halProcessTimer3_2
//  754     {
//  755       TIMIF &= ~(TIMIF_T3OVFIF);
        CLR     0xd8.0
//  756       halTimerSendCallBack (HAL_TIMER_0, HAL_TIMER_CHANNEL_SINGLE, HAL_TIMER_CH_MODE_OVERFLOW);
        ; Setup parameters for call to function halTimerSendCallBack
        MOV     R3,#0x4
        MOV     R2,#0x1
??halProcessTimer3_3:
        MOV     R1,#0x0
        LCALL   ??halTimerSendCallBack?relay
//  757     }
//  758   }
//  759 }
??halProcessTimer3_2:
        LJMP    ?Subroutine12 & 0xFFFF
        CFI EndBlock cfiBlock60
        REQUIRE _A_TIMIF

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine3:
        CFI Block cfiCond61 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_17
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond62 Using cfiCommon0
        CFI (cfiCond62) NoFunction
        CFI (cfiCond62) Conditional ??CrossCallReturnLabel_18
        CFI (cfiCond62) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond62) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond62) CFA_SP SP+-5
        CFI Block cfiCond63 Using cfiCommon0
        CFI (cfiCond63) NoFunction
        CFI (cfiCond63) Conditional ??CrossCallReturnLabel_19
        CFI (cfiCond63) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond63) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond63) CFA_SP SP+-5
        CFI Block cfiPicker64 Using cfiCommon1
        CFI (cfiPicker64) NoFunction
        CFI (cfiPicker64) Picker
        LCALL   ?Subroutine10 & 0xFFFF
??CrossCallReturnLabel_35:
        XRL     A,#0x4
        RET
        CFI EndBlock cfiCond61
        CFI EndBlock cfiCond62
        CFI EndBlock cfiCond63
        CFI EndBlock cfiPicker64

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
        CFI Block cfiCond65 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_14
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond66 Using cfiCommon0
        CFI (cfiCond66) NoFunction
        CFI (cfiCond66) Conditional ??CrossCallReturnLabel_15
        CFI (cfiCond66) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond66) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond66) CFA_SP SP+-5
        CFI Block cfiCond67 Using cfiCommon0
        CFI (cfiCond67) NoFunction
        CFI (cfiCond67) Conditional ??CrossCallReturnLabel_16
        CFI (cfiCond67) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond67) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond67) CFA_SP SP+-5
        CFI Block cfiPicker68 Using cfiCommon1
        CFI (cfiPicker68) NoFunction
        CFI (cfiPicker68) Picker
        LCALL   ?Subroutine10 & 0xFFFF
??CrossCallReturnLabel_36:
        XRL     A,#0x2
        RET
        CFI EndBlock cfiCond65
        CFI EndBlock cfiCond66
        CFI EndBlock cfiCond67
        CFI EndBlock cfiPicker68

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine10:
        CFI Block cfiCond69 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_35, ??CrossCallReturnLabel_17
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond70 Using cfiCommon0
        CFI (cfiCond70) NoFunction
        CFI (cfiCond70) Conditional ??CrossCallReturnLabel_35, ??CrossCallReturnLabel_18
        CFI (cfiCond70) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond70) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond70) CFA_SP SP+-5
        CFI Block cfiCond71 Using cfiCommon0
        CFI (cfiCond71) NoFunction
        CFI (cfiCond71) Conditional ??CrossCallReturnLabel_35, ??CrossCallReturnLabel_19
        CFI (cfiCond71) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond71) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond71) CFA_SP SP+-5
        CFI Block cfiCond72 Using cfiCommon0
        CFI (cfiCond72) NoFunction
        CFI (cfiCond72) Conditional ??CrossCallReturnLabel_36, ??CrossCallReturnLabel_14
        CFI (cfiCond72) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond72) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond72) CFA_SP SP+-5
        CFI Block cfiCond73 Using cfiCommon0
        CFI (cfiCond73) NoFunction
        CFI (cfiCond73) Conditional ??CrossCallReturnLabel_36, ??CrossCallReturnLabel_15
        CFI (cfiCond73) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond73) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond73) CFA_SP SP+-5
        CFI Block cfiCond74 Using cfiCommon0
        CFI (cfiCond74) NoFunction
        CFI (cfiCond74) Conditional ??CrossCallReturnLabel_36, ??CrossCallReturnLabel_16
        CFI (cfiCond74) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond74) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond74) CFA_SP SP+-5
        CFI Block cfiPicker75 Using cfiCommon1
        CFI (cfiPicker75) NoFunction
        CFI (cfiPicker75) Picker
        LCALL   ??halTimerRemap?relay
        MOV     A,R1
        MOV     B,#0xa
        MUL     AB
        ADD     A,#((halTimerRecord + 4) & 0xff)
        MOV     DPL,A
        MOV     A,B
        ADDC    A,#(((halTimerRecord + 4) >> 8) & 0xff)
        MOV     DPH,A
        MOVX    A,@DPTR
        RET
        CFI EndBlock cfiCond69
        CFI EndBlock cfiCond70
        CFI EndBlock cfiCond71
        CFI EndBlock cfiCond72
        CFI EndBlock cfiCond73
        CFI EndBlock cfiCond74
        CFI EndBlock cfiPicker75
//  760 
//  761 /***************************************************************************************************
//  762  * @fn      halProcessTimer4
//  763  *
//  764  * @brief   Processes Timer 4 Events.
//  765  *
//  766  * @param
//  767  *
//  768  * @return
//  769  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  770 void halProcessTimer4 (void)
halProcessTimer4:
        CFI Block cfiBlock76 Using cfiCommon0
        CFI Function halProcessTimer4
//  771 {
        FUNCALL halProcessTimer4, halTimerRemap
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer4, halTimerSendCallBack
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer4, halTimerSendCallBack
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer4, halTimerRemap
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL halProcessTimer4, halTimerSendCallBack
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        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
//  772   if (halTimerRecord[halTimerRemap(HAL_TIMER_2)].channelMode == HAL_TIMER_CH_MODE_OUTPUT_COMPARE)
        ; Setup parameters for call to function halTimerRemap
        MOV     R1,#0x2
        LCALL   ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_16:
        JNZ     ??halProcessTimer4_0
//  773   {
//  774     if (TIMIF & TIMIF_T4CH0IF)
        MOV     C,0xd8.4
        JNC     ??halProcessTimer4_1
//  775     {
//  776       TIMIF &= ~(TIMIF_T4CH0IF);
        CLR     0xd8.4
//  777       halTimerSendCallBack (HAL_TIMER_2, HAL_TIMER_CHANNEL_A, HAL_TIMER_CH_MODE_OUTPUT_COMPARE);
        ; Setup parameters for call to function halTimerSendCallBack
        MOV     R3,#0x2
        MOV     R2,#0x2
        MOV     R1,#0x2
        LCALL   ??halTimerSendCallBack?relay
//  778     }
//  779     if (TIMIF & TIMIF_T4CH1IF)
??halProcessTimer4_1:
        MOV     C,0xd8.5
        JNC     ??halProcessTimer4_2
//  780     {
//  781       TIMIF &= ~(TIMIF_T4CH1IF);
        CLR     0xd8.5
//  782       halTimerSendCallBack (HAL_TIMER_2, HAL_TIMER_CHANNEL_B, HAL_TIMER_CH_MODE_OUTPUT_COMPARE);
        ; Setup parameters for call to function halTimerSendCallBack
        MOV     R3,#0x2
        MOV     R2,#0x4
        SJMP    ??halProcessTimer4_3
//  783     }
//  784   }
//  785   else if (halTimerRecord[halTimerRemap(HAL_TIMER_2)].channelMode == HAL_TIMER_CH_MODE_OVERFLOW)
??halProcessTimer4_0:
        ; Setup parameters for call to function halTimerRemap
        MOV     R1,#0x2
        LCALL   ?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_19:
        JNZ     ??halProcessTimer4_2
//  786   if (TIMIF & TIMIF_T4OVFIF)
        MOV     C,0xd8.3
        JNC     ??halProcessTimer4_2
//  787   {
//  788     TIMIF &= ~(TIMIF_T4OVFIF);
        CLR     0xd8.3
//  789     halTimerSendCallBack (HAL_TIMER_2, HAL_TIMER_CHANNEL_SINGLE, HAL_TIMER_CH_MODE_OVERFLOW);
        ; Setup parameters for call to function halTimerSendCallBack
        MOV     R3,#0x4
        MOV     R2,#0x1
??halProcessTimer4_3:
        MOV     R1,#0x2
        LCALL   ??halTimerSendCallBack?relay
//  790   }
//  791 }
??halProcessTimer4_2:
        LJMP    ?Subroutine12 & 0xFFFF
        CFI EndBlock cfiBlock76
        REQUIRE _A_TIMIF
//  792 
//  793 /***************************************************************************************************
//  794  *                                    INTERRUPT SERVICE ROUTINE
//  795  ***************************************************************************************************/
//  796 
//  797 /**************************************************************************************************
//  798  * @fn      halTimer1Isr
//  799  *
//  800  * @brief   Timer 1 ISR
//  801  *
//  802  * @param
//  803  *
//  804  * @return
//  805  **************************************************************************************************/

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  806 HAL_ISR_FUNCTION( halTimer1Isr, T1_VECTOR )
halTimer1Isr:
        CFI Block cfiBlock77 Using cfiCommon1
        CFI Function halTimer1Isr
//  807 {
        FUNCALL halTimer1Isr, halProcessTimer1
        LOCFRAME ISTACK, 15, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 15, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        PUSH    A
        CFI A Frame(CFA_SP, 3)
        CFI CFA_SP SP+-3
        MOV     A,#-0xe
        LCALL   ?INTERRUPT_ENTER_XSP
        CFI B load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI PSW load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI R3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI R1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI R0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI CFA_XSP16 add(XSP16, 14)
        ; Saved register size: 15
        ; Auto size: 0
//  808   halProcessTimer1 ();
        ; Setup parameters for call to function halProcessTimer1
        LCALL   ??halProcessTimer1?relay
        CFI EndBlock cfiBlock77
//  809 }
        REQUIRE ?Subroutine14
        ; // Fall through to label ?Subroutine14

        RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine14:
        CFI Block cfiBlock78 Using cfiCommon1
        CFI NoFunction
        CFI CFA_SP SP+-3
        CFI CFA_XSP16 add(XSP16, 14)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI B load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI A Frame(CFA_SP, 3)
        CFI PSW load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI R1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI R2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI R3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        MOV     R7,#0x1
        LJMP    ?INTERRUPT_LEAVE_XSP
        CFI EndBlock cfiBlock78
//  810 
//  811 /**************************************************************************************************
//  812  * @fn      halTimer3Isr
//  813  *
//  814  * @brief   Timer 3 ISR
//  815  *
//  816  * @param
//  817  *
//  818  * @return
//  819  **************************************************************************************************/

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  820 HAL_ISR_FUNCTION( halTimer3Isr, T3_VECTOR )
halTimer3Isr:
        CFI Block cfiBlock79 Using cfiCommon1
        CFI Function halTimer3Isr
//  821 {
        FUNCALL halTimer3Isr, halProcessTimer3
        LOCFRAME ISTACK, 15, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 15, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        PUSH    A
        CFI A Frame(CFA_SP, 3)
        CFI CFA_SP SP+-3
        MOV     A,#-0xe
        LCALL   ?INTERRUPT_ENTER_XSP
        CFI B load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI PSW load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI R3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI R1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI R0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI CFA_XSP16 add(XSP16, 14)
        ; Saved register size: 15
        ; Auto size: 0
//  822   halProcessTimer3 ();
        ; Setup parameters for call to function halProcessTimer3
        LCALL   ??halProcessTimer3?relay
//  823 }
        SJMP    ?Subroutine14
        CFI EndBlock cfiBlock79
//  824 
//  825 /**************************************************************************************************
//  826  * @fn      halTimer4Isr
//  827  *
//  828  * @brief   Timer 4 ISR
//  829  *
//  830  * @param
//  831  *
//  832  * @return
//  833  **************************************************************************************************/

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  834 HAL_ISR_FUNCTION( halTimer4Isr, T4_VECTOR )
halTimer4Isr:
        CFI Block cfiBlock80 Using cfiCommon1
        CFI Function halTimer4Isr
//  835 {
        FUNCALL halTimer4Isr, halProcessTimer4
        LOCFRAME ISTACK, 15, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 0, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 15, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 0, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        PUSH    A
        CFI A Frame(CFA_SP, 3)
        CFI CFA_SP SP+-3
        MOV     A,#-0xe
        LCALL   ?INTERRUPT_ENTER_XSP
        CFI B load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI PSW load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI R3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI R1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI R0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI CFA_XSP16 add(XSP16, 14)
        ; Saved register size: 15
        ; Auto size: 0
//  836   halProcessTimer4 ();
        ; Setup parameters for call to function halProcessTimer4
        LCALL   ??halProcessTimer4?relay
//  837 }
        SJMP    ?Subroutine14
        CFI EndBlock cfiBlock80

        COMMON INTVEC:CODE:ROOT(0)
        ORG 75
`??halTimer1Isr??INTVEC 75`:
        LJMP       (halTimer1Isr)

        COMMON INTVEC:CODE:ROOT(0)
        ORG 91
`??halTimer3Isr??INTVEC 91`:
        LJMP       (halTimer3Isr)

        COMMON INTVEC:CODE:ROOT(0)
        ORG 99
`??halTimer4Isr??INTVEC 99`:
        LJMP       (halTimer4Isr)

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalTimerInit?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalTimerInit

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalTimerConfig?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalTimerConfig

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalTimerStart?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalTimerStart

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalTimerTick?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalTimerTick

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalTimerStop?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalTimerStop

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??halTimerSetCount?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    halTimerSetCount

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??halTimerSetPrescale?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    halTimerSetPrescale

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??halTimerSetOpMode?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    halTimerSetOpMode

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??halTimerSetChannelMode?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    halTimerSetChannelMode

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalTimerInterruptEnable?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalTimerInterruptEnable

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??halTimerSendCallBack?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    halTimerSendCallBack

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??halTimerRemap?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    halTimerRemap

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??halProcessTimer1?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    halProcessTimer1

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??halProcessTimer3?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    halProcessTimer3

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??halProcessTimer4?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    halProcessTimer4

        END
//  838 
//  839 /***************************************************************************************************
//  840 ***************************************************************************************************/
//  841 
// 
// 1 525 bytes in segment BANKED_CODE
//    90 bytes in segment BANK_RELAYS
//     9 bytes in segment INTVEC
//    39 bytes in segment NEAR_CODE
//    12 bytes in segment SFR_AN
//    60 bytes in segment XDATA_Z
// 
// 1 654 bytes of CODE  memory (+  9 bytes shared)
//     0 bytes of DATA  memory (+ 12 bytes shared)
//    60 bytes of XDATA memory
//
//Errors: none
//Warnings: none
