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

📄 hal_led.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 20)
        CFI Block cfiCond5 Using cfiCommon0
        CFI (cfiCond5) NoFunction
        CFI (cfiCond5) Conditional ??CrossCallReturnLabel_11
        CFI (cfiCond5) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI (cfiCond5) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI (cfiCond5) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond5) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond5) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond5) V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond5) V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond5) V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond5) V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond5) V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond5) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond5) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond5) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond5) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond5) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond5) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond5) CFA_SP SP+0
        CFI (cfiCond5) CFA_XSP16 add(XSP16, 20)
        CFI Block cfiPicker6 Using cfiCommon1
        CFI (cfiPicker6) NoFunction
        CFI (cfiPicker6) Picker
        MOVX	A,@DPTR
        MOV	DPL,?V0 + 2
        MOV	DPH,?V0 + 3
        INC	DPTR
        RET
        CFI EndBlock cfiCond4
        CFI EndBlock cfiCond5
        CFI EndBlock cfiPicker6
//  230 
//  231 #if (HAL_LED == TRUE)
//  232 /***************************************************************************************************
//  233  * @fn      HalLedUpdate
//  234  *
//  235  * @brief   Update leds to work with blink
//  236  *
//  237  * @param   none
//  238  *
//  239  * @return  none
//  240  ***************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  241 void HalLedUpdate (void)
HalLedUpdate:
        CFI Block cfiBlock7 Using cfiCommon0
        CFI Function HalLedUpdate
//  242 {
        FUNCALL HalLedUpdate, osal_GetSystemClock
        LOCFRAME XSTACK, 26, STACK
        ARGFRAME XSTACK, 26, STACK
        FUNCALL HalLedUpdate, HalLedOnOff
        LOCFRAME XSTACK, 26, STACK
        ARGFRAME XSTACK, 26, STACK
        FUNCALL HalLedUpdate, HalLedOnOff
        LOCFRAME XSTACK, 26, STACK
        ARGFRAME XSTACK, 26, STACK
        FUNCALL HalLedUpdate, HalLedSet
        LOCFRAME XSTACK, 26, STACK
        ARGFRAME XSTACK, 26, STACK
        FUNCALL HalLedUpdate, osal_start_timer
        LOCFRAME XSTACK, 26, STACK
        ARGFRAME XSTACK, 26, STACK
        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: 10
        MOV	A,#-0xa
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 26)
//  243   uint8 led;
//  244   uint8 pct;
//  245   uint8 leds;
//  246   HalLedControl_t *sts;
//  247   uint32 time;
//  248   uint16 next;
//  249   uint16 wait;
//  250 
//  251   next = 0;
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        CLR	A
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  252   led  = HAL_LED_1;
        MOV	A,#0x1
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	@DPTR,A
//  253   leds = HAL_LED_ALL;
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0xf
        MOVX	@DPTR,A
//  254   sts = HalLedStatusControl.HalLedControlTable;
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOV	A,#(??HalLedStatusControl & 0xff)
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,#((??HalLedStatusControl >> 8) & 0xff)
        MOVX	@DPTR,A
//  255 
//  256   /* Check if sleep is active or not */
//  257   if (!HalLedStatusControl.sleepActive)
        MOV	DPTR,#(??HalLedStatusControl + 36)
        MOVX	A,@DPTR
        JZ	$+5
        LJMP	??HalLedUpdate_0 & 0xFFFF
//  258   {
//  259     while (leds)
//  260     {
//  261       if (leds & led)
??HalLedUpdate_1:
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOV	R2,A
        MOVX	A,@DPTR
        ANL	A,R2
        JNZ	$+5
        LJMP	??HalLedUpdate_2 & 0xFFFF
//  262       {
//  263         if (sts->mode & HAL_LED_MODE_BLINK)
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_5:
        JC	$+5
        LJMP	??HalLedUpdate_3 & 0xFFFF
//  264         {
//  265           time = osal_GetSystemClock();
        ; Setup parameters for call to function osal_GetSystemClock
        MOV	DPTR,#(osal_GetSystemClock & 0xffff)
        MOV	A,#((osal_GetSystemClock >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 0,R2
        MOV	?V0 + 1,R3
        MOV	?V0 + 2,R4
        MOV	?V0 + 3,R5
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_TO_X
//  266           if (time >= sts->next)
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        PUSH	DPL
        CFI CFA_SP SP+-1
        PUSH	DPH
        CFI CFA_SP SP+-2
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_0:
        LCALL	?L_MOV_X
        POP	DPH
        CFI CFA_SP SP+-1
        POP	DPL
        CFI CFA_SP SP+0
        MOV	R0,#?V0 + 0
        LCALL	?UL_GT_X
        JNC	$+5
        LJMP	??HalLedUpdate_4 & 0xFFFF
//  267           {
//  268             if (sts->mode & HAL_LED_MODE_ON)
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_7:
        MOV	C,0xE0 /* A   */.0
        MOV	A,#0x1
        JNC	??HalLedUpdate_5
//  269             {
//  270               pct = 100 - sts->onPct;               /* Percentage of cycle for off */
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_12:
        MOV	R2,A
        MOV	A,#0x64
        CLR	C
        SUBB	A,R2
        MOV	?V0 + 4,A
//  271               sts->mode &= ~HAL_LED_MODE_ON;        /* Say it's not on */
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	??Subroutine8_0 & 0xFFFF
??CrossCallReturnLabel_14:
        CLR	0xE0 /* A   */.0
        MOVX	@DPTR,A
//  272               HalLedOnOff (led, HAL_LED_MODE_OFF);  /* Turn it off */
        ; Setup parameters for call to function HalLedOnOff
        MOV	R2,#0x0
        LCALL	?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_2:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  273 
//  274               if (!(sts->mode & HAL_LED_MODE_FLASH))
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_8:
        MOV	C,0xE0 /* A   */.2
        JC	??HalLedUpdate_6
//  275               {
//  276                 sts->todo--;                        /* Not continuous, reduce count */
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        ADD	A,#0x1
        INC	R0
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPL,R0
        MOV	DPH,R1
        MOVX	A,@DPTR
        DEC	A
        MOVX	@DPTR,A
//  277                 if (!sts->todo)
        JNZ	??HalLedUpdate_6
//  278                 {
//  279                   sts->mode ^= HAL_LED_MODE_BLINK;  /* No more blinks */
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_9:
        XRL	A,#0x2
        MOVX	@DPTR,A
        SJMP	??HalLedUpdate_6
//  280                 }
//  281               }
//  282             }
//  283             else
//  284             {
//  285               pct = sts->onPct;                     /* Percentage of cycle for on */
??HalLedUpdate_5:
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_13:
        MOV	?V0 + 4,A
//  286               sts->mode |= HAL_LED_MODE_ON;         /* Say it's on */
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	??Subroutine8_0 & 0xFFFF
??CrossCallReturnLabel_15:
        SETB	0xE0 /* A   */.0
        MOVX	@DPTR,A
//  287               HalLedOnOff (led, HAL_LED_MODE_ON);   /* Turn it on */
        ; Setup parameters for call to function HalLedOnOff
        MOV	R2,#0x1
        LCALL	?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_3:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  288             }
//  289 
//  290             if (sts->mode & HAL_LED_MODE_BLINK)
??HalLedUpdate_6:
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_6:
        JNC	??HalLedUpdate_7
//  291             {
//  292               wait = (((uint32)pct * (uint32)sts->time) / 100);
        MOV	?V0 + 5,#0x0
        MOV	?V0 + 6,#0x0
        MOV	?V0 + 7,#0x0
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine9 & 0xFFFF
??CrossCallReturnLabel_18:
        MOVX	A,@DPTR
        MOV	?V0 + 0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	?V0 + 1,A
        MOV	?V0 + 2,#0x0
        MOV	?V0 + 3,#0x0
        MOV	R0,#?V0 + 4
        MOV	R1,#?V0 + 0
        LCALL	?L_MUL
        MOV	DPTR,#__Constant_64
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	R0,#?V0 + 4
        MOV	R1,#?V0 + 0
        LCALL	?UL_DIV_MOD
        MOV	R6,?V0 + 4
        MOV	R7,?V0 + 5
//  293               sts->next = time + wait;
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        MOV	?V0 + 0,R6
        MOV	?V0 + 1,R7
        MOV	?V0 + 2,#0x0
        MOV	?V0 + 3,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?L_ADD_X
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        LCALL	?Subroutine2 & 0xFFFF

⌨️ 快捷键说明

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