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

📄 hal_drivers.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 2 页
字号:
//   80 
//   81 }
        SJMP	??Subroutine0_0
        CFI EndBlock cfiBlock0
//   82 
//   83 /**************************************************************************************************
//   84  * @fn      Hal_DriverInit
//   85  *
//   86  * @brief   Initialize HW - These need to be initialized before anyone.
//   87  *
//   88  * @param   task_id - Hal TaskId
//   89  *
//   90  * @return  None
//   91  **************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   92 void HalDriverInit (void)
HalDriverInit:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function HalDriverInit
//   93 {
        FUNCALL HalDriverInit, HalTimerInit
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL HalDriverInit, HalAdcInit
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL HalDriverInit, HalDmaInit
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL HalDriverInit, HalAesInit
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL HalDriverInit, HalLcdInit
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL HalDriverInit, HalLedInit
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        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
//   94   /* TIMER */
//   95   HalTimerInit();
        ; Setup parameters for call to function HalTimerInit
        MOV	DPTR,#(HalTimerInit & 0xffff)
        MOV	A,#((HalTimerInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//   96 
//   97   /* ADC */
//   98 #if (defined HAL_ADC) && (HAL_ADC == TRUE)
//   99   HalAdcInit();
        ; Setup parameters for call to function HalAdcInit
        MOV	DPTR,#(HalAdcInit & 0xffff)
        MOV	A,#((HalAdcInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  100 #endif
//  101 
//  102   /* DMA */
//  103 #if (defined HAL_DMA) && (HAL_DMA == TRUE)
//  104   // Must be called before the init call to any module that uses DMA.
//  105   HalDmaInit();
        ; Setup parameters for call to function HalDmaInit
        MOV	DPTR,#(HalDmaInit & 0xffff)
        MOV	A,#((HalDmaInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  106 #endif
//  107 
//  108   /* AES */
//  109 #if (defined HAL_AES) && (HAL_AES == TRUE)
//  110   HalAesInit();
        ; Setup parameters for call to function HalAesInit
        MOV	DPTR,#(HalAesInit & 0xffff)
        MOV	A,#((HalAesInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  111 #endif
//  112 
//  113   /* LCD */
//  114 #if (defined HAL_LCD) && (HAL_LCD == TRUE)
//  115   HalLcdInit();
        ; Setup parameters for call to function HalLcdInit
        MOV	DPTR,#(HalLcdInit & 0xffff)
        MOV	A,#((HalLcdInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  116 #endif
//  117 
//  118   /* LED */
//  119 #if (defined HAL_LED) && (HAL_LED == TRUE)
//  120   HalLedInit();
        ; Setup parameters for call to function HalLedInit
        MOV	DPTR,#(HalLedInit & 0xffff)
        MOV	A,#((HalLedInit >> 16) & 0xff)
        CFI EndBlock cfiBlock1
        REQUIRE ?Subroutine0
        ; // Fall through to label ?Subroutine0
//  121 #endif
//  122 
//  123   /* UART */
//  124 #if (defined HAL_UART) && (HAL_UART == TRUE)
//  125   HalUARTInit();
//  126 #endif
//  127 
//  128   /* KEY */
//  129 #if (defined HAL_KEY) && (HAL_KEY == TRUE)
//  130   HalKeyInit();
//  131 #endif
//  132 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        LCALL	?BCALL               ; Banked call to: DPTR()
??Subroutine0_0:
        POP	DPH
        CFI CFA_SP SP+-4
        CFI DPH0 SameValue
        POP	DPL
        CFI CFA_SP SP+-3
        CFI DPL0 SameValue
        LJMP	?BRET
        CFI EndBlock cfiBlock2
//  133 
//  134 
//  135 /**************************************************************************************************
//  136  * @fn      Hal_ProcessEvent
//  137  *
//  138  * @brief   Hal Process Event
//  139  *
//  140  * @param   task_id - Hal TaskId
//  141  *          events - events
//  142  *
//  143  * @return  None
//  144  **************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  145 uint16 Hal_ProcessEvent( uint8 task_id, uint16 events )
Hal_ProcessEvent:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function Hal_ProcessEvent
//  146 {
        FUNCALL Hal_ProcessEvent, HalLedUpdate
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL Hal_ProcessEvent, osal_msg_deallocate
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL Hal_ProcessEvent, osal_msg_receive
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        MOV	A,#-0xa
        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 V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        ; Saved register size: 10
        ; Auto size: 0
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//  147   uint8 *msgPtr;
//  148 
//  149   if ( events & SYS_EVENT_MSG )
        MOV	A,#-0x80
        ANL	A,R7
        MOV	R1,A
        CLR	A
        JNZ	??Hal_ProcessEvent_0
        MOV	A,R1
??Hal_ProcessEvent_0:
        JNZ	??Hal_ProcessEvent_1
//  150   {
//  151     msgPtr = osal_msg_receive(Hal_TaskID);
//  152 
//  153     while (msgPtr)
//  154     {
//  155       /* Do something here - for now, just deallocate the msg and move on */
//  156 
//  157       /* De-allocate */
//  158       osal_msg_deallocate( msgPtr );
//  159       /* Next */
//  160       msgPtr = osal_msg_receive( Hal_TaskID );
//  161     }
//  162     return events ^ SYS_EVENT_MSG;
//  163   }
//  164 
//  165   if ( events & HAL_LED_BLINK_EVENT )
        MOV	A,R6
        ANL	A,#0x2
        JZ	??Hal_ProcessEvent_2
//  166   {
//  167 #if (defined (BLINK_LEDS)) && (HAL_LED == TRUE)
//  168     HalLedUpdate();
        ; Setup parameters for call to function HalLedUpdate
        MOV	DPTR,#(HalLedUpdate & 0xffff)
        MOV	A,#((HalLedUpdate >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  169 #endif /* BLINK_LEDS && HAL_LED */
//  170     return events ^ HAL_LED_BLINK_EVENT;
        MOV	A,#0x2
        XRL	A,R6
        MOV	R2,A
        MOV	A,R7
??Hal_ProcessEvent_3:
        MOV	R3,A
        SJMP	??Hal_ProcessEvent_4
//  171   }
??Hal_ProcessEvent_5:
        ; Setup parameters for call to function osal_msg_deallocate
        MOV	DPTR,#(osal_msg_deallocate & 0xffff)
        MOV	A,#((osal_msg_deallocate >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
??Hal_ProcessEvent_1:
        ; Setup parameters for call to function osal_msg_receive
        MOV	DPTR,#Hal_TaskID
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(osal_msg_receive & 0xffff)
        MOV	A,#((osal_msg_receive >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R2
        JNZ	??Hal_ProcessEvent_6
        MOV	A,R3
??Hal_ProcessEvent_6:
        JNZ	??Hal_ProcessEvent_5
        MOV	A,R6
        MOV	R2,A
        MOV	A,#-0x80
        XRL	A,R7
        SJMP	??Hal_ProcessEvent_3
//  172 
//  173   if (events & HAL_KEY_EVENT)
??Hal_ProcessEvent_2:
        MOV	A,R6
        MOV	C,0xE0 /* A   */.0
        JNC	??Hal_ProcessEvent_7
//  174   {
//  175 
//  176 #if (defined HAL_KEY) && (HAL_KEY == TRUE)
//  177     /* Check for keys */
//  178     HalKeyPoll();
//  179 
//  180     /* if interrupt disabled, do next polling */
//  181     if (!Hal_KeyIntEnable)
//  182     {
//  183       osal_start_timerEx( Hal_TaskID, HAL_KEY_EVENT, 100);
//  184     }
//  185 #endif // HAL_KEY
//  186 
//  187     return events ^ HAL_KEY_EVENT;
        MOV	A,#0x1
        XRL	A,R6
        MOV	R2,A
        SJMP	??Hal_ProcessEvent_4
//  188   }
//  189 
//  190 #ifdef POWER_SAVING
//  191   if ( events & HAL_SLEEP_TIMER_EVENT )
//  192   {
//  193     halRestoreSleepLevel();
//  194     return events ^ HAL_SLEEP_TIMER_EVENT;
//  195   }
//  196 #endif
//  197 
//  198   /* Nothing interested, discard the message */
//  199   return 0;
??Hal_ProcessEvent_7:
        MOV	R2,#0x0
        MOV	R3,#0x0
??Hal_ProcessEvent_4:
        MOV	R7,#0x2
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock3
//  200 
//  201 }
//  202 
//  203 /**************************************************************************************************
//  204  * @fn      Hal_ProcessPoll
//  205  *
//  206  * @brief   This routine will be called by OSAL to poll UART, TIMER...
//  207  *
//  208  * @param   task_id - Hal TaskId
//  209  *
//  210  * @return  None
//  211  **************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  212 void Hal_ProcessPoll ()
Hal_ProcessPoll:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function Hal_ProcessPoll
//  213 {
        FUNCALL Hal_ProcessPoll, HalTimerTick
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        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
//  214 
//  215   /* Timer Poll */
//  216   HalTimerTick();
        ; Setup parameters for call to function HalTimerTick
        MOV	DPTR,#(HalTimerTick & 0xffff)
        MOV	A,#((HalTimerTick >> 16) & 0xff)
        SJMP	?Subroutine0
        CFI EndBlock cfiBlock4
//  217 
//  218   /* UART Poll */
//  219 #if (defined HAL_UART) && (HAL_UART == TRUE)
//  220   HalUARTPoll();
//  221 #endif
//  222 
//  223 }

        END
//  224 
//  225 
//  226 /**************************************************************************************************
//  227 **************************************************************************************************/
//  228 
// 
// 175 bytes in segment BANKED_CODE
//   1 byte  in segment XDATA_Z
// 
// 175 bytes of CODE  memory
//   1 byte  of XDATA memory
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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