📄 isd4003.c
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit yy_clk = P2^0;
sbit yy_mosi = P2^1;
sbit yy_miso = P2^2;
sbit yy_cs = P2^3;
sbit yy_int = P2^4;
sbit led = P1^2; //
sbit key1 = P1^4; //record key
sbit key2 = P1^5; //playback key
sbit key3 = P1^6; //stop key
void delay (uint x)
{
while(x--);
}
/*sent byte to isd4003 by spi bus*/
void yy_sentbyte(uchar dat)
{
uchar i;
yy_cs = 0;
yy_clk = 0;
for(i=0;i<8;i++)
{
yy_mosi = (bit)(dat & 0x01);
;
yy_clk = 1;
;
yy_clk = 0;
;
dat >>=1;
}
// delay(5);
}
/*stop current operation*/
void yy_stop()
{
yy_sentbyte(0x30);
yy_cs = 1;
delay(20);
}
/*stop current operation and enters power-down mode*/
void yy_stop_power()
{
yy_sentbyte(0x10);
yy_cs = 1;
delay(20);
}
/*power up*/
void yy_powerup()
{
yy_sentbyte(0x20);
yy_cs = 1;
delay(20);
}
/*initiates playback from "add"
and playback*/
void yy_play(uchar addr)
{
yy_sentbyte(addr);
yy_sentbyte(0xe0);
yy_cs = 1;
led = 0;
while(key3)
{
yy_sentbyte(0xf0);
yy_cs = 1;
}
}
/*initiates record from "add",
record from current address unitl "OVF"
is reached*/
void yy_record(uchar addr)
{
yy_sentbyte(addr);
yy_sentbyte(0xa0);
yy_int = 1;
yy_cs = 1;
led = 0;
delay(20);
while(key3)
{
yy_sentbyte(0xb0);
yy_cs = 1;
}
}
main()
{
yy_stop_power();
delay(100);
led = 1;
delay(10);
while(1)
{
if(key1==0)
{
delay(50);
while(key2==0);
yy_powerup();
delay(10);
yy_record(0x20);
yy_stop();
}
if(key2==0)
{
delay(50);
while(key2==0);
yy_powerup();
delay(10);
yy_play(0x20);
yy_stop();
}
yy_stop_power();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -