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

📄 isd4002rec+pay.c

📁 ISD4002语音录放芯片的MCU控制软件,实现全部功能
💻 C
字号:
#include <intrins.h> 
#include <regx51.h>
#define	uchar	unsigned char
#define	uint	unsigned int

sbit _mosi = 0xA0;			//sbit _mosi 	= 	P2_0;
sbit _miso = 0xA1;			//sbit _miso 	= 	P2_1;
sbit _sclk = 0xA2;			//sbit _sclk 	=  	P2_2;
sbit _ss = 0xA3;			//sbit _ss		=	P2_3;
sbit _rac = 0xA5;			//sbit _rac  	=	P2_5;
sbit _int = 0xA4;			//sbit _int  	=	P2_4;

uchar	pkey;

void 	power_up();
void 	play(uint address);
void 	record (uint address);
//void 	stop() ;
void    power_down();
void	delay(uint	x);


void	delay(uint x)			//1.0ms  delay
{
	uchar	j;
	while(x--)
		{
			for(j=0;j<124;j++)
			{;}
		}				
}


//上电程序00100
void power_up()  
{	uint	 cmd,j;
 	uchar	 i;
	_sclk=0;
	_ss=1;
	_ss=0;
	cmd=0x2000;
	for(i=0;i<16;i++)
	 {	cmd=_iror_(cmd,1);
	   	j=cmd<<1;
		_mosi=CY;
	  	_sclk=1;
	   	_sclk=0;
	 }
	 _ss=1;
}    //上电程序结束
/*
//停止程序    时间大概205us
void stop()        
{	unsigned char i;
 	unsigned int m,j;
	_sclk=0;
	_ss=1;
	_ss=0;
	m=0x3000;
	for(i=0;i<16;i++)
	{  	m=_iror_(m,1);
	   	j=m<<1;
	  	_mosi=CY;
	  	_sclk=1;
	   	_sclk=0;
	}
	_ss=1;
}      //停止程序结束*/


void    power_down()
{	unsigned char i;
 	unsigned int m,j;
	_sclk=0;
	_ss=1;
	_ss=0;
	m=0x1000;
	for(i=0;i<16;i++)
	{  	m=_iror_(m,1);
	   	j=m<<1;
	  	_mosi=CY;
	  	_sclk=1;
	   	_sclk=0;
	}
	_ss=1;
}     




/*

void playc(unsigned int x)
 {switch(x)
   {  case 0: play(0) ; break;     	//0  
      case 1: play(13) ; break;    	//1
      case 2: play(26); break;		//2
      case 3: play(39); break;		//3
      case 4: play(52); break;		//4
      case 5: play(65); break;		//5
	  case 6: play(78); break;		//6
      case 7: play(91); break;		//7
      case 8: play(104); break;		//8
      case 9: play(104); break;		//9
      case 10: play(117); break;	//欧
      case 11: play(130); break;	//千欧
      case 12: play(143); break;	//十
	  case 13: play(156); break;	//百
	  case 14: play(169); break;	//千
      default :break;
   }
 }


*/

void play(uint address)  //放音程序
 {  uchar i;
    uint j;
   	power_up();
	delay(25);     //上电延时25ms
	_sclk=0;
    address=0xe000 | address;	
	_ss=0;
	for(i=0;i<16;i++) //set play
      { address=_iror_(address,1);
	  	j=address<<1;
		 _mosi=CY;
		 _sclk=1;
		 _sclk=0;
      }
	_ss=1;
	delay(25);
	address=0xf000;
	_ss=0;
 	for(i=0;i<16;i++) //play
      { 
	  	address=_iror_(address,1);
		j=address<<1;
	 	_mosi=CY;
	 	_sclk=1;
	 	_sclk=0;
      }
	P2_7=1;
    _ss=1;   //是不是到此时就开始正式放音?
   	delay(800);     //每个约放2.6秒
   	power_down();
	delay(30);
	_ss=0;
	P2_7=0;
}//放音程序结束




//录音程序:地址0---600    13行记录一个13*200=2.6s
void record (uint address)  
{
	uchar i;
	uint j;
	power_up();   //上电
	delay(25); //上电延时 25mS
	power_up();   //上电
	delay(50); //上电延时 50mS
	 _sclk=0;
	 address=0xa000|address;  //set record
	 _ss=0;
	for(i=0;i<16;i++) //set record
      { 
	  	address=_iror_(address,1);
	 	j=address<<1;
		 _mosi=CY;
		 _sclk=1;
		 _sclk=0;
      }
	 _ss=1;
	 delay(25);
 	address=0xb000;
	 _ss=0;
 	for(i=0;i<16;i++)  
   	{ 
		address=_iror_(address,1);
	    j=address<<1;
    	_mosi=CY;
	    _sclk=1;
	    _sclk=0;
   	}
	P2_7=1;
	_ss=1;     //是不是到此时就开始正式录音??
	delay(800);
	power_down();
	delay(30);
	_ss=0;
	P2_7=0;
}  //录音程序结束



uchar scankey()   //键盘扫描,录音和放音控制
{
	uchar key,bkey;
	P1=0xff;

	do
	{
		key=P1;
	}while((key-0xff)==0);

	do
	{
		bkey=P1;
	}while((bkey-0xff)!=0);
	switch(key)
	{
		case 0xfe:pkey=1;break;
		case 0xfd:pkey=2;break;
		default:pkey=0;break;
	}

	return key;
}




void main()//主函数
{

	uint radr,padr;
	radr=0;
	padr=0;
	P1=0xff;
	P2=0xff;
	power_down();
	delay(30);
	P2_7=0;
	_ss=0;
	while(scankey()!=0)
	{

		switch(pkey)
		{
			case 1:
			{	
				record(radr);
				radr=radr+5;
				break;	

			}
			case 2:
			{
				play(padr);
				padr=padr+5;
				break;	
			 }
			 case 0:break;
			 default:break;
	   }//end switch

	};//endfor

}//end main	
	
















⌨️ 快捷键说明

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