📄 isd4002rec+pay.c
字号:
#include <intrins.h>
#include <regx51.h>
#define uchar unsigned char
#define uint unsigned int
sbit _mosi = 0xA0; //sbit _mosi = P2_0;
sbit _miso = 0xA1; //sbit _miso = P2_1;
sbit _sclk = 0xA2; //sbit _sclk = P2_2;
sbit _ss = 0xA3; //sbit _ss = P2_3;
sbit _rac = 0xA5; //sbit _rac = P2_5;
sbit _int = 0xA4; //sbit _int = P2_4;
uchar pkey;
void power_up();
void play(uint address);
void record (uint address);
//void stop() ;
void power_down();
void delay(uint x);
void delay(uint x) //1.0ms delay
{
uchar j;
while(x--)
{
for(j=0;j<124;j++)
{;}
}
}
//上电程序00100
void power_up()
{ uint cmd,j;
uchar i;
_sclk=0;
_ss=1;
_ss=0;
cmd=0x2000;
for(i=0;i<16;i++)
{ cmd=_iror_(cmd,1);
j=cmd<<1;
_mosi=CY;
_sclk=1;
_sclk=0;
}
_ss=1;
} //上电程序结束
/*
//停止程序 时间大概205us
void stop()
{ unsigned char i;
unsigned int m,j;
_sclk=0;
_ss=1;
_ss=0;
m=0x3000;
for(i=0;i<16;i++)
{ m=_iror_(m,1);
j=m<<1;
_mosi=CY;
_sclk=1;
_sclk=0;
}
_ss=1;
} //停止程序结束*/
void power_down()
{ unsigned char i;
unsigned int m,j;
_sclk=0;
_ss=1;
_ss=0;
m=0x1000;
for(i=0;i<16;i++)
{ m=_iror_(m,1);
j=m<<1;
_mosi=CY;
_sclk=1;
_sclk=0;
}
_ss=1;
}
/*
void playc(unsigned int x)
{switch(x)
{ case 0: play(0) ; break; //0
case 1: play(13) ; break; //1
case 2: play(26); break; //2
case 3: play(39); break; //3
case 4: play(52); break; //4
case 5: play(65); break; //5
case 6: play(78); break; //6
case 7: play(91); break; //7
case 8: play(104); break; //8
case 9: play(104); break; //9
case 10: play(117); break; //欧
case 11: play(130); break; //千欧
case 12: play(143); break; //十
case 13: play(156); break; //百
case 14: play(169); break; //千
default :break;
}
}
*/
void play(uint address) //放音程序
{ uchar i;
uint j;
power_up();
delay(25); //上电延时25ms
_sclk=0;
address=0xe000 | address;
_ss=0;
for(i=0;i<16;i++) //set play
{ address=_iror_(address,1);
j=address<<1;
_mosi=CY;
_sclk=1;
_sclk=0;
}
_ss=1;
delay(25);
address=0xf000;
_ss=0;
for(i=0;i<16;i++) //play
{
address=_iror_(address,1);
j=address<<1;
_mosi=CY;
_sclk=1;
_sclk=0;
}
P2_7=1;
_ss=1; //是不是到此时就开始正式放音?
delay(800); //每个约放2.6秒
power_down();
delay(30);
_ss=0;
P2_7=0;
}//放音程序结束
//录音程序:地址0---600 13行记录一个13*200=2.6s
void record (uint address)
{
uchar i;
uint j;
power_up(); //上电
delay(25); //上电延时 25mS
power_up(); //上电
delay(50); //上电延时 50mS
_sclk=0;
address=0xa000|address; //set record
_ss=0;
for(i=0;i<16;i++) //set record
{
address=_iror_(address,1);
j=address<<1;
_mosi=CY;
_sclk=1;
_sclk=0;
}
_ss=1;
delay(25);
address=0xb000;
_ss=0;
for(i=0;i<16;i++)
{
address=_iror_(address,1);
j=address<<1;
_mosi=CY;
_sclk=1;
_sclk=0;
}
P2_7=1;
_ss=1; //是不是到此时就开始正式录音??
delay(800);
power_down();
delay(30);
_ss=0;
P2_7=0;
} //录音程序结束
uchar scankey() //键盘扫描,录音和放音控制
{
uchar key,bkey;
P1=0xff;
do
{
key=P1;
}while((key-0xff)==0);
do
{
bkey=P1;
}while((bkey-0xff)!=0);
switch(key)
{
case 0xfe:pkey=1;break;
case 0xfd:pkey=2;break;
default:pkey=0;break;
}
return key;
}
void main()//主函数
{
uint radr,padr;
radr=0;
padr=0;
P1=0xff;
P2=0xff;
power_down();
delay(30);
P2_7=0;
_ss=0;
while(scankey()!=0)
{
switch(pkey)
{
case 1:
{
record(radr);
radr=radr+5;
break;
}
case 2:
{
play(padr);
padr=padr+5;
break;
}
case 0:break;
default:break;
}//end switch
};//endfor
}//end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -