Esempio n. 1
0
int ADC_Read(void)
{
	
	Adc_Start() ;
	
	while(rADCCON & (1 << 0)) ;//ADC真正开始后,位[0]会自动清零
	
	while(!(rADCCON & (1 << 15))) ;
	
	return ((int)(rADCDAT0 & 0x3ff)) ;
}
Esempio n. 2
0
bool SVT_WAV_Record(const char * pFileName, TAG_HANDLE *pWave)
{
  unsigned int *puc;
  unsigned int Len;
  unsigned int ReadPos;
  bool IsBuffer;
  bool IsSD;
  sWAVE_FORMAT *fmt;
  pAudio=pWave;
  pWave->flag&=~0x1;
  pWave->flag|=0x2;
  fmt=&(pWave->sFmt);

  fmt->wFormatTag=1;
  fmt->wChannels=1;
  fmt->dwSamplesPerSec=8000;
  fmt->wBitsPerSample=16;

  fmt->dwAvgBytesPerSec=fmt->wChannels*fmt->dwSamplesPerSec*fmt->wBitsPerSample/8;
  fmt->wBlockAlign=fmt->wChannels*fmt->wBitsPerSample/8;
  if(SVT_Str_Cmp(pFileName,pWave->FileName)!=true)
  {
    Len=SVT_Str_Length(pFileName)+1;
    if(Len>256)return false;
    SVT_Memory_Copy(pWave->FileName,pFileName,Len);
  }
  if(pWave->pRamBuffer!=0)
  {
    IsBuffer=true;
  }
  else
  {
    IsBuffer=false;
    pWave->RamMax=0xfffffff;
  }
/*
  if(JAPI_FS_Open()<0)
  {
	SVT_Log(   "  WAVE RECORD: FS_OPEN FAILED" );
    IsSD=false;
    if(IsBuffer==false)return false;
    else
    {
      pfnSeek=Buffer_Seek;
      pfnWrite=Buffer_Write;
      pfnClose=Buffer_Close;
    }
  }
  else
  */
  JAPI_FS_Open();
  {
    if (LOGGING) SVT_Log(   "  WAVE RECORD: FS_OPEN SUCCEEDED" );
	if (LOGGING) SVT_Log(   "  WAVE RECORD: Deleting %s", pFileName );
    JAPI_FS_FileDelete(SVT_Char_To_WChar(pFileName));
	if (LOGGING) SVT_Log(   "  WAVE RECORD: Opening %s", pFileName );
    if(JAPI_FS_FileCreate(0,SVT_Char_To_WChar(pFileName))<0)
    {
      if (LOGGING) SVT_Log(   "  WAVE RECORD: File Created" );
      IsSD=false;
      if(IsBuffer==false)return false;
      else
      {
        pfnSeek=Buffer_Seek;
        pfnWrite=Buffer_Write;
        pfnClose=Buffer_Close;
      }
    }
    else
    {
      IsSD=true;
      pWave->FileHandle=JAPI_FS_FileOpen(SVT_Char_To_WChar(pFileName));
      if(pWave->FileHandle<0)
      {
        if (LOGGING) SVT_Log(   "  WAVE RECORD: File Not Opened %d", pWave->FileHandle );

        IsSD=false;
        if(IsBuffer==false)return false;
        else
        {
          pfnSeek=Buffer_Seek;
          pfnWrite=Buffer_Write;
          pfnClose=Buffer_Close;
        }
      }
      else
      {
        if (LOGGING) SVT_Log(   "  WAVE RECORD: File Opened" );
        pfnSeek=WAV_Seek;
        pfnWrite=WAV_Write;
        pfnClose=WAV_Close;
      }
    }
  }
  ReadPos=0;
  //RIFF
  puc=WaveHeadBuffer;
  Len=sizeof(sRIFF_HEADER);
  //puc=(unsigned char *)malloc(Len);
  //if(puc==0)
  //  return false;
  pfnSeek(pWave,ReadPos);
  pfnWrite(pWave,(char*)puc,Len,(unsigned long*)&Len);
  //free(puc);
  puc=WaveHeadBuffer;
  ReadPos+=Len;
  //FMT
  Len=sizeof(sFMT_BLOCK);
  //puc=(unsigned char *)malloc(Len);
  //if(puc==0)
  //  return false;
  pfnSeek(pWave,ReadPos);
  pfnWrite(pWave,(char*)puc,Len,(unsigned long*)&Len);
  //free(puc);
  puc=WaveHeadBuffer;
  ReadPos+=Len;
  //Data
  Len=sizeof(sDATA_BLOCK);
  //puc=(unsigned char *)malloc(Len);
  //if(puc==0)
  //  return false;
  pfnSeek(pWave,ReadPos);
  pfnWrite(pWave,(char*)puc,Len,(unsigned long*)&Len);
  //free(puc);
  ReadPos+=Len;
  pWave->FilePos=ReadPos;
  pWave->DataPos=0;
  pWave->DataLen=0;
  pWave->FileHeaderLen=44;
  Adc_Start();
  return true;
}