📄 hal_led.s51
字号:
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 + -