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

📄 hal_led.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
        CFI ?RET Concat
        CFI ?BRET_EXT SameValue
        CFI ?RET_HIGH Frame(CFA_SP, 2)
        CFI ?RET_LOW Frame(CFA_SP, 1)
        CFI EndCommon cfiCommon1
        
        EXTERN osal_GetSystemClock
        FUNCTION osal_GetSystemClock,0202H
        ARGFRAME XSTACK, 26, STACK
        EXTERN osal_set_event
        FUNCTION osal_set_event,0202H
        ARGFRAME XSTACK, 20, STACK
        EXTERN osal_start_timer
        FUNCTION osal_start_timer,0202H
        ARGFRAME XSTACK, 26, STACK
        EXTERN Hal_TaskID

// C:\Texas Instruments\ZStack-1.4.2-1.1.0\Components\hal\target\CC2430DB\hal_led.c
//    1 /**************************************************************************************************
//    2     Filename:       hal_led.c
//    3     Revised:        $Date: 2007-03-07 16:10:30 -0800 (Wed, 07 Mar 2007) $
//    4     Revision:       $Revision: 13711 $
//    5 
//    6     Description:
//    7 
//    8     This file contains the interface to the HAL LED Service.
//    9 
//   10     Copyright (c) 2006 by Texas Instruments, Inc.
//   11     All Rights Reserved.  Permission to use, reproduce, copy, prepare
//   12     derivative works, modify, distribute, perform, display or sell this
//   13     software and/or its documentation for any purpose is prohibited
//   14     without the express written consent of Texas Instruments, Inc.
//   15 **************************************************************************************************/
//   16 
//   17 /***************************************************************************************************
//   18  *                                             INCLUDES
//   19  ***************************************************************************************************/
//   20 #include "hal_mcu.h"
//   21 #include "hal_defs.h"
//   22 #include "hal_types.h"
//   23 #include "hal_drivers.h"
//   24 #include "hal_led.h"
//   25 #include "osal.h"
//   26 #include "hal_board.h"
//   27 
//   28 /***************************************************************************************************
//   29  *                                             CONSTANTS
//   30  ***************************************************************************************************/
//   31 
//   32 /***************************************************************************************************
//   33  *                                              MACROS
//   34  ***************************************************************************************************/
//   35 
//   36 /***************************************************************************************************
//   37  *                                              TYPEDEFS
//   38  ***************************************************************************************************/
//   39 /* LED control structure */
//   40 typedef struct {
//   41   uint8 mode;       /* Operation mode */
//   42   uint8 todo;       /* Blink cycles left */
//   43   uint8 onPct;      /* On cycle percentage */
//   44   uint16 time;      /* On/off cycle time (msec) */
//   45   uint32 next;      /* Time for next change */
//   46 } HalLedControl_t;
//   47 
//   48 typedef struct
//   49 {
//   50   HalLedControl_t HalLedControlTable[HAL_LED_DEFAULT_MAX_LEDS];
//   51   uint8           sleepActive;
//   52 } HalLedStatus_t;
//   53 
//   54 
//   55 /***************************************************************************************************
//   56  *                                           GLOBAL VARIABLES
//   57  ***************************************************************************************************/
//   58 
//   59 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   60 static uint8 HalLedState;              // LED state at last set/clr/blink update
??HalLedState:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   61 static uint8 HalSleepLedState;         // LED state at last set/clr/blink update
??HalSleepLedState:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   62 static uint8 preBlinkState;            // Original State before going to blink mode
??preBlinkState:
        DS 1
//   63                                        // bit 0, 1, 2, 3 represent led 0, 1, 2, 3
//   64 
//   65 #ifdef BLINK_LEDS

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   66   static HalLedStatus_t HalLedStatusControl;
??HalLedStatusControl:
        DS 37
//   67 #endif
//   68 
//   69 /***************************************************************************************************
//   70  *                                            LOCAL FUNCTION
//   71  ***************************************************************************************************/
//   72 #if (HAL_LED == TRUE)
//   73 void HalLedUpdate (void);
//   74 void HalLedOnOff (uint8 leds, uint8 mode);
//   75 #endif /* HAL_LED */
//   76 
//   77 /***************************************************************************************************
//   78  *                                            FUNCTIONS - API
//   79  ***************************************************************************************************/
//   80 
//   81 /***************************************************************************************************
//   82  * @fn      HalLedInit
//   83  *
//   84  * @brief   Initialize LED Service
//   85  *
//   86  * @param   init - pointer to void that contains the initialized value
//   87  *
//   88  * @return  None
//   89  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   90 void HalLedInit (void)
HalLedInit:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function HalLedInit
//   91 {
        FUNCALL HalLedInit, HalLedSet
        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
//   92 #if (HAL_LED == TRUE)
//   93   /* Initialize all LEDs to OFF */
//   94   HalLedSet (HAL_LED_ALL, HAL_LED_MODE_OFF);
        ; Setup parameters for call to function HalLedSet
        MOV	R2,#0x0
        MOV	R1,#0xf
        MOV	DPTR,#(HalLedSet & 0xffff)
        MOV	A,#((HalLedSet >> 16) & 0xff)
        LJMP	?Subroutine10 & 0xFFFF
        CFI EndBlock cfiBlock0
//   95   /* Initialize sleepActive to FALSE */
//   96   HalLedStatusControl.sleepActive = FALSE;
//   97 #endif /* HAL_LED */
//   98 }
//   99 
//  100 /***************************************************************************************************
//  101  * @fn      HalLedSet
//  102  *
//  103  * @brief   Tun ON/OFF/TOGGLE given LEDs
//  104  *
//  105  * @param   led - bit mask value of leds to be turned ON/OFF/TOGGLE
//  106  *          mode - BLINK, FLASH, TOGGLE, ON, OFF
//  107  * @return  None
//  108  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  109 uint8 HalLedSet (uint8 leds, uint8 mode)
HalLedSet:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function HalLedSet
//  110 {
        FUNCALL HalLedSet, HalLedBlink
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL HalLedSet, HalLedBlink
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL HalLedSet, HalLedOnOff
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        MOV	A,#-0xb
        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 V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        ; Saved register size: 11
        ; Auto size: 0
        MOV	?V0 + 0,R1
        MOV	?V0 + 1,R2
//  111 
//  112 #if (defined (BLINK_LEDS)) && (HAL_LED == TRUE)
//  113   uint8 led;
//  114   HalLedControl_t *sts;
//  115 
//  116   switch (mode)
        MOV	A,R2
        LCALL	?UC_SWITCH_SPARSE
`?<Jumptable for HalLedSet>_0`:
        DB        1
        DB        0
        DB        1
        DW        ??HalLedSet_0
        DB        3
        DB        2
        DW        ??HalLedSet_1
        DB        4
        DW        ??HalLedSet_2
        DB        8
        DW        ??HalLedSet_0
        DW        ??HalLedSet_3
//  117   {
//  118     case HAL_LED_MODE_BLINK:
//  119       /* Default blink, 1 time, D% duty cycle */
//  120       HalLedBlink (leds, 1, HAL_LED_DEFAULT_DUTY_CYCLE, HAL_LED_DEFAULT_FLASH_TIME);
??HalLedSet_1:
        ; Setup parameters for call to function HalLedBlink
        MOV	R4,#-0x18
        MOV	R5,#0x3
        MOV	R3,#0x5
        MOV	R2,#0x1
??HalLedSet_4:
        MOV	DPTR,#(HalLedBlink & 0xffff)
        MOV	A,#((HalLedBlink >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  121       break;
//  122 
//  123     case HAL_LED_MODE_FLASH:
//  124       /* Default flash, N times, D% duty cycle */
//  125       HalLedBlink (leds, HAL_LED_DEFAULT_FLASH_COUNT, HAL_LED_DEFAULT_DUTY_CYCLE, HAL_LED_DEFAULT_FLASH_TIME);
//  126       break;
//  127 
//  128     case HAL_LED_MODE_ON:
//  129     case HAL_LED_MODE_OFF:
//  130     case HAL_LED_MODE_TOGGLE:
//  131 
//  132       led = HAL_LED_1;
//  133       leds &= HAL_LED_ALL;
//  134       sts = HalLedStatusControl.HalLedControlTable;
//  135 
//  136       while (leds)
//  137       {
//  138         if (leds & led)
//  139         {
//  140           if (mode != HAL_LED_MODE_TOGGLE)
//  141           {
//  142             sts->mode = mode;  /* ON or OFF */
//  143           }
//  144           else
//  145           {
//  146             sts->mode ^= HAL_LED_MODE_ON;  /* Toggle */
//  147           }
//  148           HalLedOnOff (led, sts->mode);
//  149           leds ^= led;
//  150         }
//  151         led <<= 1;
//  152         sts++;
//  153       }
//  154       break;
//  155 
//  156     default:
//  157       break;
//  158   }
//  159 
//  160 #elif (HAL_LED == TRUE)
//  161   LedOnOff(leds, mode);
//  162 #endif /* BLINK_LEDS && HAL_LED   */
//  163 
//  164   return ( HalLedState );
??HalLedSet_3:
        MOV	DPTR,#??HalLedState
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	R7,#0x3
        LJMP	?BANKED_LEAVE_XDATA
??HalLedSet_2:
        ; Setup parameters for call to function HalLedBlink
        MOV	R4,#-0x18
        MOV	R5,#0x3
        MOV	R3,#0x5
        MOV	R2,#0x32
        SJMP	??HalLedSet_4
??HalLedSet_0:
        MOV	?V0 + 2,#0x1
        ANL	?V0 + 0,#0xf
        MOV	R6,#(??HalLedStatusControl & 0xff)
        MOV	R7,#((??HalLedStatusControl >> 8) & 0xff)
        SJMP	??HalLedSet_5
??HalLedSet_6:
        MOVX	A,@DPTR
        XRL	A,#0x1
??HalLedSet_7:
        MOVX	@DPTR,A
        ; Setup parameters for call to function HalLedOnOff
        MOVX	A,@DPTR
        MOV	R2,A
        MOV	R1,?V0 + 2
        MOV	DPTR,#(HalLedOnOff & 0xffff)
        MOV	A,#((HalLedOnOff >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,?V0 + 2
        XRL	?V0 + 0,A
??HalLedSet_8:
        MOV	A,?V0 + 2
        CLR	C
        RLC	A
        MOV	?V0 + 2,A
        MOV	A,R6
        ADD	A,#0x9
        MOV	R6,A
        MOV	A,R7
        ADDC	A,#0x0
        MOV	R7,A
??HalLedSet_5:
        MOV	A,?V0 + 0
        JZ	??HalLedSet_3
        MOV	A,?V0 + 2
        ANL	A,?V0 + 0
        JZ	??HalLedSet_8

⌨️ 快捷键说明

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