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

📄 hal_key.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
        XRL	A,#0x1
        JNZ	??HalKeyRead_2
//  368     {
//  369       /* Rev B */
//  370       if ((adc >= 90) && (adc <= 100))
        MOV	A,R2
        CLR	C
        SUBB	A,#0x5a
        MOV	A,R2
        JC	??HalKeyRead_3
        CLR	C
        SUBB	A,#0x65
        JNC	??HalKeyRead_4
//  371       {
//  372          ksave0 |= HAL_KEY_UP;
??HalKeyRead_5:
        MOV	A,R7
        SETB	0xE0 /* A   */.0
??HalKeyRead_6:
        MOV	R7,A
        SJMP	??HalKeyRead_4
//  373       }
//  374       else if ((adc >= 75) && (adc <= 85))
??HalKeyRead_3:
        CLR	C
        SUBB	A,#0x4b
        MOV	A,R2
        JC	??HalKeyRead_7
        CLR	C
        SUBB	A,#0x56
        JNC	??HalKeyRead_4
//  375       {
//  376         ksave0 |= HAL_KEY_RIGHT;
??HalKeyRead_8:
        MOV	A,R7
        SETB	0xE0 /* A   */.1
        SJMP	??HalKeyRead_6
//  377       }
//  378       else if ((adc >= 45) && (adc <= 55))
??HalKeyRead_7:
        CLR	C
        SUBB	A,#0x2d
        JC	??HalKeyRead_9
        MOV	A,R2
        CLR	C
        SUBB	A,#0x38
        JNC	??HalKeyRead_4
//  379       {
//  380         ksave0 |= HAL_KEY_LEFT;
??HalKeyRead_10:
        MOV	A,R7
        SETB	0xE0 /* A   */.3
        SJMP	??HalKeyRead_6
//  381       }
//  382       else if (adc <= 10)
??HalKeyRead_9:
        MOV	A,R2
        CLR	C
        SUBB	A,#0xb
        JNC	??HalKeyRead_4
//  383       {
//  384         ksave0 |= HAL_KEY_DOWN;
        MOV	A,R7
        SETB	0xE0 /* A   */.4
        SJMP	??HalKeyRead_6
//  385       }
//  386       else if ((adc >= 101) && (adc <= 115))
//  387       {
//  388       }
//  389     }
//  390     else
//  391     {
//  392        /* Rev C */
//  393       if ((adc >= 90)  && (adc <= 104))
??HalKeyRead_2:
        MOV	A,R2
        CLR	C
        SUBB	A,#0x5a
        MOV	A,R2
        JC	??HalKeyRead_11
        CLR	C
        SUBB	A,#0x69
        JNC	??HalKeyRead_4
        SJMP	??HalKeyRead_5
//  394       {
//  395          ksave0 |= HAL_KEY_UP;
//  396       }
//  397       else if ((adc >= 75)  && (adc <= 89))
??HalKeyRead_11:
        CLR	C
        SUBB	A,#0x4b
        JNC	??HalKeyRead_8
//  398       {
//  399         ksave0 |= HAL_KEY_RIGHT;
//  400       }
//  401       else if ((adc >= 45)  && (adc <= 56))
        MOV	A,R2
        CLR	C
        SUBB	A,#0x2d
        JC	??HalKeyRead_9
        MOV	A,R2
        CLR	C
        SUBB	A,#0x39
        JC	??HalKeyRead_10
//  402       {
//  403         ksave0 |= HAL_KEY_LEFT;
//  404       }
//  405       else if (adc <= 10)
//  406       {
//  407         ksave0 |= HAL_KEY_DOWN;
//  408       }
//  409       else if ((adc >= 105) && (adc <= 121))
//  410       {
//  411       }
//  412     }
//  413 
//  414   } while (ksave0 != ksave1);
??HalKeyRead_4:
        MOV	A,?V0 + 0
        XRL	A,R7
        JNZ	??HalKeyRead_1
//  415 
//  416   keys |= ksave0;
//  417 
//  418 #endif
//  419 
//  420 #endif /* HAL_KEY */
//  421 
//  422   return keys;
        MOV	A,R7
        ORL	A,R6
        MOV	R1,A
        CFI EndBlock cfiBlock3
        REQUIRE ?Subroutine2
        ; // Fall through to label ?Subroutine2
//  423 
//  424 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        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)))
        MOV	R7,#0x1
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock4
//  425 
//  426 
//  427 /**************************************************************************************************
//  428  * @fn      HalKeyPoll
//  429  *
//  430  * @brief   Called by hal_driver to poll the keys
//  431  *
//  432  * @param   None
//  433  *
//  434  * @return  None
//  435  **************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  436 void HalKeyPoll (void)
HalKeyPoll:
        CFI Block cfiBlock5 Using cfiCommon0
        CFI Function HalKeyPoll
//  437 {
        FUNCALL HalKeyPoll, HalAdcRead
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
//  438 #if (HAL_KEY == TRUE)
//  439 
//  440   uint8 keys = 0;
        MOV	?V0 + 0,#0x0
//  441 
//  442 #if defined (HAL_KEY_JOYSTICK_ENABLE)
//  443   uint8 ksave0 = 0;
        MOV	R6,#0x0
//  444   uint8 ksave1;
//  445   uint8 adc;
//  446 #endif
//  447 
//  448   /*
//  449   *  If interrupts are enabled, get the status of the interrupt-driven keys from 'halSaveIntKey'
//  450   *  which is updated by the key ISR.  If Polling, read these keys directly.
//  451   */
//  452 #if defined (HAL_KEY_SW_6_ENABLE)
//  453   if (!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT))    /* Key is active low */
        MOV	C,0x80.1
        JC	??HalKeyPoll_0
//  454   {
//  455     keys |= HAL_KEY_SW_6;
        MOV	?V0 + 0,#0x20
//  456   }
//  457 #endif
//  458 #if defined (HAL_KEY_SW_5_ENABLE)
//  459   if (HAL_KEY_SW_5_PORT & HAL_KEY_SW_5_BIT)       /* Key is active high */
??HalKeyPoll_0:
        MOV	C,0xa0.0
        JNC	??HalKeyPoll_1
//  460   {
//  461     keys |= HAL_KEY_SW_5;
        MOV	A,?V0 + 0
        SETB	0xE0 /* A   */.2
        MOV	?V0 + 0,A
//  462   }
//  463 #endif
//  464 
//  465 #if defined (HAL_KEY_JOYSTICK_ENABLE)
//  466 /*
//  467 *  The joystick control is encoded as an analog voltage.  Keep on reading
//  468 *  the ADC until two consecutive key decisions are the same.
//  469 */
//  470 
//  471   do
//  472   {
//  473     ksave1 = ksave0;    /* save previouse key reading */
??HalKeyPoll_1:
        MOV	A,R6
        MOV	R7,A
//  474 
//  475     adc = HalAdcRead (HAL_KEY_JOY_CHN, HAL_ADC_RESOLUTION_8);
        ; Setup parameters for call to function HalAdcRead
        MOV	R2,#0x1
        MOV	R1,#0x6
        MOV	DPTR,#(HalAdcRead & 0xffff)
        MOV	A,#((HalAdcRead >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  476 
//  477     if  (CHVER == 0x01)
        MOV	DPTR,#-0x20a0
        MOVX	A,@DPTR
        XRL	A,#0x1
        JNZ	??HalKeyPoll_2
//  478     {
//  479       /* Rev B */
//  480       if ((adc >= 90) && (adc <= 100))
        MOV	A,R2
        CLR	C
        SUBB	A,#0x5a
        MOV	A,R2
        JC	??HalKeyPoll_3
        CLR	C
        SUBB	A,#0x65
        JNC	??HalKeyPoll_4
//  481       {
//  482          ksave0 |= HAL_KEY_UP;
??HalKeyPoll_5:
        MOV	A,R6
        SETB	0xE0 /* A   */.0
??HalKeyPoll_6:
        MOV	R6,A
        SJMP	??HalKeyPoll_4
//  483       }
//  484       else if ((adc >= 75) && (adc <= 85))
??HalKeyPoll_3:
        CLR	C
        SUBB	A,#0x4b
        MOV	A,R2
        JC	??HalKeyPoll_7
        CLR	C
        SUBB	A,#0x56
        JNC	??HalKeyPoll_4
//  485       {
//  486         ksave0 |= HAL_KEY_RIGHT;
??HalKeyPoll_8:
        MOV	A,R6
        SETB	0xE0 /* A   */.1
        SJMP	??HalKeyPoll_6
//  487       }
//  488       else if ((adc >= 45) && (adc <= 55))
??HalKeyPoll_7:
        CLR	C
        SUBB	A,#0x2d
        JC	??HalKeyPoll_9
        MOV	A,R2
        CLR	C
        SUBB	A,#0x38
        JNC	??HalKeyPoll_4
//  489       {
//  490         ksave0 |= HAL_KEY_LEFT;
??HalKeyPoll_10:
        MOV	A,R6
        SETB	0xE0 /* A   */.3
        SJMP	??HalKeyPoll_6
//  491       }
//  492       else if (adc <= 10)
??HalKeyPoll_9:
        MOV	A,R2
        CLR	C
        SUBB	A,#0xb
        JNC	??HalKeyPoll_4
//  493       {
//  494         ksave0 |= HAL_KEY_DOWN;
        MOV	A,R6
        SETB	0xE0 /* A   */.4
        SJMP	??HalKeyPoll_6
//  495       }
//  496       else if ((adc >= 101) && (adc <= 115))
//  497       {
//  498       }
//  499     }
//  500     else
//  501     {
//  502        /* Rev C */
//  503       if ((adc >= 90)  && (adc <= 104))

⌨️ 快捷键说明

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