今天调试语音芯片ISD4003 上电的命令有效果 就是录音的命令没放映 RAC脚一直都是高电平 请问有谁用过ISD4003没 帮帮看下程序 谢谢!
#include "reg51.h" #include "intrins.h"
#define OUTPUT_LOW(PIN) PIN=0 #define OUTPUT_HIGH(PIN) PIN=1
sbit _ss=P1^3; sbit _sclk=P1^0; sbit _mosi=P1^1; //sbit _miso=P1^2; //sbit _rac=P1^3; //sbit _int=P3^2;
void delayms(unsigned int i); void stopmode(void); void powerup(void); void powerdown(void); void record(unsigned int address); void spiwrite(unsigned int ch);
void delayms(unsigned int time) { TMOD=0x01; for(time;time>0;time--) { TH0=0xF0; TL0=0x10; // TR0=1; // while(TF0!=1) {;}
TF0=0; TR0=0; } } void spiwrite(unsigned int ch) { unsigned char i; _ss=0; for(i=0;i<16;i++) { OUTPUT_LOW(_sclk); if(ch&0x0001) OUTPUT_HIGH(_mosi); else OUTPUT_LOW(_mosi); _nop_(); _nop_(); _nop_(); _nop_();
OUTPUT_HIGH(_sclk); _nop_(); _nop_(); _nop_(); _nop_(); ch>>=1; OUTPUT_LOW(_sclk); } _ss=1; } void stopmode(void) //Í { unsigned char m; m=0x30; spiwrite(m); }
void powerdown(void) // { unsigned int m; m=0x1000; spiwrite(m); }
void powerup(void) // { unsigned int m; m=0x2000; spiwrite(m); } void record(unsigned int address) // { unsigned char i; unsigned int m; powerup(); delayms(30); powerup(); delayms(60); //上电延时 _ss=0; //Òô address&=0x07ff; address|=0xA000; for(i=0;i<16;i++) { OUTPUT_LOW(_sclk); if(address&0x0001) OUTPUT_HIGH(_mosi); else OUTPUT_LOW(_mosi); _nop_(); _nop_();_nop_(); _nop_();
OUTPUT_HIGH(_sclk); _nop_(); _nop_(); address>>=1; OUTPUT_LOW(_sclk); } _ss=1; delayms(10); m=0xb000; spiwrite(m); delayms(10); }
void audioout(unsigned int address) // { unsigned char i; unsigned int m;
powerup(); delayms(50); _ss=0; address&=0x7ff; address|=0xE000; for(i=0;i<16;i++) { OUTPUT_LOW(_sclk); if(address&0x0001) OUTPUT_HIGH(_mosi); else OUTPUT_LOW(_mosi); _nop_(); _nop_(); _nop_(); _nop_(); OUTPUT_HIGH(_sclk); _nop_(); _nop_(); address>>=1; OUTPUT_LOW(_sclk); } _ss=1; delayms(10); m=0xf000; spiwrite(m); delayms(10); }
void main() { delayms(4000); record(0x0000);//写录音命令 //delayms(4000); //audioout(0xE000); //放音命令 while(1) { ; } }
|