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

📄 hal_led.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
    191                led = HAL_LED_1;
   \   000055   75..01       MOV     ?V0 + 1,#0x1
    192                leds &= HAL_LED_ALL;
   \   000058   53..0F       ANL     ?V0 + 0,#0xf
    193                sts = HalLedStatusControl.HalLedControlTable;
   \   00005B   75....       MOV     ?V0 + 2,#(??HalLedStatusControl & 0xff)
   \   00005E   75....       MOV     ?V0 + 3,#((??HalLedStatusControl >> 8) & 0xff)
   \   000061   02....       LJMP    ??HalLedBlink_3 & 0xFFFF
    194          
    195                while (leds)
    196                {
    197                  if (leds & led)
   \                     ??HalLedBlink_4:
   \   000064   E5..         MOV     A,?V0 + 1
   \   000066   55..         ANL     A,?V0 + 0
   \   000068   607E         JZ      ??HalLedBlink_5
    198                  {
    199                    /* Store the current state of the led before going to blinking */
    200                    preBlinkState |= (led & HalLedState);
   \   00006A   90....       MOV     DPTR,#??HalLedState
   \   00006D   E0           MOVX    A,@DPTR
   \   00006E   55..         ANL     A,?V0 + 1
   \   000070   FA           MOV     R2,A
   \   000071   90....       MOV     DPTR,#??preBlinkState
   \   000074   E0           MOVX    A,@DPTR
   \   000075   4A           ORL     A,R2
   \   000076   F0           MOVX    @DPTR,A
    201                    
    202                    sts->mode  = HAL_LED_MODE_OFF;                    /* Stop previous blink */
   \   000077   E4           CLR     A
   \   000078   85..82       MOV     DPL,?V0 + 2
   \   00007B   85..83       MOV     DPH,?V0 + 3
   \   00007E   F0           MOVX    @DPTR,A
    203                    sts->time  = period;                              /* Time for one on/off cycle */
   \   00007F   7402         MOV     A,#0x2
   \   000081   12....       LCALL   ?XSTACK_DISP0_8
   \   000084   E0           MOVX    A,@DPTR
   \   000085   F8           MOV     R0,A
   \   000086   A3           INC     DPTR
   \   000087   E0           MOVX    A,@DPTR
   \   000088   F9           MOV     R1,A
   \   000089   85..82       MOV     DPL,?V0 + 2
   \   00008C   85..83       MOV     DPH,?V0 + 3
   \   00008F   A3           INC     DPTR
   \   000090   A3           INC     DPTR
   \   000091   A3           INC     DPTR
   \   000092   E8           MOV     A,R0
   \   000093   F0           MOVX    @DPTR,A
   \   000094   A3           INC     DPTR
   \   000095   E9           MOV     A,R1
   \   000096   F0           MOVX    @DPTR,A
    204                    sts->onPct = percent;                             /* % of cycle LED is on */
   \   000097   85..82       MOV     DPL,?XSP + 0
   \   00009A   85..83       MOV     DPH,?XSP + 1
   \   00009D   12....       LCALL   ?Subroutine6 & 0xFFFF
   \                     ??CrossCallReturnLabel_10:
   \   0000A0   A3           INC     DPTR
   \   0000A1   F0           MOVX    @DPTR,A
    205                    sts->todo  = numBlinks;                           /* Number of blink cycles */
   \   0000A2   7401         MOV     A,#0x1
   \   0000A4   12....       LCALL   ?XSTACK_DISP0_8
   \   0000A7   12....       LCALL   ?Subroutine6 & 0xFFFF
   \                     ??CrossCallReturnLabel_11:
   \   0000AA   F0           MOVX    @DPTR,A
    206                    if (!numBlinks) sts->mode |= HAL_LED_MODE_FLASH;  /* Continuous */
   \   0000AB   7401         MOV     A,#0x1
   \   0000AD   12....       LCALL   ?XSTACK_DISP0_8
   \   0000B0   E0           MOVX    A,@DPTR
   \   0000B1   7009         JNZ     ??HalLedBlink_6
   \   0000B3   7404         MOV     A,#0x4
   \   0000B5   85..82       MOV     DPL,?V0 + 2
   \   0000B8   85..83       MOV     DPH,?V0 + 3
   \   0000BB   F0           MOVX    @DPTR,A
    207                    sts->next = osal_GetSystemClock();                /* Start now */
   \                     ??HalLedBlink_6:
   \   0000BC                ; Setup parameters for call to function osal_GetSystemClock
   \   0000BC   90....       MOV     DPTR,#(osal_GetSystemClock & 0xffff)
   \   0000BF   74..         MOV     A,#((osal_GetSystemClock >> 16) & 0xff)
   \   0000C1   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   0000C4   85..82       MOV     DPL,?V0 + 2
   \   0000C7   85..83       MOV     DPH,?V0 + 3
   \   0000CA   A3           INC     DPTR
   \   0000CB   A3           INC     DPTR
   \   0000CC   A3           INC     DPTR
   \   0000CD   A3           INC     DPTR
   \   0000CE   A3           INC     DPTR
   \   0000CF   EA           MOV     A,R2
   \   0000D0   F0           MOVX    @DPTR,A
   \   0000D1   A3           INC     DPTR
   \   0000D2   EB           MOV     A,R3
   \   0000D3   F0           MOVX    @DPTR,A
   \   0000D4   A3           INC     DPTR
   \   0000D5   EC           MOV     A,R4
   \   0000D6   F0           MOVX    @DPTR,A
   \   0000D7   A3           INC     DPTR
   \   0000D8   ED           MOV     A,R5
   \   0000D9   F0           MOVX    @DPTR,A
    208                    sts->mode |= HAL_LED_MODE_BLINK;                  /* Enable blinking */
   \   0000DA   85..82       MOV     DPL,?V0 + 2
   \   0000DD   85..83       MOV     DPH,?V0 + 3
   \   0000E0   E0           MOVX    A,@DPTR
   \   0000E1   D2E1         SETB    0xE0 /* A   */.1
   \   0000E3   F0           MOVX    @DPTR,A
    209                    leds ^= led;
   \   0000E4   E5..         MOV     A,?V0 + 1
   \   0000E6   62..         XRL     ?V0 + 0,A
    210                  }
    211                  led <<= 1;
   \                     ??HalLedBlink_5:
   \   0000E8   E5..         MOV     A,?V0 + 1
   \   0000EA   C3           CLR     C
   \   0000EB   33           RLC     A
   \   0000EC   F5..         MOV     ?V0 + 1,A
    212                  sts++;
   \   0000EE   E5..         MOV     A,?V0 + 2
   \   0000F0   2409         ADD     A,#0x9
   \   0000F2   F5..         MOV     ?V0 + 2,A
   \   0000F4   E5..         MOV     A,?V0 + 3
   \   0000F6   3400         ADDC    A,#0x0
   \   0000F8   F5..         MOV     ?V0 + 3,A
    213                }
   \                     ??HalLedBlink_3:
   \   0000FA   E5..         MOV     A,?V0 + 0
   \   0000FC   6003         JZ      $+5
   \   0000FE   02....       LJMP    ??HalLedBlink_4 & 0xFFFF
    214                osal_set_event (Hal_TaskID, HAL_LED_BLINK_EVENT);
   \   000101                ; Setup parameters for call to function osal_set_event
   \   000101   7A02         MOV     R2,#0x2
   \   000103   7B00         MOV     R3,#0x0
   \   000105   90....       MOV     DPTR,#Hal_TaskID
   \   000108   E0           MOVX    A,@DPTR
   \   000109   F9           MOV     R1,A
   \   00010A   90....       MOV     DPTR,#(osal_set_event & 0xffff)
   \   00010D   74..         MOV     A,#((osal_set_event >> 16) & 0xff)
   \   00010F   800B         SJMP    ??HalLedBlink_7
    215              }
    216              else
    217              {
    218                HalLedSet (leds, HAL_LED_MODE_ON);                    /* >= 100%, turn on */
   \                     ??HalLedBlink_2:
   \   000111                ; Setup parameters for call to function HalLedSet
   \   000111   7A01         MOV     R2,#0x1
   \   000113   8002         SJMP    ??HalLedBlink_8
    219              }
    220            }
    221            else
    222            {
    223              HalLedSet (leds, HAL_LED_MODE_OFF);                     /* No on time, turn off */
   \                     ??HalLedBlink_0:
   \   000115                ; Setup parameters for call to function HalLedSet
   \   000115   7A00         MOV     R2,#0x0
   \                     ??HalLedBlink_8:
   \   000117   90....       MOV     DPTR,#(HalLedSet & 0xffff)
   \   00011A   74..         MOV     A,#((HalLedSet >> 16) & 0xff)
   \                     ??HalLedBlink_7:
   \   00011C   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    224            }
    225          #elif (HAL_LED == TRUE)
    226            percent = (leds & HalLedState) ? HAL_LED_MODE_OFF : HAL_LED_MODE_ON;
    227            HalLedOnOff (leds, percent);                              /* Toggle */
    228          #endif /* BLINK_LEDS && HAL_LED */
    229          }
   \   00011F   7404         MOV     A,#0x4
   \   000121                REQUIRE ?Subroutine11
   \   000121                ; // Fall through to label ?Subroutine11

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine11:
   \   000000   12....       LCALL   ?DEALLOC_XSTACK8
   \   000003   7F08         MOV     R7,#0x8
   \   000005   02....       LJMP    ?BANKED_LEAVE_XDATA

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine6:
   \   000000   E0           MOVX    A,@DPTR
   \   000001   85..82       MOV     DPL,?V0 + 2
   \   000004   85..83       MOV     DPH,?V0 + 3
   \   000007   A3           INC     DPTR
   \   000008   22           RET
    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           ***************************************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    241          void HalLedUpdate (void)
   \                     HalLedUpdate:
    242          {
   \   000000   74F0         MOV     A,#-0x10
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 16
   \   000005                ; Auto size: 10
   \   000005   74F6         MOV     A,#-0xa
   \   000007   12....       LCALL   ?ALLOC_XSTACK8
    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;
   \   00000A   7404         MOV     A,#0x4
   \   00000C   12....       LCALL   ?XSTACK_DISP0_8
   \   00000F   E4           CLR     A
   \   000010   F0           MOVX    @DPTR,A
   \   000011   A3           INC     DPTR
   \   000012   F0           MOVX    @DPTR,A
    252            led  = HAL_LED_1;
   \   000013   7401         MOV     A,#0x1
   \   000015   85..82       MOV     DPL,?XSP + 0
   \   000018   85..83       MOV     DPH,?XSP + 1
   \   00001B   F0           MOVX    @DPTR,A
    253            leds = HAL_LED_ALL;
   \   00001C   7403         MOV     A,#0x3
   \   00001E   12....       LCALL   ?XSTACK_DISP0_8
   \   000021   740F         MOV     A,#0xf
   \   000023   F0           MOVX    @DPTR,A
    254            sts = HalLedStatusControl.HalLedControlTable;
   \   000024   7401         MOV     A,#0x1
   \   000026   12....       LCALL   ?XSTACK_DISP0_8
   \   000029   74..         MOV     A,#(??HalLedStatusControl & 0xff)
   \   00002B   F0           MOVX    @DPTR,A
   \   00002C   A3           INC     DPTR
   \   00002D   74..         MOV     A,#((??HalLedStatusControl >> 8) & 0xff)
   \   00002F   F0           MOVX    @DPTR,A
    255          
    256            /* Check if sleep is active or not */
    257            if (!HalLedStatusControl.sleepActive)
   \   000030   90....       MOV     DPTR,#(??HalLedStatusControl + 36)
   \   000033   E0           MOVX    A,@DPTR
   \   000034   6003         JZ      $+5
   \   000036   02....       LJMP    ??HalLedUpdate_0 & 0xFFFF
    258            {
    259              while (leds)
    260              {
    261                if (leds & led)
   \                     ??HalLedUpdate_1:
   \   000039   85..82       MOV     DPL,?XSP + 0
   \   00003C   85..83       MOV     DPH,?XSP + 1
   \   00003F   E0           MOVX    A,@DPTR
   \   000040   C0E0         PUSH    A

⌨️ 快捷键说明

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