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

📄 hal_key.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 4 页
字号:
    608           *
    609           * @brief   - Get called when sleep is over
    610           *
    611           * @param
    612           *
    613           * @return  - return saved keys
    614           **************************************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    615          uint8 HalKeyExitSleep ( void )
   \                     HalKeyExitSleep:
    616          {
   \   000000                ; Saved register size: 0
   \   000000                ; Auto size: 0
    617            /* Wake up and read keys */
    618            return ( HalKeyRead () );
   \   000000   80..         SJMP    ?Subroutine0
    619          }
    620          
    621          /***************************************************************************************************
    622           *                                    INTERRUPT SERVICE ROUTINE
    623           ***************************************************************************************************/
    624          
    625          /**************************************************************************************************
    626           * @fn      halKeyPort0Isr
    627           *
    628           * @brief   Port0 ISR
    629           *
    630           * @param
    631           *
    632           * @return
    633           **************************************************************************************************/

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    634          HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )
   \                     halKeyPort0Isr:
    635          {
   \   000000   C0E0         PUSH    A
   \   000002   C0D0         PUSH    PSW
   \   000004   C082         PUSH    DPL
   \   000006   C083         PUSH    DPH
   \   000008                ; Saved register size: 4
   \   000008                ; Auto size: 0
    636            /* P0IF is cleared by HW for CHVER < REV_E */
    637          
    638            halProcessKeyInterrupt();
    639          
    640            if( CHVER >= REV_E )
   \   000008   90DF60       MOV     DPTR,#-0x20a0
   \   00000B   E0           MOVX    A,@DPTR
   \   00000C   C3           CLR     C
   \   00000D   9404         SUBB    A,#0x4
   \   00000F   4005         JC      ??halKeyPort0Isr_0
    641            {
    642              /* Make sure that we clear all enabled, but unused P0IFG bits.
    643               * For P0 we can only enable or disable high or low nibble, not bit by
    644               * bit. For P1 and P2 enabling of single bits are possible, therefore
    645               * will not any unused pins generate interrupts on P1 or P2.
    646               * We could have checked for low and high nibble in P0, but this
    647               * isn't necessary as long as we only clear unused pin interrupts.
    648               */
    649              P0IFG = (HAL_KEY_P0INT_LOW_USED | HAL_KEY_POINT_HIGH_USED);
   \   000011   758902       MOV     0x89,#0x2
    650              P0IF = 0;
   \   000014   C2C5         CLR     0xc0.5
    651              CLEAR_SLEEP_MODE();
    652            }
    653          }
   \                     ??halKeyPort0Isr_0:
   \   000016                REQUIRE ?Subroutine1
   \   000016                ; // Fall through to label ?Subroutine1

   \                                 In segment NEAR_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   D083         POP     DPH
   \   000002   D082         POP     DPL
   \   000004   D0D0         POP     PSW
   \   000006   D0E0         POP     A
   \   000008   32           RETI
    654          
    655          /**************************************************************************************************
    656           * @fn      halKeyPort1Isr
    657           *
    658           * @brief   Port1 ISR
    659           *
    660           * @param
    661           *
    662           * @return
    663           **************************************************************************************************/

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    664          HAL_ISR_FUNCTION( halKeyPort1Isr, P1INT_VECTOR )
   \                     halKeyPort1Isr:
    665          {
   \   000000   C0E0         PUSH    A
   \   000002   C0D0         PUSH    PSW
   \   000004   C082         PUSH    DPL
   \   000006   C083         PUSH    DPH
   \   000008                ; Saved register size: 4
   \   000008                ; Auto size: 0
    666            if( CHVER <= REV_D )
   \   000008   90DF60       MOV     DPTR,#-0x20a0
   \   00000B   E0           MOVX    A,@DPTR
   \   00000C   C3           CLR     C
   \   00000D   9404         SUBB    A,#0x4
   \   00000F   5002         JNC     ??halKeyPort1Isr_0
    667            {
    668              P1IF = 0;
   \   000011   C2EB         CLR     0xe8.3
    669            }
    670          
    671            halProcessKeyInterrupt();
    672          
    673            if( CHVER >= REV_E )
   \                     ??halKeyPort1Isr_0:
   \   000013   E0           MOVX    A,@DPTR
   \   000014   C3           CLR     C
   \   000015   9404         SUBB    A,#0x4
   \   000017   4002         JC      ??halKeyPort1Isr_1
    674            {
    675              P1IF = 0;
   \   000019   C2EB         CLR     0xe8.3
    676              CLEAR_SLEEP_MODE();
    677            }
    678          }
   \                     ??halKeyPort1Isr_1:
   \   00001B   80..         SJMP    ?Subroutine1
    679          
    680          /**************************************************************************************************
    681           * @fn      halKeyPort2Isr
    682           *
    683           * @brief   Port2 ISR
    684           *
    685           * @param
    686           *
    687           * @return
    688           **************************************************************************************************/

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    689          HAL_ISR_FUNCTION( halKeyPort2Isr, P2INT_VECTOR )
   \                     halKeyPort2Isr:
    690          {
   \   000000   C0E0         PUSH    A
   \   000002   C0D0         PUSH    PSW
   \   000004   C082         PUSH    DPL
   \   000006   C083         PUSH    DPH
   \   000008                ; Saved register size: 4
   \   000008                ; Auto size: 0
    691            if( CHVER <= REV_D )
   \   000008   90DF60       MOV     DPTR,#-0x20a0
   \   00000B   E0           MOVX    A,@DPTR
   \   00000C   C3           CLR     C
   \   00000D   9404         SUBB    A,#0x4
   \   00000F   5002         JNC     ??halKeyPort2Isr_0
    692            {
    693              P2IF = 0;
   \   000011   C2E8         CLR     0xe8.0
    694            }
    695          
    696            halProcessKeyInterrupt();
    697          
    698            if( CHVER >= REV_E )
   \                     ??halKeyPort2Isr_0:
   \   000013   E0           MOVX    A,@DPTR
   \   000014   C3           CLR     C
   \   000015   9404         SUBB    A,#0x4
   \   000017   4002         JC      ??halKeyPort2Isr_1
    699            {
    700              P2IF = 0;
   \   000019   C2E8         CLR     0xe8.0
    701              CLEAR_SLEEP_MODE();
    702            }
    703          }
   \                     ??halKeyPort2Isr_1:
   \   00001B   80..         SJMP    ?Subroutine1

   \                                 In segment INTVEC, offset 0x33, root
   \                     `halKeyPort2Isr??INTVEC 51`:
   \   000033   02....       LJMP       (halKeyPort2Isr)

   \                                 In segment INTVEC, offset 0x6b, root
   \                     `halKeyPort0Isr??INTVEC 107`:
   \   00006B   02....       LJMP       (halKeyPort0Isr)

   \                                 In segment INTVEC, offset 0x7b, root
   \                     `halKeyPort1Isr??INTVEC 123`:
   \   00007B   02....       LJMP       (halKeyPort1Isr)

   \                                 In segment SFR_AN, at 0xc0
   \   union <unnamed> volatile __sfr _A_IRCON
   \                     _A_IRCON:
   \   000000                DS 1

   \                                 In segment SFR_AN, at 0xe8
   \   union <unnamed> volatile __sfr _A_IRCON2
   \                     _A_IRCON2:
   \   000000                DS 1
    704          
    705          /**************************************************************************************************
    706          **************************************************************************************************/
    707          
    708          
    709          

   Maximum stack usage in bytes:

     Function               ISTACK PSTACK XSTACK
     --------               ------ ------ ------
     HalKeyConfig               0      0      3
     HalKeyEnterSleep           0      0      0
     HalKeyExitSleep            0      0      0
     HalKeyInit                 0      0      0
     HalKeyPoll                 0      0      0
     HalKeyRead                 0      0      0
     halKeyPort0Isr             4      0      0
     halKeyPort1Isr             4      0      0
     halKeyPort2Isr             4      0      0
     halProcessKeyInterrupt     0      0      0


   Segment part sizes:

     Function/Label             Bytes
     --------------             -----
     P0IFG                         1
     Hal_KeyIntEnable              1
     halSaveIntKey                 1
     HalKeyInit                    3
     HalKeyConfig                  3
     HalKeyRead                    0
     ?Subroutine0                  5
     HalKeyPoll                    3
     halProcessKeyInterrupt        3
     HalKeyEnterSleep              3
     HalKeyExitSleep               2
     halKeyPort0Isr               22
     ?Subroutine1                  9
     halKeyPort1Isr               29
     halKeyPort2Isr               29
     halKeyPort2Isr??INTVEC 51     3
     halKeyPort0Isr??INTVEC 107    3
     halKeyPort1Isr??INTVEC 123    3
     _A_IRCON                      1
     _A_IRCON2                     1

 
 22 bytes in segment BANKED_CODE
  9 bytes in segment INTVEC
 89 bytes in segment NEAR_CODE
  3 bytes in segment SFR_AN
  2 bytes in segment XDATA_Z
 
 111 bytes of CODE  memory (+ 9 bytes shared)
   0 bytes of DATA  memory (+ 3 bytes shared)
   2 bytes of XDATA memory

Errors: none
Warnings: 3

⌨️ 快捷键说明

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