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

📄 yy.txt

📁 功能:语音采集播放 时钟:11.0592M 采样频率:8K 回放频率:8K 版本:1 2006-9-24
💻 TXT
字号:
/*
功能:语音采集播放
时钟:11.0592M
采样频率:8K
回放频率:8K
版本:1
2006-9-24 
*/

#include <absacc.h>
#include <reg51.h>
#define ADD_0 XBYTE[0x0000]
#define ADD_e XBYTE[0xffff]
#define uc unsigned char 

unsigned int RAMADDR=0;

address=&ADD_0;
addend=&ADD_e;
uc keyno=0xFF;//初始化按钮值
//******************
//定义位变量
sbit zlgcs=P1^6;
sbit zlgdio=P1^4;
sbit zlgclk=P1^5;
sbit DAcs=P1^2;
sbit oe=P1^1;
sbit S_convert=P1^0;
sbit ramwe=P1^3;
sbit ramoe=P1^7;
//****************



//**********************
// 延时函数
void delay(uc t) 
{
uc j;
for(j=0;j<t;j++);
}


//********************************
// 读键盘函数
uc read_key() 
{
 uc i;
 uc temp=0;
 uc cmd=0x15;
 zlgclk = 0;
 zlgcs =0;
 for(i=0;i<8;i++)
 {
  if((cmd&0X80)==0x80)
   zlgdio=1;
  else
   zlgdio=0;
  cmd<<=1;
  zlgclk = 1;
  delay(10); // 延时
  zlgclk = 0;
  delay(80);
 }
 zlgdio=1; //读取数据之前DIO 引脚要置1 以切换到输入状态
 for(i=0;i<8;i++)
 {
  temp=temp<<1;
  if(zlgdio==1) // 读数据位,接收的数据位放入temp中
  temp=temp+1;
  zlgclk=1;
  delay(80); // 延时
  zlgclk=0;
  delay(10);
 }
 zlgcs = 1;
 delay(80);
 return(temp); // 返回按键的编号
}

//****************************
//外部中断1
void keydown(void) interrupt 2 //注意管脚  
{
    keyno=0xff;
   
	keyno=read_key();
	//if((keyno==63)||(keyno==53))
	//flag=1;
	//else
	//flag=0;
}

//******************************
//外部中断0
void ADfinish(void)interrupt 0 //注意管脚 
{
		oe=1;
		oe=1;
		ramwe=0;
		ramwe=0;
		ramwe=0;
		ramwe=1;
		oe=0;
}

//*******************************
//定时器0(应提高优先级)
void timer0(void) interrupt 1
{
//	TL0|=0x45;
//	TH0=0xfe;
		if(RAMADDR!=0XFFFF)
	{
		RAMADDR ++;
		P0=(unsigned char)(RAMADDR&0x00FF);
		P2=(unsigned char)(RAMADDR>>8);


	}
	else 
	{
		ET0=0;
		TR0=0;
		EX0=0;
	}
	
	S_convert=1;
	S_convert=1;
	S_convert=1;
	S_convert=1;
	S_convert=0;
}

//*******************************
//定时器1(应提高优先级)
void timer1(void) interrupt 3
{
	//TL1|=0X45;
 	//TH1=0XFE;//E
	
 	ramoe=1;
 	ramoe=1;
	RAMADDR ++;
	P0=(unsigned char)(RAMADDR&0x00FF);
	P2=(unsigned char)(RAMADDR>>8);
	ramoe=0;
}

//*****************************
//开始录音
void record()
{
//	TMOD=0x01;
//	TL0=0x45;
//	TH0=0xfe;
//	TR0=1;
	
	TMOD=0x02;
	TL0=125;
	TH0=125;
	TR0=1;
	

	ET0=1;
	IT0=0;
	EX0=1;

	DAcs=1;
    ramoe=1;
    ramwe=0;	
}

//****************************
//放音
void plays()
{
	ramoe=0;
	ramwe=1; 
	RAMADDR=0; 
	ET0=0;  

	TMOD=0x20;
	TL1=125;
	TH1=125;
	TR1=1; 
	ET1=1;

	DAcs=0;
}

main()
{
 ramoe=1;
 ramwe=1;
 PT0=1;
 PX0=0;
 PX1=0;//优先级

 EA=1;
 EX1=1;		
while(1)
	{

 PT0=1;
 PX0=0;
 PX1=0;//优先级

 EA=1;
 EX1=1;	
		
 //step1:录音*/
	 //等待录音按键
	 if(keyno==61)
	 {   RAMADDR=0;
	
		 keyno=0xff;
		 record();
	 }
	
	 //step2:放音
	 //等待放音按键
	 if(keyno==62)
	 {
		keyno=0xff;
	 	plays();
	 }

	}
}

⌨️ 快捷键说明

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