int ADC_Read(void) { Adc_Start() ; while(rADCCON & (1 << 0)) ;//ADC真正开始后,位[0]会自动清零 while(!(rADCCON & (1 << 15))) ; return ((int)(rADCDAT0 & 0x3ff)) ; }
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; }