下载;<ISD4000-89C51开发板源程序> 本程序下面的不全,请下载上面的资料查看完整。 //***************************************************** // ISD4002-89c51开发板演示例程 C51版本 * // 作者:中青世纪 Lell * // 2008.2.27 * // * // 更多ISD4000使用心得请登陆中青世纪论坛 * // http://www.atvoc.com/bbs * // * //***************************************************** #include <reg51.h> sbit SS = P1^0; //片选 sbit SCLK = P1^1; //ISD4003时钟 sbit MOSI = P1^2; //数据输入 sbit MISO = P1^3; //数据输出 sbit LED = P1^7; //指示灯 sbit ISD_INT= P3^2; //中断 sbit AN = P1^6; //执行 sbit STOP = P1^5; //复位 sbit PR = P1^4; //PR=1录音? PR=0放音 void delay(unsigned int time) //延迟n微秒 { while(time!=0) { time-- ; } } void delayms(unsigned int time) //延迟n毫秒 { TMOD=0x01; for(time;time>0;time--) { TH0=0xfc; TL0=0x18; TR0=1; while(TF0!=1) {;} TF0=0; TR0=0; } } //************************************ //ISD4002 spi串行发送子程序,8位数据 //************************************ void spi_send(unsigned char isdx) { unsigned char isx_counter; SS=0; //ss=0,打开spi通信端 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); } } //******************************* //发送stop指令 //******************************* void isd_stop(void) { delay(10); spi_send(0x30); SS=1; delayms(50); } //******************************* //发送上电指令,并延迟50ms //******************************* void isd_pu(void) { delay(10); SS=0; spi_send(0x20); SS=1; delayms(50); } //******************************* //发送掉电指令,并延迟50ms //******************************* void isd_pd(void) { delay(10); spi_send(0x10); SS=1; delayms(50); } //******************************* //发送play指令 //******************************* void isd_play(void) { LED=0; spi_send(0xf0); SS=1; } //******************************* //发送rec指令 //******************************* void isd_rec(void) { LED=0; spi_send(0xb0); SS=1; } //******************************* //发送setplay指令 //******************************* void isd_setplay(unsigned char adl,unsigned char adh) { spi_send(adl); //发送放音起始地址低位 adh=adh|0xe0; spi_send(adh); //发送放音起始地址高位 SS=1; } //******************************* //发送setrec指令 //******************************* void isd_setrec(unsigned char adl,unsigned char adh) { spi_send(adl); //发送放音起始地址低位 adh=adh|0xa0; spi_send(adh); //发送放音起始地址高位 SS=1; } |