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

📄 isd2560.c

📁 ISD2560,60秒的模拟语音芯片驱动程序.用来还行
💻 C
字号:
/******************************************************
工程:语音芯片ISD2560的驱动程序
功能:语音芯片ISD2560是一个有60秒的直接存储的芯片
作者:永昌
日期:07.08.08
*******************************************************/
#include<reg52.h>
#include<keyscan.h>
#include<max7219.h>
#define uchar unsigned char
#define uint unsigned int 

sbit ISD2560_P_R=P3^0;    //录放音,高电平放,低电平录
sbit ISD2560_CE=P3^3;     //片选端,在下降沿可锁存地址
sbit ISD2560_PD=P3^2;     //在高电平的时候进入节电模式,低电平可录音放音
sbit ISD2560_EOM=P3^1;    //在录放音结束时,插入结束标志

bit play_flag=0;		 //放音标示
bit record_flag=0;		 //录音标示

uchar i=0,count=0;
/**************************************************
函数: void start_record()
功能: 开始录制音乐
***************************************************/
void start_record()
{
  ISD2560_CE=0;		//片选
  ISD2560_P_R=0;	//录制
  ISD2560_PD=0;		//非节电模式
}
/**************************************************
函数: void start_play()
功能: 开始播放音乐
***************************************************/
void start_play()
{
 ISD2560_CE=0;	  //片选
 ISD2560_P_R=1;	  //播放
 ISD2560_PD=0;	  //非节电模式
}  

/***************************************************
函数:void time_0() interrupt 1
功能:为了防止录音超过60s.当录音到60s 时自动放音,当有
     放音按键按下时,清0 
***************************************************/
void time_0() interrupt	 1
{
  TH0=0x3c;
  TL0=0xb0;   //50ms
  i++;
  if(i==20)
  {
   i=0;
   count++;  	
  }
}
/***************************************************
主函数
***************************************************/
void main()
{
  TMOD=0x11;
  TH0=0x3c;
  TL0=0xb0;
  //TR0=1;
  ET0=1;
  EA=1;
  P1=0;
  write_7219();
  init_7219();
  while(1)
   {
     keyscan();
	 if(key_flag)
	  {
	  if(key_val==12) //开始录音,录音的时候,不能放音
	    {
		 record_flag=1;	   
		 play_flag=0;
		 }
	   if(key_val==13) //开始放音,放音标示为1,录音为0
	    {
		 play_flag=1;
		 record_flag=0;
		} 
		 if(key_val==14) //停止按键
		  {
		   TR0=0;
		   count=0;
		   play_flag=0;
		   record_flag=0;
           ISD2560_PD=1;	  //节电模式,一定要要的东西
		  }
	 if(!ISD2560_EOM)ISD2560_PD=1; 	 //放音,节电中
	 if(play_flag)
	 {
	  start_play();	 //放音
	  TR0=0;
	  TR0=1; 
	  }
	 if(record_flag)
	  {
	  start_record();//录音
	  TR0=1;
	   }
	} //if(key_flag)
    if(count>59)count=0;
    send_7219(k6,count/10);
    send_7219(k7,count%10);
  }
}  

⌨️ 快捷键说明

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