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

📄 internalvoltagem.nc

📁 无线通信的主要编程软件,是无线通信工作人员的必备工具,关天相关教程我会在后续传上.
💻 NC
字号:
/* * Copyright (c) 2004, Technische Universitaet Berlin * All rights reserved. * * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions  * are met: * - Redistributions of source code must retain the above copyright notice, *   this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright  *   notice, this list of conditions and the following disclaimer in the  *   documentation and/or other materials provided with the distribution. * - Neither the name of the Technische Universitaet Berlin nor the names  *   of its contributors may be used to endorse or promote products derived *   from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - Revision ------------------------------------------------------------- * $Revision: 1.4 $ * $Date: 2005/10/26 19:47:42 $ * @author Jan Hauer <hauer@tkn.tu-berlin.de> * ======================================================================== */includes ADCHIL;module InternalVoltageM {  provides {    interface StdControl;    interface ADCSingle;    interface ADCMultiple;  }  uses {    interface ADCControl;    interface MSP430ADC12Single;    interface MSP430ADC12Multiple;  }}implementation {  norace bool contMode;  command result_t StdControl.init() {    contMode = FALSE;    return SUCCESS;  }    command result_t StdControl.start() {   result_t ok1, ok2;      ok1 = call ADCControl.init();   ok2 = call ADCControl.bindPort(TOS_ADC_INTERNAL_VOLTAGE_PORT,                                   TOSH_ACTUAL_ADC_INTERNAL_VOLTAGE_PORT);   call MSP430ADC12Single.bind(MSP430ADC12_INTERNAL_VOLTAGE);   call MSP430ADC12Multiple.bind(MSP430ADC12_INTERNAL_VOLTAGE);   return SUCCESS;  }     command result_t StdControl.stop() {    return SUCCESS;  }   async command adcresult_t ADCSingle.getData()  {    if (call MSP430ADC12Single.getData() != MSP430ADC12_FAIL)      return ADC_SUCCESS;    return ADC_FAIL;  }  async command adcresult_t ADCSingle.getDataContinuous()  {    if (call MSP430ADC12Single.getDataRepeat(0) != MSP430ADC12_FAIL)      return ADC_SUCCESS;    return ADC_FAIL;  }    async command adcresult_t ADCSingle.reserve()  {    if (call MSP430ADC12Single.reserve() == SUCCESS)       return ADC_SUCCESS;    return ADC_FAIL;  }    async command adcresult_t ADCSingle.reserveContinuous()  {    if (call MSP430ADC12Single.reserveRepeat(0) == SUCCESS)       return ADC_SUCCESS;    return ADC_FAIL;  }  async command adcresult_t ADCSingle.unreserve()  {    if (call MSP430ADC12Single.unreserve() == SUCCESS)       return ADC_SUCCESS;    return ADC_FAIL;  }  async event result_t MSP430ADC12Single.dataReady(uint16_t data)  {    return signal ADCSingle.dataReady(ADC_SUCCESS, data);   }    default async event result_t ADCSingle.dataReady(adcresult_t result, uint16_t data)  {     return FAIL;  }  async command adcresult_t ADCMultiple.getData(uint16_t *buf, uint16_t length)  {    if (call MSP430ADC12Multiple.getData(buf, length, 0) != MSP430ADC12_FAIL)      return ADC_SUCCESS;    return ADC_FAIL;  }  async command adcresult_t ADCMultiple.getDataContinuous(uint16_t *buf, uint16_t length)  {    if (length <= 16) {      if (call MSP430ADC12Multiple.getDataRepeat(buf, length, 0) != MSP430ADC12_FAIL)        return ADC_SUCCESS;      return ADC_FAIL;    } else {      if (call MSP430ADC12Multiple.getData(buf, length, 0) != MSP430ADC12_FAIL){        contMode = TRUE;        return ADC_SUCCESS;      } else        return ADC_FAIL;    }  }  async command adcresult_t ADCMultiple.reserve(uint16_t *buf, uint16_t length)  {    if (call MSP430ADC12Multiple.reserve(buf, length, 0) != MSP430ADC12_FAIL)      return ADC_SUCCESS;    return ADC_FAIL;  }  async command adcresult_t ADCMultiple.reserveContinuous(uint16_t *buf, uint16_t length)  {    if (call MSP430ADC12Multiple.reserveRepeat(buf, length, 0) != MSP430ADC12_FAIL)      return ADC_SUCCESS;    return ADC_FAIL;  }  async command adcresult_t ADCMultiple.unreserve()  {    if (call MSP430ADC12Multiple.unreserve() == SUCCESS)       return ADC_SUCCESS;    return ADC_FAIL;  }    async event uint16_t* MSP430ADC12Multiple.dataReady(uint16_t *buf, uint16_t length)  {    uint16_t *nextbuf;    if (!contMode)      nextbuf = signal ADCMultiple.dataReady(SUCCESS, buf, length);    else      if ((nextbuf = signal ADCMultiple.dataReady(SUCCESS, buf, length)))        call MSP430ADC12Multiple.getData(nextbuf, length, 0);      else        contMode = FALSE;    return nextbuf;  }   default async event uint16_t* ADCMultiple.dataReady(adcresult_t result, uint16_t *buf, uint16_t length)  {    return 0;  }}

⌨️ 快捷键说明

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