1760语音芯片C语言源程序汇总文档格式.docx
《1760语音芯片C语言源程序汇总文档格式.docx》由会员分享,可在线阅读,更多相关《1760语音芯片C语言源程序汇总文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
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;
while(!
apc_temp|=SBUF;
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;
start_addr=SBUF;
start_addr=start_addr<
start_addr|=SBUF;
end_addr=SBUF;
end_addr=start_addr<
end_addr|=SBUF;
isd1700_7byte_comm(spi_set_comm,start_addr,end_addr);
}
//器件上电
voidspi_pu(void)
ISD_SS1=0;
isd1700_Npar_comm(ISD1700_PU,2);
ISD_SS1=1;
//器件停止
voidspi_stop(void)
isd1700_Npar_comm(ISD1700_STOP,2);
ISD_SS=1;
ISD_COMM_RAM_C[0]=ISD1700_STOP;
//器件复位
voidspi_Rest(void)
isd1700_Npar_comm(ISD1700_REST,2);
//清楚EOM标志
voidspi_CLR_INT(void)
isd1700_Npar_comm(ISD1700_CLR_INT,2);
//器件状态
voidspi_RD_STAUS(void)
{uchari;
isd1700_Npar_comm(ISD1700_RD_STAUS,3);
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)
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;
//读播放地址
voidspi_RD_play_ptr(voi