专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
跪求ISD1760语音模块程序
2020-01-20 19:01
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
14019
15
15
我现在在做一个报价的模块其中关键是语音模块,可是没有学过现在在用希望哪位大侠能给点资料啊。。。。。。。。。。。。。。小弟菜鸟啊
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
KY1168
1楼-- · 2020-01-20 21:30
精彩回答 2 元偷偷看……
加载中...
山居笔记
2楼-- · 2020-01-20 23:10
有程序没有啊,,,,大哥
加载中...
KY1168
3楼-- · 2020-01-21 02:57
#include "STC11F04E.H"
#define uchar unsigned char
#define uint unsigned int
#define K P3_7
#define PTT P3_5
/*******ISD1700状态寄存器及各个标志位定义****/
unsigned char bdata SR0_L;//SR0寄存器
unsigned char bdata SR0_H;
unsigned char bdata SR1;//SR1寄存器
unsigned char APCL=0,APCH=0;
unsigned char PlayAddL=0,PlayAddH=0;
unsigned char RecAddL=0,RecAddH=0;
sbit CMD=SR0_L^0; //SPI指令错误标志位
sbit FULL=SR0_L^1; //芯片存储空间满标志位
sbit PU=SR0_L^2; //上电标志位
sbit EOM=SR0_L^3; //EOM标志位
sbit INTT=SR0_L^4; //操作完成标志位
sbit RDY=SR1^0; //准备接受指令标志?
sbit ERASE=SR1^1; //擦除标志位?
sbit PLAY=SR1^2; //播放标志位
sbit REC=SR1^1; //录音标志位
/***************ISD1700指令函数声明**********/
unsigned char ISD_SendData(unsigned char dat);
unsigned char ISD_Devid (void);
void ISD_PU(void);
void ISD_STOP(void);
void ISD_Reset(void);
void ISD_Clr_Int(void);
void ISD_Rd_Status(void);
void ISD_Rd_Playptr(void);
void ISD_PD(void);
void ISD_Rd_Recptr(void);
void ISD_Play(void);
void ISD_Rec(void);
void ISD_Erase(void);
void ISD_G_Erase(void);
void ISD_Rd_APC(void);
void ISD_WR_APC2(unsigned char apcdatl,apcdath);
void ISD_WR_NVCFG(unsigned char apcdatl,apcdath);
void ISD_LD_NVCFG(void);
void ISD_FWD(void);
void ISD_CHK_MEN(void);
void ISD_EXTCLK(void);
void ISD_SET_PLAY(unsigned char Saddl,saddh,Eaddl,Eaddh);
void ISD_SET_Rec(unsigned char Saddl,saddh,Eaddl,Eaddh);
void ISD_SET_Erase(unsigned char Saddl,saddh,Eaddl,Eaddh);
//***********************端口定义*****************************///
sbit SS=P1^4;
sbit SCK=P1^5;
sbit MOSI=P1^6;
sbit MISO=P1^7;
sbit Key_AN=P3^2;
////*标志位定义*******************////
uchar bdata flag;
sbit PR_flag=flag^1;
sbit Erase_flag=flag^4;
sbit Stop_flag=flag^7;
////////*其它函数声明************//
void Cpu_Init(void);
void ISD_Init(void);
void ISDWORK(void);
void delay(unsigned int t);
/***************主函数*********************/
void main()
{
uchar i;
P3M1=0x80; // A0
P3M0=0x00;
K=0;
PTT=0;
Cpu_Init(); //初始化ISP端口
delay(1);
ISD_Init(); // 芯片初始化
while(1)
{
if(Key_AN==0)
{
delay(10);
if(Key_AN==0)
{
// K=1;
ISD_Init();
flag=0x00;
PR_flag=1; //开始录音
ISDWORK();
PR_flag=0;
PTT=1; //开始播放
ISDWORK();
PTT=0;
Erase_flag=1; //删除所有
ISDWORK();
Erase_flag=0;
// Stop_flag=1; //掉电
// ISDWORK();
// Stop_flag=0;
// delay(50);
}
while(Key_AN==0);
// K=0;
}
}
}
/************************函数原型:void IniCpuIO()
功能:CPU及系统变量初始化***********///
void Cpu_Init(void)
{
SS=1; //初始化ISP端口
SCK=1;
MOSI=1;
MISO=1;
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TMOD=0x01; //定时器0工作在方式1
EA=0; //关中断
flag=0;
}
/****************函数原型:void ISD_Init(void);
功能:系统初始化。************/
void ISD_Init(void)
{
SS=1;
SCK=1;
MOSI=0;
do
{
ISD_PU(); //上电
delay(50);
ISD_Rd_Status();
}while(CMD||(!PU));
//ISD_WR_APC2(0x40,0x04); //出厂时默认为0x0440,低位在前,高位在后
ISD_WR_APC2(0x80,0x04); //D3为打开本地监听
do
{
ISD_Rd_Status();
} while(RDY==0);
delay(100);
}
/**************函数原型:void ISDWORK(void)
功能:对ISD1700进行的相关操作*******/
void ISDWORK(void)
{
uchar i;
switch(flag)
{
case 0x00: //放音
do
{
ISD_Rd_Status();
} while(RDY==0);
delay(10);
ISD_Play();
delay(2);
do
{
ISD_Rd_Status();
} while(PLAY==1);
ISD_Clr_Int();
do
{
ISD_Rd_Status();
} while(RDY==0);
delay(10);
ISD_FWD();
do
{
ISD_Rd_Status();
} while(RDY==0);
break;
case 0x02: //录音程序
ISD_Clr_Int(); //清楚中断标志
do
{
ISD_Rd_Status(); //读取寄存器状态内容
} while(RDY==0); //准备接受指令标志?
ISD_Rec();
do
{
ISD_Rd_Status();
/*
if(FULL==1) //芯片存储空间满标志位
{
for(i=3;i>0;i--)
{
K=1;
delay(300);
K=0;
delay(200);
}
} */
}while(Key_AN==0); //等待铵键松开
ISD_Clr_Int(); //清楚中断标志
ISD_STOP(); //停止当前操作
break;
case 0x10:
do
{
ISD_Rd_Status();
}while(RDY==0);
delay(2);
ISD_G_Erase(); //删除全部内容
do
{
ISD_Rd_Status();
}while(RDY==0);
break;
case 0x80:
ISD_Clr_Int();
ISD_STOP();
ISD_Reset();
ISD_PD(); //掉电
break;
}
}
/**************函数原型:unsigned char ISD_SendData(unsigned char dat);
功能:向CPU发送&读回数据******/
unsigned char ISD_SendData(unsigned char dat)
{
unsigned char i,j,BUF_ISD=dat;
SCK=1;
SS=0;
for(j=4;j>0;j--)
{;}
for(i=0;i<8;i++)
{
SCK=0;
for(j=2;j>0;j--)
{;}
if(BUF_ISD&0x01)
MOSI=1;
else
MOSI=0;
BUF_ISD>>=1;
if(MISO)
BUF_ISD|=0x80;
SCK=1;
for(j=6;j>0;j--)
{;}
}
MOSI=0;
return(BUF_ISD);
}
/************函数原型:void ISD_STOP(void);
功能:停止当前操作**********/
void ISD_STOP(void)
{
ISD_SendData(0x02);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_Reset(void);发送指令后需要延迟50ms
功能:ISD1700复位****************/
void ISD_Reset(void)
{
ISD_SendData(0x03);
ISD_SendData(0x00);
SS=1;
}
/*****************函数原型:void ISD_Clr_Int(void);
功能:清除中断标志**************/
void ISD_Clr_Int(void)
{
ISD_SendData(0x04);
ISD_SendData(0x00);
SS=1;
}
/******************函数原型:void ISD_Rd_Status(void)
功能:读取状态寄存器内容********/
void ISD_Rd_Status(void)
{
unsigned char i;
ISD_SendData(0x05);
ISD_SendData(0x00);
ISD_SendData(0x00);
SS=1;
for(i=2;i>0;i--)
{;}
SR0_L=ISD_SendData(0x05);
SR0_H=ISD_SendData(0x00);
SR1=ISD_SendData(0x00);
SS=1;
}
/**************** *函数原型:void ISD_Rd_PlayPtr(void)
功能:读取放音指针**************/
void ISD_Rd_Playptr(void)
{
unsigned char i;
ISD_SendData(0x06);
ISD_SendData(0x00);
ISD_SendData(0x00);
ISD_SendData(0x00);
SS=1;
for(i=2;i>0;i--)
{;}
SR0_L=ISD_SendData(0x06);
SR0_H=ISD_SendData(0x00);
PlayAddL=ISD_SendData(0x00);
PlayAddH=ISD_SendData(0x00);
SS=1;
}
/******************函数原型:void iSD_PU(void);发送指令后需要延时50ms
功能:上电************************/
void ISD_PU(void)
{
ISD_SendData(0x01);
ISD_SendData(0x00);
SS=1;
}
/******************函数原型:void iSD_PD(void);发送指令后需要延时50ms
功能:下电************************/
void ISD_PD(void)
{
ISD_SendData(0x07);
ISD_SendData(0x00);
SS=1;
}
/**************函数原型:void ISD_Rd_RecPtr(void);
功能:读取录音指针*****************/
void ISD_Rd_Recptr(void)
{
unsigned char i;
ISD_SendData(0x08);
ISD_SendData(0x00);
ISD_SendData(0x00);
ISD_SendData(0x00);
SS=1;
for(i=2;i>0;i--)
{;}
SR0_L=ISD_SendData(0x08);
SR0_H=ISD_SendData(0x08);
RecAddL=ISD_SendData(0x00);
RecAddH=ISD_SendData(0x00);
SS=1;
}
/****************函数原型:unsigned char ISD_Devid(void);
功能:读取APC寄存器内容***********/
unsigned char ISD_Devid(void)
{
unsigned char DeviceNO,i;
ISD_SendData(0x09);
ISD_SendData(0x00);
ISD_SendData(0x00);
SS=1;
for(i=2;i>0;i--)
{;}
ISD_SendData(0x09);
ISD_SendData(0x00);
DeviceNO=ISD_SendData(0x00);
SS=1;
return DeviceNO;
}
/*****************函数原型:void ISD_Rec(void);
功能:录音******************/
void ISD_Rec(void)
{
ISD_SendData(0x41);
ISD_SendData(0x00);
SS=1;
}
/*****************函数原型:void ISD_Play(void);
功能:放音******************/
void ISD_Play(void)
{
ISD_SendData(0x40);
ISD_SendData(0x00);
SS=1;
}
/******************函数原型:void ISD_ISD_Erase(void);
功能:擦除****************/
void ISD_Erase(void)
{
ISD_SendData(0x42);
ISD_SendData(0x00);
SS=1;
}
/*******************函数原型:void ISD_G_Erase(void);
功能:全体擦除************/
void ISD_G_Erase(void)
{
ISD_SendData(0x43);
ISD_SendData(0x00);
SS=1;
}
/**************函数原型:void ISD_RD_APC(void)
功能:读取APC寄存器内容***************/
void ISD_Rd_APC(void)
{
unsigned char i;
ISD_SendData(0x44);
ISD_SendData(0x00);
ISD_SendData(0x00);
ISD_SendData(0x00);
SS=1;
for(i=2;i>0;i--)
{;}
SR0_L=ISD_SendData(0x44);
SR0_H=ISD_SendData(0x00);
APCL=ISD_SendData(0x00);
APCH=ISD_SendData(0x00);
SS=1;
}
/***************函数原型:void ISD_WR_APC2(unsigned char apcdatl,apcdath);
功能:设置APC2***********************/
void ISD_WR_APC2(unsigned char apcdatl,apcdath)
{
ISD_SendData(0x65);
ISD_SendData(apcdatl);
ISD_SendData(apcdath);
SS=1;
}
/**********函数原型:void ISD_WR_NVCFG(unsigned char apcdatl,apcdath);
功能:将APC数据写入NVCFG寄存器中***********/
void ISD_WR_NVCFG(unsigned char apcdatl,apcdath)
{
ISD_SendData(0x46);
ISD_SendData(apcdatl);
ISD_SendData(apcdath);
SS=1;
}
/***********函数原型:void ISD_LD_NVCFG(void)
功能:将NVCFG数据载入APC寄存器中********/
void ISD_LD_NVCFG(void)
{
ISD_SendData(0x47);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_FWD(void)
功能:放音指针下跳一段,指向下一段语音的起始地址********/
void ISD_FWD(void)
{
ISD_SendData(0x48);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_CHK_MEN(void)
功能:空间检查******/
void ISD_CHK_MEM(void)
{
ISD_SendData(0x49);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_EXTCLK(void)
功能:启用/关闭 外部时钟模式******/
void ISD_EXTCLK(void)
{
ISD_SendData(0x4a);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_SET_PLAY(unsigned char Saddl,Saddh,Eaddl,Eakkh);
功能:定点播放******/
void ISD_SET_PLAY(unsigned char Saddl,Saddh,Eaddl,Eaddh)
{
ISD_SendData(0x80);
ISD_SendData(0x00);
ISD_SendData(Saddl);
ISD_SendData(Saddh);
ISD_SendData(Eaddl);
ISD_SendData(Eaddh);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_SET_Rec(unsigned char Saddl,Saddh,Eaddl,Eakkh);
功能:定点录音******/
void ISD_SET_Rec(unsigned char Saddl,Saddh,Eaddl,Eaddh)
{
ISD_SendData(0x81);
ISD_SendData(0x00);
ISD_SendData(Saddl);
ISD_SendData(Saddh);
ISD_SendData(Eaddl);
ISD_SendData(Eaddh);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_SET_Erase(unsigned char Saddl,Saddh,Eaddl,Eakkh);
功能:定点录音******/
void ISD_SET_Erase(unsigned char Saddl,Saddh,Eaddl,Eaddh)
{
ISD_SendData(0x82);
ISD_SendData(0x00);
ISD_SendData(Saddl);
ISD_SendData(Saddh);
ISD_SendData(Eaddl);
ISD_SendData(Eaddh);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void delay(unsigned int t)***/
void delay(unsigned int t)
{
for(;t>0;t--)
{
TH0=0xFE; //TMOD计数器0,工作方式1,延时1ms,晶振5.7M
TL0=0x00; //FE 23
TR0=1;
while(TF0!=1)
{;}
TF0=0;
TR0=0;
}
}
加载中...
山居笔记
4楼-- · 2020-01-21 07:43
精彩回答 2 元偷偷看……
加载中...
KY1168
5楼-- · 2020-01-21 10:31
呵呵,我的全奉献了。
还不明白QQ517349317
加载中...
山居笔记
6楼-- · 2020-01-21 16:15
enen ..已经加了
加载中...
1
2
3
下一页
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
东软载波ESF0654 PDS开发板串口USART0代码分享
1 个回答
普通32位单片机使用linux的应用代码
5 个回答
东软载波ESF0654 PDS开发板AT24C04的调试
9 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#define uchar unsigned char
#define uint unsigned int
#define K P3_7
#define PTT P3_5
/*******ISD1700状态寄存器及各个标志位定义****/
unsigned char bdata SR0_L;//SR0寄存器
unsigned char bdata SR0_H;
unsigned char bdata SR1;//SR1寄存器
unsigned char APCL=0,APCH=0;
unsigned char PlayAddL=0,PlayAddH=0;
unsigned char RecAddL=0,RecAddH=0;
sbit CMD=SR0_L^0; //SPI指令错误标志位
sbit FULL=SR0_L^1; //芯片存储空间满标志位
sbit PU=SR0_L^2; //上电标志位
sbit EOM=SR0_L^3; //EOM标志位
sbit INTT=SR0_L^4; //操作完成标志位
sbit RDY=SR1^0; //准备接受指令标志?
sbit ERASE=SR1^1; //擦除标志位?
sbit PLAY=SR1^2; //播放标志位
sbit REC=SR1^1; //录音标志位
/***************ISD1700指令函数声明**********/
unsigned char ISD_SendData(unsigned char dat);
unsigned char ISD_Devid (void);
void ISD_PU(void);
void ISD_STOP(void);
void ISD_Reset(void);
void ISD_Clr_Int(void);
void ISD_Rd_Status(void);
void ISD_Rd_Playptr(void);
void ISD_PD(void);
void ISD_Rd_Recptr(void);
void ISD_Play(void);
void ISD_Rec(void);
void ISD_Erase(void);
void ISD_G_Erase(void);
void ISD_Rd_APC(void);
void ISD_WR_APC2(unsigned char apcdatl,apcdath);
void ISD_WR_NVCFG(unsigned char apcdatl,apcdath);
void ISD_LD_NVCFG(void);
void ISD_FWD(void);
void ISD_CHK_MEN(void);
void ISD_EXTCLK(void);
void ISD_SET_PLAY(unsigned char Saddl,saddh,Eaddl,Eaddh);
void ISD_SET_Rec(unsigned char Saddl,saddh,Eaddl,Eaddh);
void ISD_SET_Erase(unsigned char Saddl,saddh,Eaddl,Eaddh);
//***********************端口定义*****************************///
sbit SS=P1^4;
sbit SCK=P1^5;
sbit MOSI=P1^6;
sbit MISO=P1^7;
sbit Key_AN=P3^2;
////*标志位定义*******************////
uchar bdata flag;
sbit PR_flag=flag^1;
sbit Erase_flag=flag^4;
sbit Stop_flag=flag^7;
////////*其它函数声明************//
void Cpu_Init(void);
void ISD_Init(void);
void ISDWORK(void);
void delay(unsigned int t);
/***************主函数*********************/
void main()
{
uchar i;
P3M1=0x80; // A0
P3M0=0x00;
K=0;
PTT=0;
Cpu_Init(); //初始化ISP端口
delay(1);
ISD_Init(); // 芯片初始化
while(1)
{
if(Key_AN==0)
{
delay(10);
if(Key_AN==0)
{
// K=1;
ISD_Init();
flag=0x00;
PR_flag=1; //开始录音
ISDWORK();
PR_flag=0;
PTT=1; //开始播放
ISDWORK();
PTT=0;
Erase_flag=1; //删除所有
ISDWORK();
Erase_flag=0;
// Stop_flag=1; //掉电
// ISDWORK();
// Stop_flag=0;
// delay(50);
}
while(Key_AN==0);
// K=0;
}
}
}
/************************函数原型:void IniCpuIO()
功能:CPU及系统变量初始化***********///
void Cpu_Init(void)
{
SS=1; //初始化ISP端口
SCK=1;
MOSI=1;
MISO=1;
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TMOD=0x01; //定时器0工作在方式1
EA=0; //关中断
flag=0;
}
/****************函数原型:void ISD_Init(void);
功能:系统初始化。************/
void ISD_Init(void)
{
SS=1;
SCK=1;
MOSI=0;
do
{
ISD_PU(); //上电
delay(50);
ISD_Rd_Status();
}while(CMD||(!PU));
//ISD_WR_APC2(0x40,0x04); //出厂时默认为0x0440,低位在前,高位在后
ISD_WR_APC2(0x80,0x04); //D3为打开本地监听
do
{
ISD_Rd_Status();
} while(RDY==0);
delay(100);
}
/**************函数原型:void ISDWORK(void)
功能:对ISD1700进行的相关操作*******/
void ISDWORK(void)
{
uchar i;
switch(flag)
{
case 0x00: //放音
do
{
ISD_Rd_Status();
} while(RDY==0);
delay(10);
ISD_Play();
delay(2);
do
{
ISD_Rd_Status();
} while(PLAY==1);
ISD_Clr_Int();
do
{
ISD_Rd_Status();
} while(RDY==0);
delay(10);
ISD_FWD();
do
{
ISD_Rd_Status();
} while(RDY==0);
break;
case 0x02: //录音程序
ISD_Clr_Int(); //清楚中断标志
do
{
ISD_Rd_Status(); //读取寄存器状态内容
} while(RDY==0); //准备接受指令标志?
ISD_Rec();
do
{
ISD_Rd_Status();
/*
if(FULL==1) //芯片存储空间满标志位
{
for(i=3;i>0;i--)
{
K=1;
delay(300);
K=0;
delay(200);
}
} */
}while(Key_AN==0); //等待铵键松开
ISD_Clr_Int(); //清楚中断标志
ISD_STOP(); //停止当前操作
break;
case 0x10:
do
{
ISD_Rd_Status();
}while(RDY==0);
delay(2);
ISD_G_Erase(); //删除全部内容
do
{
ISD_Rd_Status();
}while(RDY==0);
break;
case 0x80:
ISD_Clr_Int();
ISD_STOP();
ISD_Reset();
ISD_PD(); //掉电
break;
}
}
/**************函数原型:unsigned char ISD_SendData(unsigned char dat);
功能:向CPU发送&读回数据******/
unsigned char ISD_SendData(unsigned char dat)
{
unsigned char i,j,BUF_ISD=dat;
SCK=1;
SS=0;
for(j=4;j>0;j--)
{;}
for(i=0;i<8;i++)
{
SCK=0;
for(j=2;j>0;j--)
{;}
if(BUF_ISD&0x01)
MOSI=1;
else
MOSI=0;
BUF_ISD>>=1;
if(MISO)
BUF_ISD|=0x80;
SCK=1;
for(j=6;j>0;j--)
{;}
}
MOSI=0;
return(BUF_ISD);
}
/************函数原型:void ISD_STOP(void);
功能:停止当前操作**********/
void ISD_STOP(void)
{
ISD_SendData(0x02);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_Reset(void);发送指令后需要延迟50ms
功能:ISD1700复位****************/
void ISD_Reset(void)
{
ISD_SendData(0x03);
ISD_SendData(0x00);
SS=1;
}
/*****************函数原型:void ISD_Clr_Int(void);
功能:清除中断标志**************/
void ISD_Clr_Int(void)
{
ISD_SendData(0x04);
ISD_SendData(0x00);
SS=1;
}
/******************函数原型:void ISD_Rd_Status(void)
功能:读取状态寄存器内容********/
void ISD_Rd_Status(void)
{
unsigned char i;
ISD_SendData(0x05);
ISD_SendData(0x00);
ISD_SendData(0x00);
SS=1;
for(i=2;i>0;i--)
{;}
SR0_L=ISD_SendData(0x05);
SR0_H=ISD_SendData(0x00);
SR1=ISD_SendData(0x00);
SS=1;
}
/**************** *函数原型:void ISD_Rd_PlayPtr(void)
功能:读取放音指针**************/
void ISD_Rd_Playptr(void)
{
unsigned char i;
ISD_SendData(0x06);
ISD_SendData(0x00);
ISD_SendData(0x00);
ISD_SendData(0x00);
SS=1;
for(i=2;i>0;i--)
{;}
SR0_L=ISD_SendData(0x06);
SR0_H=ISD_SendData(0x00);
PlayAddL=ISD_SendData(0x00);
PlayAddH=ISD_SendData(0x00);
SS=1;
}
/******************函数原型:void iSD_PU(void);发送指令后需要延时50ms
功能:上电************************/
void ISD_PU(void)
{
ISD_SendData(0x01);
ISD_SendData(0x00);
SS=1;
}
/******************函数原型:void iSD_PD(void);发送指令后需要延时50ms
功能:下电************************/
void ISD_PD(void)
{
ISD_SendData(0x07);
ISD_SendData(0x00);
SS=1;
}
/**************函数原型:void ISD_Rd_RecPtr(void);
功能:读取录音指针*****************/
void ISD_Rd_Recptr(void)
{
unsigned char i;
ISD_SendData(0x08);
ISD_SendData(0x00);
ISD_SendData(0x00);
ISD_SendData(0x00);
SS=1;
for(i=2;i>0;i--)
{;}
SR0_L=ISD_SendData(0x08);
SR0_H=ISD_SendData(0x08);
RecAddL=ISD_SendData(0x00);
RecAddH=ISD_SendData(0x00);
SS=1;
}
/****************函数原型:unsigned char ISD_Devid(void);
功能:读取APC寄存器内容***********/
unsigned char ISD_Devid(void)
{
unsigned char DeviceNO,i;
ISD_SendData(0x09);
ISD_SendData(0x00);
ISD_SendData(0x00);
SS=1;
for(i=2;i>0;i--)
{;}
ISD_SendData(0x09);
ISD_SendData(0x00);
DeviceNO=ISD_SendData(0x00);
SS=1;
return DeviceNO;
}
/*****************函数原型:void ISD_Rec(void);
功能:录音******************/
void ISD_Rec(void)
{
ISD_SendData(0x41);
ISD_SendData(0x00);
SS=1;
}
/*****************函数原型:void ISD_Play(void);
功能:放音******************/
void ISD_Play(void)
{
ISD_SendData(0x40);
ISD_SendData(0x00);
SS=1;
}
/******************函数原型:void ISD_ISD_Erase(void);
功能:擦除****************/
void ISD_Erase(void)
{
ISD_SendData(0x42);
ISD_SendData(0x00);
SS=1;
}
/*******************函数原型:void ISD_G_Erase(void);
功能:全体擦除************/
void ISD_G_Erase(void)
{
ISD_SendData(0x43);
ISD_SendData(0x00);
SS=1;
}
/**************函数原型:void ISD_RD_APC(void)
功能:读取APC寄存器内容***************/
void ISD_Rd_APC(void)
{
unsigned char i;
ISD_SendData(0x44);
ISD_SendData(0x00);
ISD_SendData(0x00);
ISD_SendData(0x00);
SS=1;
for(i=2;i>0;i--)
{;}
SR0_L=ISD_SendData(0x44);
SR0_H=ISD_SendData(0x00);
APCL=ISD_SendData(0x00);
APCH=ISD_SendData(0x00);
SS=1;
}
/***************函数原型:void ISD_WR_APC2(unsigned char apcdatl,apcdath);
功能:设置APC2***********************/
void ISD_WR_APC2(unsigned char apcdatl,apcdath)
{
ISD_SendData(0x65);
ISD_SendData(apcdatl);
ISD_SendData(apcdath);
SS=1;
}
/**********函数原型:void ISD_WR_NVCFG(unsigned char apcdatl,apcdath);
功能:将APC数据写入NVCFG寄存器中***********/
void ISD_WR_NVCFG(unsigned char apcdatl,apcdath)
{
ISD_SendData(0x46);
ISD_SendData(apcdatl);
ISD_SendData(apcdath);
SS=1;
}
/***********函数原型:void ISD_LD_NVCFG(void)
功能:将NVCFG数据载入APC寄存器中********/
void ISD_LD_NVCFG(void)
{
ISD_SendData(0x47);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_FWD(void)
功能:放音指针下跳一段,指向下一段语音的起始地址********/
void ISD_FWD(void)
{
ISD_SendData(0x48);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_CHK_MEN(void)
功能:空间检查******/
void ISD_CHK_MEM(void)
{
ISD_SendData(0x49);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_EXTCLK(void)
功能:启用/关闭 外部时钟模式******/
void ISD_EXTCLK(void)
{
ISD_SendData(0x4a);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_SET_PLAY(unsigned char Saddl,Saddh,Eaddl,Eakkh);
功能:定点播放******/
void ISD_SET_PLAY(unsigned char Saddl,Saddh,Eaddl,Eaddh)
{
ISD_SendData(0x80);
ISD_SendData(0x00);
ISD_SendData(Saddl);
ISD_SendData(Saddh);
ISD_SendData(Eaddl);
ISD_SendData(Eaddh);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_SET_Rec(unsigned char Saddl,Saddh,Eaddl,Eakkh);
功能:定点录音******/
void ISD_SET_Rec(unsigned char Saddl,Saddh,Eaddl,Eaddh)
{
ISD_SendData(0x81);
ISD_SendData(0x00);
ISD_SendData(Saddl);
ISD_SendData(Saddh);
ISD_SendData(Eaddl);
ISD_SendData(Eaddh);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void ISD_SET_Erase(unsigned char Saddl,Saddh,Eaddl,Eakkh);
功能:定点录音******/
void ISD_SET_Erase(unsigned char Saddl,Saddh,Eaddl,Eaddh)
{
ISD_SendData(0x82);
ISD_SendData(0x00);
ISD_SendData(Saddl);
ISD_SendData(Saddh);
ISD_SendData(Eaddl);
ISD_SendData(Eaddh);
ISD_SendData(0x00);
SS=1;
}
/***********函数原型:void delay(unsigned int t)***/
void delay(unsigned int t)
{
for(;t>0;t--)
{
TH0=0xFE; //TMOD计数器0,工作方式1,延时1ms,晶振5.7M
TL0=0x00; //FE 23
TR0=1;
while(TF0!=1)
{;}
TF0=0;
TR0=0;
}
}
还不明白QQ517349317
一周热门 更多>