📄 基于at89c51语音存储与回放.txt
字号:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit cs_0820=P1^0;
sbit wr_0820=P1^1;
sbit red_0820=P1^2;
sbit int_0820=P1^3;
sbit ncs1=P1^4;
sbit cs2=P1^5;
sbit we=P1^6;
sbit oe=P1^7;
sbit A16=P3^7;
sbit ls373=P3^6;
sbit cs0832=P3^1;
sbit ile=P3^0;
sbit wr1=P3^5;
sbit wr2=P3^4;
uchar key=0; //键值
uchar keycounter=0;//有新按键标志位
uchar value1,value2,base; //value1AD读入数据,value2处理后存入RAM数据,base基植。
uchar addressl=0x00,addressh=0x00,s=0x00;//addresslRAM低8位地址, addressh RAM高8位地址。
void red0820() //AD转换数据读取程序//
{wr_0820=1;
red_0820=1;
cs_0820=1;
_nop_();
_nop_();
_nop_();
cs_0820=0;
_nop_();
_nop_();
while(wr_0820!=0){};
red_0820=0;
while(int_0820){};
while(wr_0820==0){};
_nop_();
value1=P0;
red_0820=1;
cs_0820=1;
wr_0820=1;
}
/*uchar dec0820() //转换程序//
{
uchar flag,value;
if(value1>=base)
{ flag=0;
if(value1-base>7)value=7;
else value=value1-base;
}
else
{ flag=1;
if(base-value1>8)value=8;
else value=base-value1;
}
return((flag<<3)|value); ////////////////
} */
void w628128()
{
uchar a,b;//P0=0xff;
addressl=0;addressh=0;A16=0;s=0; TR0=1; TF0=0;
while(1)
{
while(!TF0); //////////////////////////////////////////
TF0=0;
red0820();
/*a=dec0820();
while(!TF0);
TF0=0;
red0820();
b=dec0820();
value2=(b<<4)|a; */
if(addressl==0xff)
{ if((s==1)&&(addressh==0xff))addressl=0xff; ////////////
else { addressl=0x00;
if(addressh==0xff){ addressh=0x00;A16=1;s=1;} //////////
else addressh++; }
}
else {addressl++; }
ls373=1;
_nop_();
_nop_();
P0=addressl;
_nop_();
_nop_();
ls373=0;
P2=addressh;
_nop_();
_nop_();
ncs1=0;
cs2=1;
we=0;
_nop_();
_nop_();
_nop_();
P0=value1;
_nop_();
_nop_();
_nop_();
we=1;
ncs1=1;
cs2=0;
P0=0xff;
if(key==0x70){ //////////////////////////////////
while(key==0x70){TR0=0;};
TR0=1;
}
if(key==0x5a)break;
if((addressl==0xff)&&(addressh==0xff)&&(s==1))break; } //////
key=0x00;
TR0=0;
TF0=0;
}
uchar r628128()
{
uchar value;
ls373=1;
_nop_();
_nop_();
P0=addressl;
_nop_();
_nop_();
ls373=0;
_nop_();
_nop_();
P2=addressh;
_nop_();
_nop_();
ncs1=0;
cs2=1;
_nop_();
_nop_();
P0=0xff;
oe=0;
_nop_();
_nop_();
value=P0; //////////////////////////////////////////
_nop_();
_nop_();
ncs1=1;
cs2=0;
oe=1;
return(value);
}
void DA0832()
{
uchar value,pout1,pout2;
s=0;
wr1=1;wr2=1;addressl=0;addressh=0;A16=0;s=0; TR0=1; TF0=0;
while(1)
{
if(addressl==0xff)
{ if((s==1)&&(addressh==0xff))addressl=0xff; /////////////////////
else { addressl=0x00;
if(addressh==0xff){ addressh=0x00;A16=1;s=1;} ///////////////////
else addressh++; }
}
else {addressl++; }
value=r628128();
/* pout1=value&0x0f;
if(pout1<=7)pout1=pout1+base;
else if(pout1==8)pout1=base-8;
else pout1=base-(pout1&0x07);
pout2=value>>4;
if(pout2<=7)pout2=pout2+base;
else if(pout2==8)pout2=base-8;
else pout2=base-(pout2&0x07); */
while(!TF0);
TF0=0;
ile=1;
cs0832=0;
_nop_();
_nop_();
P0=value;
_nop_();
_nop_();
wr1=0; /////////////////////////////
// _nop_();
//_nop_();
// wr1=1; ////////////////////////
// _nop_();
// _nop_();
wr2=0;
_nop_();
_nop_();
wr1=1;
wr2=1;
_nop_();
_nop_();
cs0832=1;
ile=0;
/* while(!TF0);
TF0=0;
ile=1;
cs0832=0;
_nop_();
_nop_();
P0=pout2; //////////////////////////////
_nop_();
_nop_();
wr1=0;
// _nop_();
//_nop_();
// wr1=1;
// _nop_();
// _nop_();
wr2=0;
_nop_();
_nop_();
wr1=1;
wr2=1;
_nop_();
_nop_();
ile=0;
cs0832=1; */
if(key==0x70){
while(key==0x70){TR0=0;};
TR0=1;
}
if(key==0x5a)break;
if((addressl==0xff)&&(addressh==0xff)&&(s==1))break;
}
key=0x00;
TR0=0;
TF0=0;
}
void delay100ms() ///////////////////////////
{
uchar i,j,k;
for(i=0;i<8;i++){
for(j=0;j<25;j++){
for(k=0;k<250;k++);
}}}
void main()
{
key_clk=1;key_data=1;
P0=0xff;
EX0=1;
EA=0;
ET0=0;
oe=1;
we=1;
ncs1=1;
cs2=0;
wr_0820=1;
int_0820=1;
red_0820=1;
cs_0820=1;
ile=0;
cs0832=1;
TMOD=0x02;
TH0=0x40;
TL0=0x40;
delay100ms();
delay100ms();
delay100ms();
EA=1;
while(1){
// keycounter=0;
// while(keycounter==0){}; ///////////////////////
if(key==0x69)
{
delay100ms();
red0820();
base=value1;
w628128();
addressl=0;
addressh=0;
A16=0;
}
// keycounter=0;
//while(keycounter==0){};
if(key==0x72)
{
TR0=1;
DA0832();
addressl=0;
addressh=0;
A16=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -