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

📄 hal_key.s51

📁 cc2430讀取短地址程式
💻 S51
📖 第 1 页 / 共 5 页
字号:
//  510       else if ((adc >= 45)  && (adc <= 56))
        MOV	A,R2
        CLR	C
        SUBB	A,#0x2d
        JC	??HalKeyPoll_9
        MOV	A,R2
        CLR	C
        SUBB	A,#0x39
        JC	??HalKeyPoll_10
//  511       {
//  512         ksave0 |= HAL_KEY_LEFT;
//  513       }
//  514       else if (adc <= 10)
//  515       {
//  516         ksave0 |= HAL_KEY_DOWN;
//  517       }
//  518       else if ((adc >= 105) && (adc <= 121))
//  519       {
//  520       }
//  521     }
//  522 
//  523 
//  524   } while (ksave0 != ksave1);
??HalKeyPoll_4:
        MOV	A,R7
        XRL	A,R6
        JNZ	??HalKeyPoll_1
//  525 
//  526   keys |= ksave0;
        MOV	A,R6
        ORL	?V0 + 0,A
//  527 
//  528 #endif
//  529 
//  530   /* Exit if polling and no keys have changed */
//  531   if (!Hal_KeyIntEnable)
        MOV	DPTR,#Hal_KeyIntEnable
        MOVX	A,@DPTR
        JNZ	??HalKeyPoll_12
//  532   {
//  533     if (keys == halKeySavedKeys)
        MOV	DPTR,#??halKeySavedKeys
        MOVX	A,@DPTR
        XRL	A,?V0 + 0
        JZ	??HalKeyPoll_13
//  534     {
//  535       return;
//  536     }
//  537     halKeySavedKeys = keys;     /* Store the current keys for comparation next time */
        MOV	A,?V0 + 0
        MOVX	@DPTR,A
//  538   }
//  539 
//  540   /* Invoke Callback if new keys were depressed */
//  541   if (keys && (pHalKeyProcessFunction))
??HalKeyPoll_12:
        MOV	A,?V0 + 0
        JZ	??HalKeyPoll_13
        MOV	DPTR,#??pHalKeyProcessFunction
        LCALL	?Subroutine0 & 0xFFFF
??CrossCallReturnLabel_1:
        MOV	R2,#0x0
        MOV	A,R4
        ORL	A,R5
        ORL	A,R6
        JZ	??HalKeyPoll_13
//  542   {
//  543     (pHalKeyProcessFunction) (keys, HAL_KEY_STATE_NORMAL);
        ; Setup parameters for indirect call
        MOV	R1,?V0 + 0
        MOVX	A,@DPTR
        MOV	DPL,R4
        MOV	DPH,R5
        LCALL	?BCALL               ; Banked call to: DPTR()
??HalKeyPoll_13:
        LJMP	?Subroutine2 & 0xFFFF
        CFI EndBlock cfiBlock5
//  544   }
//  545 
//  546 #endif /* HAL_KEY */
//  547 
//  548 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiCond6 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_0
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        CFI Block cfiCond7 Using cfiCommon0
        CFI (cfiCond7) NoFunction
        CFI (cfiCond7) Conditional ??CrossCallReturnLabel_1
        CFI (cfiCond7) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond7) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond7) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond7) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond7) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond7) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond7) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond7) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond7) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond7) CFA_SP SP+0
        CFI (cfiCond7) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiPicker8 Using cfiCommon1
        CFI (cfiPicker8) NoFunction
        CFI (cfiPicker8) Picker
        MOVX	A,@DPTR
        MOV	R4,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R5,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R6,A
        RET
        CFI EndBlock cfiCond6
        CFI EndBlock cfiCond7
        CFI EndBlock cfiPicker8
//  549 
//  550 
//  551 /**************************************************************************************************
//  552  * @fn      halProcessKeyInterrupt
//  553  *
//  554  * @brief   Checks to see if it's a valid key interrupt, saves interrupt driven key states for
//  555  *          processing by HalKeyRead(), and debounces keys by scheduling HalKeyRead() 25ms later.
//  556  *
//  557  * @param
//  558  *
//  559  * @return
//  560  **************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  561 void halProcessKeyInterrupt (void)
halProcessKeyInterrupt:
        CFI Block cfiBlock9 Using cfiCommon0
        CFI Function halProcessKeyInterrupt
//  562 {
        FUNCALL halProcessKeyInterrupt, osal_start_timerEx
        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
//  563 
//  564 #if (HAL_KEY == TRUE)
//  565 
//  566   bool    valid=FALSE;
        MOV	R2,#0x0
//  567 
//  568 #if defined (HAL_KEY_SW_6_ENABLE)
//  569   if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT)      /* Interrupt Flag has been set */
        MOV	A,0x89
        MOV	C,0xE0 /* A   */.1
        JNC	??halProcessKeyInterrupt_0
//  570   {
//  571     HAL_KEY_SW_6_PXIFG = ~(HAL_KEY_SW_6_BIT);    /* Clear Interrupt Flag */
        MOV	0x89,#-0x3
//  572     valid = TRUE;
        INC	R2
//  573   }
//  574 #endif
//  575 
//  576 #if defined (HAL_KEY_SW_5_ENABLE)
//  577   if (HAL_KEY_SW_5_PXIFG & HAL_KEY_SW_5_BIT)      /* Interrupt Flag has been set */
??halProcessKeyInterrupt_0:
        MOV	A,0x89
        MOV	C,0xE0 /* A   */.5
        JNC	??halProcessKeyInterrupt_1
//  578   {
//  579     HAL_KEY_SW_5_PXIFG = ~(HAL_KEY_SW_5_BIT);    /* Clear Interrupt Flag */
        MOV	0x89,#-0x21
//  580     valid = TRUE;
        SJMP	??halProcessKeyInterrupt_2
//  581   }
//  582 #endif
//  583 
//  584   if (valid)
??halProcessKeyInterrupt_1:
        MOV	A,R2
        JZ	??halProcessKeyInterrupt_3
//  585   {
//  586     osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_DEBOUNCE_VALUE);
??halProcessKeyInterrupt_2:
        ; Setup parameters for call to function osal_start_timerEx
        MOV	R4,#0x19
        MOV	R5,#0x0
        MOV	R2,#0x1
        MOV	R3,#0x0
        MOV	DPTR,#Hal_TaskID
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(osal_start_timerEx & 0xffff)
        MOV	A,#((osal_start_timerEx >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  587   }
//  588 #endif /* HAL_KEY */
//  589 }
??halProcessKeyInterrupt_3:
        LJMP	?Subroutine1 & 0xFFFF
        CFI EndBlock cfiBlock9
//  590 
//  591 /**************************************************************************************************
//  592  * @fn      HalKeyEnterSleep
//  593  *
//  594  * @brief  - Get called to enter sleep mode
//  595  *
//  596  * @param
//  597  *
//  598  * @return
//  599  **************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  600 void HalKeyEnterSleep ( void )
HalKeyEnterSleep:
        CFI Block cfiBlock10 Using cfiCommon0
        CFI Function HalKeyEnterSleep
//  601 {
        ; Saved register size: 0
        ; Auto size: 0
//  602   /* Sleep!!! */
//  603 }
        LJMP	?BRET
        CFI EndBlock cfiBlock10
//  604 
//  605 /**************************************************************************************************
//  606  * @fn      HalKeyExitSleep
//  607  *
//  608  * @brief   - Get called when sleep is over
//  609  *
//  610  * @param
//  611  *
//  612  * @return  - return saved keys
//  613  **************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  614 uint8 HalKeyExitSleep ( void )
HalKeyExitSleep:
        CFI Block cfiBlock11 Using cfiCommon0
        CFI Function HalKeyExitSleep
//  615 {
        FUNCALL HalKeyExitSleep, HalKeyRead
        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
//  616   /* Wake up and read keys */
//  617   return ( HalKeyRead () );
        ; Setup parameters for call to function HalKeyRead
        MOV	DPTR,#(HalKeyRead & 0xffff)
        MOV	A,#((HalKeyRead >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        LJMP	?Subroutine1 & 0xFFFF
        CFI EndBlock cfiBlock11
//  618 }
//  619 
//  620 /***************************************************************************************************
//  621  *                                    INTERRUPT SERVICE ROUTINE
//  622  ***************************************************************************************************/
//  623 
//  624 /**************************************************************************************************
//  625  * @fn      halKeyPort0Isr
//  626  *
//  627  * @brief   Port0 ISR
//  628  *
//  629  * @param
//  630  *
//  631  * @return
//  632  **************************************************************************************************/

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  633 HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )
halKeyPort0Isr:
        CFI Block cfiBlock12 Using cfiCommon1
        CFI Function halKeyPort0Isr
//  634 {
        FUNCALL halKeyPort0Isr, halProcessKeyInterrupt
        LOCFRAME ISTACK, 15, STACK
        ARGFRAME ISTACK, 15, STACK
        PUSH	A
        CFI A Frame(CFA_SP, 3)
        CFI CFA_SP SP+-3
        MOV	A,#-0xe
        LCALL	?INTERRUPT_ENTER_XSP
        CFI B load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI PSW load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI R3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI R1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI R0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI CFA_XSP16 add(XSP16, 14)
        ; Saved register size: 15
        ; Auto size: 0
//  635   /* P0IF is cleared by HW for CHVER < REV_E */
//  636 
//  637   halProcessKeyInterrupt();
        ; Setup par

⌨️ 快捷键说明

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