📄 isd4002.c
字号:
/*isd4002.c
该程序用于对ISD4002写入指令,利用单片机的IO口根据SPI传输协议传输数据。
*/
#include "isd4002.h"
/*函数 :delay()
功能 :实现纳秒级的短延时
说明:
*/
void delay( unsigned int time)
{
while( time!=0)
{
time--;
}
}
/*函数: delayms()
功能: 实现毫秒级的延时
说明:time决定了延时的毫秒数,该延时主要用于对ISD4002写入指令的时序控制
*/
void delayms(unsigned int time)
{ TMOD=0x01;
for (time;time>0;time--) //一次循环实现1ms的延时
{ TH0=0xfc;
TL0=0x18;
TR0=1;
while (TF0!=1) {;}
TF0=0;
TR0=0;
}
}
/*函数:spi_send()
功能: 实现单片机和ISD4002的通讯,一次传送一个字节
说明:数据传输的时序遵循了SPI传输协议
*/
void spi_send(unsigned char isdx)
{
unsigned char isx_counter;
SS=0; //选中ISD4002
SCLK=0;
for( isx_counter=0;isx_counter<8;isx_counter++)
{
if((isdx&0x01)==1)
MOSI=1;
else
MOSI=0;
isdx=isdx>>1;
SCLK=1; //上升沿锁存数据
delay(2);
SCLK=0;
delay(2);
}
}
/*函数:isd_stop()
功能:让ISD4002停止操作,原地待命
说明:
*/
void isd_stop(void)
{
delay (10);
spi_send(0x30);
SS=1;
delayms(50);
}
/*函数:isd_pu()
功能:给ISD4002上电
说明:
*/
void isd_pu(void)
{
delay(10);
SS=0;
spi_send(0x20);
SS=1;
}
/*函数:isd_play
功能: 让ISD4002开始放音
说明:
*/
void isd_play (void)
{
spi_send(0xf0);
SS=1;
}
/*函数:isd_rec()
功能:录音指令‘
说明:
*/
void isd_rec(void)
{
spi_send(0xb0);
SS=1;
}
/*函数:isd_setplay()
功能:设定放音的起始地址
说明:
*/
void isd_setplay(unsigned char adl, unsigned char adh)
{
spi_send(adl);
adh=adh|0xe0;
spi_send(adh);
SS=1;
}
/*函数:isd_setrec()
功能:设定录音的起始地址
说明:
*/
void isd_setrec(unsigned char adl,unsigned char adh)
{
spi_send(adl);
adh=adh|0xa0;
spi_send(adh);
SS=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -