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

📄 smad.bak

📁 声音采集源程序
💻 BAK
字号:
#include <dos.h>
#include <bios.h>
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#define  SIZE 2
#define SIZE1 4
#define   N  4500
#define   KG 2.184
unsigned int offset1,seg1;
void far s1aq10();
unsigned int far *buf=(unsigned int *)0x40000000;
 //unsigned int *buf=NULL,*buff;
 unsigned int *buff;
int mem;


void sample()
{
	int  f1,sa,wc;
	int b,b1,b2;

	f1=0x3f;
	sa=4;
	wc=0x10;


//      8254-2 INITIALIZATION

	b=(5000/sa);
	b2=b/256;
	b1=b-b2*256;
	outp(0x34c,f1);

	outp(0x34d,0x0);    //   SAMPLING CLOCK INITIALIZATION

	outp(0x34b,0x34);   // COUNTER 0 MODE 2 * WRITE CONTROL WORD
	outp(0x348,b1);
	outp(0x348,b2);
	outp(0x34b,0x74);   // COUNTER 1 MODE 2 * WRITE CONTROL WORD
	outp(0x349,b1);
	outp(0x349,b2);
	outp(0x34b,0xb0);   // COUNTER 2 MODE 0 * WRITE CONTROL WORD
	outp(0x34a,b1);
	outp(0x34a,b2);
	outp(0x34f,0x1);    // FROM 1 WAY BEGIN ( COUNTER Clear 0 )

//  SECOND  INITIALIZATION WAY COUNTROL
	 outp(0x34d,wc);       //  SAMPLING CLOCK START

//     printf("\n s1ad1 CALL s1aq10\n ");

//     printf("   run  interrupt routine  s1aq10\n\n");

	s1aq10();
}
float countG(int gg[])
{ FILE *fp;
  float G;
  int i,j;//,gg[N],ss[N];
 G=0.0;
   for(i=0;i<500;i++){
	   G=G+(float)(gg[i])/500.0;
	  }
 G=G/KG;
// printf("G=%f,gg[]=%d\n",G,gg[2]);
 return G;
}

void main()
{   float GG;
	FILE *fp;
	FILE *fp_TrueData;
	int count=20480,i,m,bb[5001];
	/*
	buf=(unsigned int *)malloc(45*1024);
	 if(buf==NULL)
	 {
	     printf("not enough memory to allocate buf\n");
	     return ;
	 }
	 */
	 mem=biosmemory();
	 printf("ram=%d",mem);
	 seg1=FP_SEG(buf);   //get buf's segment  to segment
	 offset1=FP_OFF(buf);    //get buf's offset to offset
//-------------------------------------------------------

	 if((fp=fopen("smad.bin","wb"))==NULL)
	 {
		printf("Cannot open file smad.bin in main()\n");
		free(buf);
		return;
	 }
	sample();
	buff=buf+100;
	fwrite(buf,sizeof(int),count,fp);
	for(m=0;m<5000;m++)
	{
			buff++; // modefied
			bb[m]=(int)(*buff);
			buff++;
			//buff++; // added later
	}
	//GG=countG(bb);

	if((fp_TrueData = fopen("data.bin","wb")) == NULL)
	{
	    printf("cant create output data file!\n");
	    return;
	}
	int *buf_bb;
	buf_bb =  (int *)malloc(5000*sizeof(int));
	if(buf_bb == NULL)
	{
	    printf("can not malloc memory!\n");
	    return;
	}
	for(m=0;m<5000;m++)
	{
	   *(buf_bb+m) = bb[m];
	   printf("buf_bb[%d] = %d\n",m,*(buf_bb+m));


	    /*
	    if((m>0) && (m % 20) == 0)
	    {
		printf("\n");
		//getch();
	    }
	    */
	}
	fwrite(buf_bb,sizeof(int),5000,fp_TrueData);
	fclose(fp_TrueData);
	free(buf_bb);

	fclose(fp);
	 //free(buf);
	 //printf("G=%f\n",GG);
	 printf("\nEND.");

}

⌨️ 快捷键说明

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