1、ISD1730程序编写#include #include #include #include #include /-/SPI与MCU引脚连接sbit SS = P27;sbit MISO = P24;sbit MOSI = P25;sbit SCLK = P26;sbit led=P20;uchar bdata SR0_L; uchar bdata SR0_H; uchar bdata SR1; uchar ID,APCL=0,APCH=0; uint temshow4; /*延时n ms子函数*/ void delay_ms(unsigned int tt)/延时1ms unsigned c
2、har j; while(tt-) for(j=0;j125;j+); void I_delay(void) unsigned char i; for(i=0;i18;i+) _nop_(); /* * 函数原型: void ISD_Init(void); * 功 能: 初始化 */ void ISD_Init(void) ISD_Reset(); do P1=1; ISD_PU(); RdStatus(); / DogReset(); while(SR0_L&0x01)|(!(SR1&0x01); /if(SR0_L0=1)system Err SBUF=RD_DevID();/读取芯片ID
3、,-1760为0xa0 P2=RD_DevID(); ClrInt(); ISD_WR_APC2(0xa8); RdAPC(); /* * 函数原型: void ISD_CHK_ME(void); * 功 能: 空间检查 */ void ISD_CHK_MEM(void) ISD_SendData(CHK_MEM); ISD_SendData(0x00); SS=1; delay_ms(10); /* * 函数原型: void ISD_PU(void); * 功 能: 上电 */ void ISD_PU(void) ISD_SendData(0x11); ISD_SendData(0x00);
4、 SS=1; delay_ms(50); /* * 函数原型: void ISD_Stop(void); * 功 能: 停止 */ void ISD_Stop(void) ISD_SendData(STOP); ISD_SendData(0x00); SS=1; delay_ms(50); /* * 函数原型: void ISD_Reset(void); * 功 能: 复位 */ void ISD_Reset(void) ISD_SendData(0x13); ISD_SendData(0x00); SS=1; delay_ms(50); /* * 函数原型: void ISD_PD(void
5、); * 功 能: 掉电 */ void ISD_PD(void) ISD_SendData(PD); ISD_SendData(0x00); SS=1; /* * 函数原型: void ISD_SendData(uchar BUF_ISD); * 功 能: 发送数据 */ uchar ISD_SendData(uchar BUF_ISD) uchar i,dat=BUF_ISD; SCLK=1; SS=0; for(i=0;i=1; if(MISO) dat|=0x80; SCLK=1; I_delay(); MOSI=0; / SS=1; return(dat); /* * 函数原型: v
6、oid RdStatus(void); * 功 能: 读取状态 */ void RdStatus(void) ISD_SendData(RD_STATUS); ISD_SendData(0x00); ISD_SendData(0x00); SS=1; delay_ms(10); /延迟10ms SR0_L =ISD_SendData(RD_STATUS); SR0_H =ISD_SendData(0x00); SR1 =ISD_SendData(0x00); SS=1; delay_ms(10); /* * 函数原型: void RdStatus(void); * 功 能: 读取ID */ u
7、char RD_DevID(void) ISD_SendData(RD_DEVID); ISD_SendData(0x00); ISD_SendData(0x00); SS=1; delay_ms(10); /延迟10ms SR0_L =ISD_SendData(RD_DEVID); SR0_H =ISD_SendData(0x00); ID =ISD_SendData(0x00); SS=1; delay_ms(10); return(ID); /* * 函数原型: void RD_APC(void); * 功 能: 读取APC */ void RdAPC(void) ISD_SendDat
8、a(RD_APC); ISD_SendData(0x00); ISD_SendData(0x00); ISD_SendData(0x00); SS=1; delay_ms(10); /延迟10ms SR0_L =ISD_SendData(RD_APC); SR0_H =ISD_SendData(0x00); APCL =ISD_SendData(0x00); APCH =ISD_SendData(0x00); SS=1; delay_ms(10); /延迟10ms /* SBUF=SR0_L; delay_ms(1); SBUF=SR0_H; delay_ms(1); SBUF=APCL; d
9、elay_ms(1); SBUF=APCH; */ /* * 函数原型: void ClrInt(void); * 功 能: 清除中断 */ void ClrInt(void) ISD_SendData(CLI_INT); ISD_SendData(0x00); SS=1; delay_ms(10); /延迟10ms /* * 函数原型: void ISD_WR_APC2(uchar voiceValue); * 功 能: 设置APC2 */ void ISD_WR_APC2(uchar voiceValue) ISD_SendData(WR_APC2); ISD_SendData(0xa8|
10、voiceValue); /0xa8声音最大,0xaf声音最小 ISD_SendData(0x0c); /D11=1,在SETPLAY模式下,执行到EOM自动结束。或者在连续两个SET_PLAY命令后,执行到第一个EOM自动跳到第二段开始 SS=1; delay_ms(10); /延迟10ms ISD_WR_NVCFG(); /永久写入寄存器 /* * 函数原型: void ISD_WR_NVCFG(void); * 功 能: 永久写入寄存器 */ void ISD_WR_NVCFG(void) ISD_SendData(WR_NVCFG); ISD_SendData(0x00); SS=1;
11、 delay_ms(10); /延迟10ms /* * 函数原型: void GetToneAdd(uchar cNum, Uint * ipStartAdd, Uint * ipEndAdd); * 功 能: 取出当前语音的首末地址 */ void GetToneAdd(uchar cNum, uint * ipStartAdd, uint * ipEndAdd) uint caToneAdd26=0x0010,0x0017,0x00018,0x001D,0x0020,0x0023,0x0028,0x002C,0x0031,0x0035, 0x0036,0x003B,0x003D,0x004
12、2,0x0044,0X0049,0x004B,0x0051,0X0053,0x0058, 0x005C,0x005E,0x0065,0x0067,0x006C,0x6F; /先通过独立按键模式每隔0.6-1.0秒分别录取发音(0,1,2,3,4,5,6,7,8,9,十,点,摄氏度) *ipStartAdd=caToneAddcNum*2; / ipStartAdd为每段起始地址 *ipEndAdd=caToneAddcNum*2+1; / ipEndAdd为每段结束地址 /* * 函数原型: void SetPLAY(uchar cNum); * 功 能: 定点播放 */ void SetPL
13、AY(uchar cNum) uint Add_ST, Add_ED; uchar Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L; do RdStatus(); /DogReset(); while(SR0_L&0x01)|(!(SR1&0x01); /if(SR0_L0=1)system Err ClrInt(); / GetToneAdd(cNum, &Add_ST, &Add_ED); Add_ST=0x10; Add_ED=0xff; Add_ST_L=(uchar)(Add_ST&0x00ff); Add_ST_H=(uchar)(Add_ST8)&0
14、x00ff); Add_ED_L=(uchar)(Add_ED&0x00ff); Add_ED_H=(uchar)(Add_ED8)&0x00ff); delay_ms(1); /send_char_com(Add_ST_L) ; SBUF=Add_ST_L; delay_ms(1); /send_char_com(Add_ST_H); SBUF=Add_ST_H; delay_ms(1); /send_char_com(Add_ED_L); SBUF=Add_ED_L; delay_ms(1); /send_char_com(Add_ED_H); SBUF=Add_ED_H; delay_m
15、s(1); ISD_SendData(0x90); ISD_SendData(0x00); ISD_SendData(Add_ST_L); /S7:S0 开始地址 ISD_SendData(Add_ST_H); /S10:S8 ISD_SendData(Add_ED_L); /E7:E0 结束地址 ISD_SendData(Add_ED_H); /E10:E8 ISD_SendData(0x00); SS=1; delay_ms(10); /延迟10ms do RdStatus(); / DogReset(); while(SR0_L&0x01)|(SR1&0x04); /if(SR0_L0=
16、1)system Err /* * 函数原型: void SetREC(uchar cNum); * 功 能: 定点录音 */ void SetREC(uchar cNum) uint Add_ST, Add_ED; uchar Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L; do RdStatus(); /DogReset(); while(SR0_L&0x01)|(!(SR1&0x01); /if(SR0_L0=1)system Err ClrInt(); / GetToneAdd(cNum, &Add_ST, &Add_ED); Add_ST=0x10;
17、Add_ED=0xff; Add_ST_L=(uchar)(Add_ST&0xff); Add_ST_H=(uchar)( _iror_(Add_ST, 8)&0xff); Add_ED_L=(uchar)(Add_ED&0xff); Add_ED_H=(uchar)( _iror_(Add_ED, 8)&0xff); delay_ms(1); send_char_com(Add_ST_L); /SBUF=Add_ST_L; delay_ms(1); send_char_com(Add_ST_H); /SBUF=Add_ST_H; delay_ms(1); send_char_com(Add_
18、ED_L); /SBUF=Add_ED_L; delay_ms(1); send_char_com(Add_ED_H); /SBUF=Add_ED_H; delay_ms(1); ISD_SendData(0x91); ISD_SendData(0x00); ISD_SendData(Add_ST_L); /S7:S0 开始地址 ISD_SendData(Add_ST_H); /S10:S8 ISD_SendData(Add_ED_L); /E7:E0 结束地址 ISD_SendData(Add_ED_H); /E10:E8 ISD_SendData(0x00); SS=1; delay_ms
19、(10); /延迟10ms do RdStatus(); / DogReset(); while(SR0_L&0x01)|(SR1&0x08); /if(SR0_L0=1)system Err / while(SR0_L&0x01)|(!(SR1&0x01); /if(SR0_L0=1)system Err /* * 函数原型: void SetERASE(uchar cNum); * 功 能: 定点删除,容易破坏存储结构(CMA),所以不用 */ void SetERASE(uchar cNum) uint Add_ST, Add_ED; uchar Add_ST_H, Add_ST_L,
20、Add_ED_H, Add_ED_L; Add_ST_L=(uchar)(Add_ST&0xff); Add_ST_H=(uchar)(Add_ST8); Add_ED_L=(uchar)(Add_ED&0xff); Add_ED_H=(uchar)(Add_ED8); ISD_SendData(SET_ERASE); ISD_SendData(0x00); ISD_SendData(Add_ST_L); /S7:S0 开始地址 ISD_SendData(Add_ST_H); /S10:S8 ISD_SendData(Add_ED_L); /E7:E0 结束地址 ISD_SendData(Add_ED_H); /E10:E8 ISD
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1