|
/*spi isd4004.h*/ #i nclude "reg51.h" #i nclude "intrins.h" sbit _cs = p0^0; sbit _sclk= p0^3; sbit _mosi= p0^1; sbit _miso= p0^2; sbit _rac = p0^4; sbit _int = p0^5; void delay(unsigned int i) //延時程序 { while(i--); }
void stopmode() //停止 { unsigned char m,i,j; _cs=1; _sclk=0; _cs=0; m=0x30; for(i=0;i<8;i++) { m=_cror_(m,1); j=m<<1; _mosi=cy; _sclk=0; _sclk=1; } _cs=1; } void powerdown() //下電 { unsigned char m,i,j; _cs=1; _sclk=0; _cs=0; m=0x10; for(i=0;i<8;i++) { m=_cror_(m,1); j=m<<1; _mosi=cy; _sclk=0; _sclk=1; } _cs=1; } void powerup() 上電 { unsigned char m,i,j; _cs=1; _sclk=0; _cs=0; m=0x20; for(i=0;i<8;i++) { m=_cror_(m,1); j=m<<1; _mosi=cy; _sclk=0; _sclk=1; } _cs=1; } void record4004(unsigned int address) 錄音 address--錄音地址 0---2400 { unsigned char i,m,j; unsigned int datasoute=0; powerup(); delay(5118);//上電延時 powerup(); delay(5118);//上電延時 delay(5118);//上電延時 _cs=1; _sclk=0; m=0xa0; _cs=0; for(i=0;i<16;i++) { address=_iror_(address,1); datasoute=address<<1; _mosi=cy; _sclk=0; _sclk=1; } for(i=0;i<8;i++) { m=_cror_(m,1); j=m<<1; _mosi=cy; _sclk=0; _sclk=1; } _cs=1; _sclk=0; m=0xb0; _cs=0;
for(i=0;i<8;i++) { m=_cror_(m,1); j=m<<1; _mosi=cy; _sclk=0; _sclk=1; } _cs=1; p0=0xff; datasoute=0; while(_int==1) //存儲地址換行標(biāo)志 { if(_rac) {delay(20000); datasoute++; } //記錄本次錄音所占的行數(shù)(也就是本次錄音有多大) // // 在這里應(yīng)該加上自己的程序,就是錄音退出程序 // } }//while end; void audioout(unsigned int address) //放音程序 { unsigned char i,m,j; unsigned int datasoute; powerup(); _cs=1; _sclk=0; _cs=0; m=0xe0; for(i=0;i<16;i++) { address=_iror_(address,1); datasoute=address<<1; _sclk=0; _mosi=cy; _sclk=1; } for(i=0;i<8;i++) { m=_cror_(m,1); j=m<<1; _sclk=0; _mosi=cy; _sclk=1; }
_cs=1; _sclk=0; m=0xf0; _cs=0; for(i=0;i<8;i++) { m=_cror_(m,1); j=m<<1; _sclk=0; _mosi=cy; _sclk=1; } _cs=1; p0=0xff; while(_int==1) { }//while end; } main() { record4004(0); audioout(0); while(1); } <!--mstheme--> |