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

📄 rf04dev.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 2 页
字号:
        CFI EndBlock cfiBlock0
//   88     }
//   89 }
//   90 
//   91 
//   92 /******************************************************************************
//   93 * @fn  getPotValue
//   94 *
//   95 * @brief 
//   96 *      This function utilizes the 8-bit ADC to obtain a digital value for the
//   97 *      potentiometer resistance.
//   98 *
//   99 * Parameters:
//  100 *
//  101 * @param  void
//  102 *
//  103 * @return UINT8
//  104 *         0xFF
//  105 *         0x00        
//  106 *
//  107 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  108 UINT8 getPotValue( void ){
getPotValue:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function getPotValue
        FUNCALL getPotValue, halAdcSampleSingle
        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
//  109     INT8 adcValue = halAdcSampleSingle(ADC_REF_AVDD, ADC_8_BIT, ADC_INPUT_POT);
        ; Setup parameters for call to function halAdcSampleSingle
        MOV	R3,#0x7
        MOV	R2,#0x0
        MOV	R1,#-0x80
        MOV	DPTR,#(halAdcSampleSingle & 0xffff)
        MOV	A,#((halAdcSampleSingle >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R2
//  110     return (adcValue > 0) ? adcValue : 0;
        CLR	C
        SUBB	A,#0x1
        MOV	C,0xD0 /* PSW */.2
        XRL	A,PSW
        RLC	A
        JC	??getPotValue_0
        MOV	A,R2
        MOV	R1,A
        SJMP	??getPotValue_1
??getPotValue_0:
        MOV	R1,#0x0
        CFI EndBlock cfiBlock1
??getPotValue_1:
        REQUIRE ?Subroutine0
        ; // Fall through to label ?Subroutine0
//  111 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        POP	DPH
        CFI CFA_SP SP+-4
        CFI DPH0 SameValue
        POP	DPL
        CFI CFA_SP SP+-3
        CFI DPL0 SameValue
        LJMP	?BRET
        CFI EndBlock cfiBlock2
//  112 
//  113 
//  114 /******************************************************************************
//  115 * @fn  buttonPushed
//  116 *
//  117 * @brief
//  118 *      This function detects if the button is being pushed. The function
//  119 *      implements software debounce. Return true only if previuosly called
//  120 *      with button not pushed. Return true only once each time the button
//  121 *      is pressed.
//  122 *
//  123 * Parameters:
//  124 *
//  125 * @param  void
//  126 *
//  127 * @return BOOL
//  128 *          TRUE: Button is being pushed
//  129 *          FALSE: Button is not being pushed
//  130 *
//  131 ******************************************************************************/
//  132 #define   BUTTON_ACTIVE_TIMEOUT   10

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  133 BOOL buttonPushed( void ) {
buttonPushed:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function buttonPushed
        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
//  134    UINT8 i;
//  135    BOOL value;
//  136    static BOOL prevValue;
//  137 
//  138    if (value = BUTTON_PRESSED()){
        MOV	C,0x80.1
        CLR	A
        MOV	0xE0 /* A   */.0,C
        CPL	A
        ANL	A,#0x1
        MOV	R1,A
        JZ	??buttonPushed_0
//  139       for(i = 0;i < BUTTON_ACTIVE_TIMEOUT; i++){
        MOV	R2,#0x0
//  140          if(!BUTTON_PRESSED()){
??buttonPushed_1:
        MOV	C,0x80.1
        JNC	??buttonPushed_2
//  141             value = FALSE;
        MOV	R1,#0x0
//  142             break;
//  143          }
//  144       }
//  145    }
//  146 
//  147    if(value){
//  148       if (!prevValue){
//  149          value = prevValue = TRUE;
//  150       }
//  151       else{
//  152          value = FALSE;
//  153       }
//  154    }
//  155    else{
//  156       prevValue = FALSE;
??buttonPushed_0:
        CLR	A
        MOV	DPTR,#??prevValue
        MOVX	@DPTR,A
//  157    }
//  158    return value;
??buttonPushed_3:
        SJMP	?Subroutine0
??buttonPushed_2:
        INC	R2
        MOV	A,R2
        CLR	C
        SUBB	A,#0xa
        JC	??buttonPushed_1
        MOV	DPTR,#??prevValue
        MOVX	A,@DPTR
        JNZ	??buttonPushed_4
        MOV	A,#0x1
        MOVX	@DPTR,A
        MOV	R1,A
        SJMP	??buttonPushed_3
??buttonPushed_4:
        MOV	R1,#0x0
        SJMP	??buttonPushed_3
        CFI EndBlock cfiBlock3
//  159 }

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
??prevValue:
        DS 1
//  160 
//  161 
//  162 /******************************************************************************
//  163 * @fn  joystickPushed
//  164 *
//  165 * @brief
//  166 *      This function detects if the joystick is being pushed. The function
//  167 *      implements software debounce. Return true only if previuosly called
//  168 *      with joystick not pushed. Return true only once each time the joystick
//  169 *      is pressed.
//  170 *
//  171 * Parameters:
//  172 *
//  173 * @param  void
//  174 *
//  175 * @return BOOL
//  176 *          TRUE: Button is being pushed
//  177 *          FALSE: Button is not being pushed
//  178 *
//  179 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  180 BOOL joystickPushed( void ) {
joystickPushed:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function joystickPushed
        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
//  181    UINT8 i;
//  182    BOOL value;
//  183    static BOOL prevValue;
//  184 
//  185    if (value = JOYSTICK_PRESSED()){
        MOV	C,0x80.5
        CLR	A
        MOV	0xE0 /* A   */.0,C
        MOV	R1,A
        JZ	??joystickPushed_0
//  186       for(i = 0;i < BUTTON_ACTIVE_TIMEOUT; i++){
        MOV	R2,#0x0
//  187          if(!JOYSTICK_PRESSED()){
??joystickPushed_1:
        MOV	C,0x80.5
        JC	??joystickPushed_2
//  188             value = FALSE;
        MOV	R1,#0x0
//  189             break;
//  190          }
//  191       }
//  192    }
//  193 
//  194    if(value){
//  195       if (!prevValue){
//  196          value = prevValue = TRUE;
//  197       }
//  198       else{
//  199          value = FALSE;
//  200       }
//  201    }
//  202    else{
//  203       prevValue = FALSE;
??joystickPushed_0:
        CLR	A
        MOV	DPTR,#??prevValue_1
        MOVX	@DPTR,A
//  204    }
//  205 
//  206    return value;
??joystickPushed_3:
        SJMP	?Subroutine0
??joystickPushed_2:
        INC	R2
        MOV	A,R2
        CLR	C
        SUBB	A,#0xa
        JC	??joystickPushed_1
        MOV	DPTR,#??prevValue_1
        MOVX	A,@DPTR
        JNZ	??joystickPushed_4
        MOV	A,#0x1
        MOVX	@DPTR,A
        MOV	R1,A
        SJMP	??joystickPushed_3
??joystickPushed_4:
        MOV	R1,#0x0
        SJMP	??joystickPushed_3
        CFI EndBlock cfiBlock4
//  207 }

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
??prevValue_1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,080H
// union <unnamed> volatile __sfr _A_P0
_A_P0:
        DS 1

        END
//  208 
//  209 #ifdef CC2430DB
//  210 /******************************************************************************
//  211 * @fn  getLdrValue
//  212 *
//  213 * @brief
//  214 *      Returns a value indicating the illumination of the light dependent 
//  215 *      resistor (LDR). Values range from 0xFF (255) for saturated sensor
//  216 *      (resistor value around 5 kOhm), to 0 for dark sensor (resistor value 
//  217 *      around 20MOhm).
//  218 *
//  219 * Parameters:
//  220 *
//  221 * @param  void
//  222 *
//  223 * @return UINT8
//  224 *         0xFF (255)  maximum illumination (saturated sensor)
//  225 *         0x00        dark sensor
//  226 *
//  227 ******************************************************************************/
//  228 UINT8 getLdrValue( void ){
//  229    INT8 adcValue = halAdcSampleSingle(ADC_REF_AVDD, ADC_8_BIT, ADC_INPUT_LDR);
//  230 
//  231    adcValue = (adcValue > 0) ? adcValue : 0;
//  232    // max 8 bit value from ADC is 0x7F (127)
//  233    adcValue *= 2;
//  234 
//  235    return 255 - adcValue;
//  236 }
//  237 
//  238 /******************************************************************************
//  239 * @fn  getXacceleration
//  240 *
//  241 * @brief
//  242 *      This function returns the value of the current acceleration of the of
//  243 *      accelerometer in the x-axis.
//  244 *
//  245 * Parameters:
//  246 *
//  247 * @param  void
//  248 *
//  249 * @return UINT8
//  250 *         0xFF (255)	+18g (theoretical value)
//  251 *	  0x7F (127)      0g no acceleration
//  252 *         0x00          -18g (theoretical value) 
//  253 *
//  254 * Wait 20 ms after VCC is turned on before calling this function.
//  255 ******************************************************************************/
//  256 UINT8 getXacceleration( void ){
//  257    INT8 adcValue = halAdcSampleSingle(ADC_REF_AVDD, ADC_8_BIT, ADC_INPUT_ACC_X);
//  258    return (adcValue > 0) ? adcValue : 0;
//  259 }
//  260 
//  261 /******************************************************************************
//  262 * @fn  getYacceleration
//  263 *
//  264 * @brief
//  265 *      This function returns the value of the current acceleration of the of
//  266 *      accelerometer in the y-axis.
//  267 *
//  268 * Parameters:
//  269 *
//  270 * @param  void
//  271 *
//  272 * @return UINT8
//  273 *         0xFF (255)	+18g (theoretical value)
//  274 *	  0x7F (127)      0g no acceleration
//  275 *         0x00          -18g (theoretical value) 
//  276 *
//  277 * Wait 20 ms after VCC is turned on before calling this function.
//  278 ******************************************************************************/
//  279 UINT8 getYacceleration( void ){
//  280    INT8 adcValue = halAdcSampleSingle(ADC_REF_AVDD, ADC_8_BIT, ADC_INPUT_ACC_Y);
//  281    return (adcValue > 0) ? adcValue : 0;
//  282 }
//  283 #endif
// 
// 298 bytes in segment BANKED_CODE
//   1 byte  in segment SFR_AN
//   2 bytes in segment XDATA_Z
// 
// 298 bytes of CODE  memory
//   0 bytes of DATA  memory (+ 1 byte shared)
//   2 bytes of XDATA memory
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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