1760语音芯片C语言源程序汇总.docx
《1760语音芯片C语言源程序汇总.docx》由会员分享,可在线阅读,更多相关《1760语音芯片C语言源程序汇总.docx(17页珍藏版)》请在冰豆网上搜索。
![1760语音芯片C语言源程序汇总.docx](https://file1.bdocx.com/fileroot1/2022-10/20/8110607d-38d9-4921-86d7-ab5e4206a41b/8110607d-38d9-4921-86d7-ab5e4206a41b1.gif)
1760语音芯片C语言源程序汇总
//#pragmasrc
#include"reg51.h"
#include"ISD1700.H"
#include"sound.h"
#defineucharunsignedchar
#defineuintunsignedint
sbitISD_MISO=P3^4;
sbitISD_MOSI=P3^5;
sbitISD_SCLK=P3^6;
sbitISD_SS=P3^7;
sbitISD_SS1=P3^3;
bitre_fig;
uchardataISD_COMM_RAM[7];
uchardataISD_COMM_RAM_C[7];
uchardata*isd_comm_ptr;
uchardata*back_data_ptr;
voidinit(void);
voiddelay(intx);
voidcomm_sate(void);
voidrest_isd_comm_ptr(void);
ucharT_R_comm_byte(ucharcomm_data);
voidisd1700_par2_comm(ucharcomm_par,uintdata_par);
voidisd1700_Npar_comm(ucharcomm_par,comm_byte_count);//noparametercomm
voidisd1700_7byte_comm(ucharcomm_par,uintstar_addr,uintend_addr);
voidspi_pu(void);
voidspi_stop(void);
voidspi_Rest(void);
voidspi_CLR_INT(void);
voidspi_RD_STAUS(void);
voidspi_RD_play_ptr(void);
voidspi_pd(void);
voidspi_RD_rec_ptr(void);
voidspi_devid(void);
voidspi_play(void);
voidspi_rec(void);
voidspi_erase(void);
voidspi_G_ERASE(void);
voidspi_rd_apc(void);
voidspi_wr_apc1(void);
voidspi_wr_apc2(void);
voidspi_wr_nvcfg(void);
voidspi_ld_nvcfg(void);
voidspi_fwd(void);
voidspi_chk_mem(void);
voidspi_CurrRowAddr(void);
voidseril_back_sate(ucharbyte_number);
voidspi_set_opt(ucharspi_set_comm);
//串口通信接口函数
voidcomm_sate(void)
{
ucharsate_temp;
uintapc_temp;
if(RI)//接收到命令
{sate_temp=SBUF;//下面根据不同的命令执行不同的函数
if(sate_temp==0x09)
{spi_devid();}
if(sate_temp==0x44)
{spi_rd_apc();}
if(sate_temp==0x40)
{spi_play();}
if(sate_temp==0x04)
{spi_CLR_INT();}
if(sate_temp==0x05)
{spi_RD_STAUS();}
if(sate_temp==0x43)
{spi_G_ERASE();}
if(sate_temp==0x01)
{spi_pu();}
if(sate_temp==0x02)
{spi_stop();}
if(sate_temp==0x03)
{spi_Rest();}
if(sate_temp==0x06)
{spi_RD_play_ptr();}
if(sate_temp==0x07)
{spi_pd();}
if(sate_temp==0x08)
{spi_RD_rec_ptr();}
if(sate_temp==0x41)
{spi_rec();}
if(sate_temp==0x42)
{spi_erase();}
if(sate_temp==0x45)
{spi_wr_apc1();}
if(sate_temp==0x65)
{spi_wr_apc2();}
if(sate_temp==0x46)
{spi_wr_nvcfg();}
if(sate_temp==0x47)
{spi_ld_nvcfg();}
if(sate_temp==0x48)
{spi_fwd();}
if(sate_temp==0x49)
{spi_chk_mem();}
if(sate_temp==0x60)
{spi_CurrRowAddr();}
if(sate_temp==0x80)
{
spi_set_opt(ISD1700_SET_PLAY|ISD_LED);
//spi_set_opt(ISD1700_SET_PLAY);
}
if(sate_temp==0x81)
{
spi_set_opt(ISD1700_SET_REC|ISD_LED);
//spi_set_opt(ISD1700_SET_REC);
ISD_COMM_RAM_C[0]=ISD1700_SET_REC;
seril_back_sate
(1);
}
if(sate_temp==0x82)
{
spi_set_opt(ISD1700_SET_ERASE|ISD_LED);
//spi_set_opt(ISD1700_SET_ERASE);
}
if(sate_temp==ISD1700_WR_APC2)
{
RI=0;
while(!
RI);
apc_temp=SBUF;
apc_temp=apc_temp<<8;
RI=0;
while(!
RI);
apc_temp|=SBUF;
RI=0;
ISD_SS1=0;
ISD_SS=0;
isd1700_par2_comm(ISD1700_WR_APC2,apc_temp);
ISD_SS1=1;
ISD_SS=1;
}
RI=0;
}
if(re_fig)
{
rest_isd_comm_ptr();
sate_temp=0;
do{
SBUF=*back_data_ptr++;
while(!
TI);
TI=0;
}while(++sate_temp<=2);
re_fig=0;
}
}
/******************************************************************/
/*******以下为ISD各子功能函数,详细请查阅ISD语音芯片数据手册******/
//设置函数
voidspi_set_opt(ucharspi_set_comm)
{
uintstart_addr,end_addr;
RI=0;
while(!
RI);
start_addr=SBUF;
start_addr=start_addr<<8;
RI=0;
while(!
RI);
start_addr|=SBUF;
RI=0;
while(!
RI);
end_addr=SBUF;
end_addr=start_addr<<8;
RI=0;
while(!
RI);
end_addr|=SBUF;
RI=0;
ISD_SS1=0;
ISD_SS=0;
isd1700_7byte_comm(spi_set_comm,start_addr,end_addr);
ISD_SS1=1;
ISD_SS=1;
}
//器件上电
voidspi_pu(void)
{
ISD_SS1=0;
ISD_SS=0;
isd1700_Npar_comm(ISD1700_PU,2);
ISD_SS1=1;
ISD_SS=1;
}
//器件停止
voidspi_stop(void)
{
ISD_SS1=0;
ISD_SS=0;
isd1700_Npar_comm(ISD1700_STOP,2);
ISD_SS=1;
ISD_SS1=1;
ISD_COMM_RAM_C[0]=ISD1700_STOP;
seril_back_sate
(1);
}
//器件复位
voidspi_Rest(void)
{
ISD_SS=0;
ISD_SS1=0;
isd1700_Npar_comm(ISD1700_REST,2);
ISD_SS=1;
ISD_SS1=1;
}
//清楚EOM标志
voidspi_CLR_INT(void)
{
ISD_SS=0;
ISD_SS1=0;
isd1700_Npar_comm(ISD1700_CLR_INT,2);
ISD_SS=1;
ISD_SS1=1;
}
//器件状态
voidspi_RD_STAUS(void)
{uchari;
ISD_SS=0;
ISD_SS1=0;
isd1700_Npar_comm(ISD1700_RD_STAUS,3);
ISD_SS=1;
ISD_SS1=1;
i=ISD_COMM_RAM_C[1];
//j=ISD_COMM_RAM_C[2];
ISD_COMM_RAM_C[1]=ISD_COMM_RAM_C[0];
ISD_COMM_RAM_C[0]=i;
seril_back_sate(3);
}
//当前地址
voidspi_CurrRowAddr(void)
{uchari;
ISD_SS=0;
ISD_SS1=0;
isd1700_Npar_comm(ISD1700_RD_STAUS,3);
ISD_SS=1;
ISD_SS1=1;
i=ISD_COMM_RAM_C[1];
ISD_COMM_RAM_C[1]=ISD_COMM_RAM_C[0]>>5|ISD_COMM_RAM_C[1]<<3;
ISD_COMM_RAM_C[0]=i>>5;
seril_back_sate(3);
}
//读播放地址
voidspi_RD_play_ptr(voi