当前位置:首页 > 数码录音与播放系统的设计论文 - 图文
void play_deal() {
isd4004_int=1; if(isd4004_int==1) {
play_key=1; if(play_key==0) {
switch (flag2) {
case 0:
isd4004_play(); flag1=0; break; } } }
while(play_key==0); }
//********************************************************************** //子程序名:void record_deal() //功能:录音处理 //入口: //影响资源:
void record_deal() {
isd4004_int=1;//判断ISD4004是否溢出 if(isd4004_int==1)//溢出后不能在录音 {
record_key=1; if(record_key==0) {
switch (flag4) {
case 0:
isd4004_record(); flag3=0; break; } } }
16
else {
if(flag3==0) {
isd4004_powerdown(); flag3=1; } }
while(record_key==0);//等待按键释放 }
//*************************************************************************** //子程序名:void isd4004_play() //功能:放音 //入口: //影响资源:
void isd4004_play() {
isd4004_powerup();//发送上电命令
delay_50us(600);//上电后延时大于25毫秒 isd4004_cs=0;
send_isd4004(0xa0);//发送放音地址的低8位 send_isd4004(0x00);//发送放音地址的高8位
send_isd4004(0xe0);//发送SET PLAY指令,指令形式:11100XXX delay_3us(); isd4004_cs=1; delay_3us(); isd4004_cs=0;
send_isd4004(0xf0);//送PLAY指令,形式:11110XXX isd4004_cs=1; }
//*************************************************************************** //子程序名:void isd4004_record() //功能:操作ISD4004录音 //入口: //影响资源: a
void isd4004_record() {
isd4004_powerup();//调用ISD4004上电程序 delay_50us(600);//上电后延时至少25毫秒 isd4004_cs=0;
send_isd4004(0xa0);//发送录音地址的低8位,录音地址范围:00A0-0A15 send_isd4004(0x00);//发送录音地址的高8位
send_isd4004(0xa0);//发送SET REC指令,10100XXX isd4004_cs=1;
17
delay_3us(); isd4004_cs=0;
send_isd4004(0xb0);//发送REC指令 10110XXX isd4004_cs=1; }
//*************************************************************************** //子程序名:void isd4004_powerup()
//功能:向ISD4004发送0X20,使ISD4004上电 //入口:
//影响资源:A
void isd4004_powerup() {
isd4004_cs=0;
send_isd4004(0x20); isd4004_cs=1; }
//*************************************************************************** //子程序名:void isd4004_powerdown()
//功能:向ISD4004发送0X10,使ISD4004发送数据 //入口:
//影响资源:A
void isd4004_powerdown() {
isd4004_cs=0; delay_3us();
send_isd4004(0x10); isd4004_cs=1; }
//************************************************************************** //子程序名称:void isd4004_stopmode()
//功能:向SID4004发送0X30,让ISD4004停止工作 void isd4004_stopmode() {
isd4004_cs=0; delay_3us();
send_isd4004(0x30); isd4004_cs=1; }
/*************************************************************************** ;子程序名:void send_isd4004(unsigned char date): ;功能:向ISD4004发送数据 ;入口:A
;影响资源:R7*/
void send_isd4004(unsigned char value)
18
{
unsigned char i; isd4004_mosi=0; isd4004_sclk=0; for(i=0;i<8;i++) {
isd4004_sclk=0;
if((value & 0x01)==1) {
isd4004_mosi=1; } else {
isd4004_mosi=0; }
delay_3us(); isd4004_sclk=1; delay_3us(); value>>=1; } }
//***********************************************
//3微秒延时程序 void delay_3us() { ; ; }
//**************************************************************************************************
//函数名称:void delay_50US(unsigned int t) //功能: 延时50*t(us)
void delay_50us(unsigned int t) {
unsigned char j; for(;t>0;t--) {
for(j=19;j>0;j--); } }
19
共分享92篇相关文档