📄 at89c51-1700.c.bak
字号:
#include <reg51.h>
sbit SS= P1^0;
sbit SCLK= P3^4;
sbit MOSI= P3^2;
sbit MISO= P1^0;
sbit LED= P1^1;
sbit AN= P1^2;
sbit STOP= P1^3;
sbit PR= P1^4;
sbit MORA= P2^7;
void main( )
{
unsigned char apc1,apc2;
SP=0x70;
P1=0xff;
P2=0xff;
P3=0xff;
P0=0xff;
EA=0;
rest( );
DSTOP( );
LED=1;
if(STOP=0)
{
mrest( );
}
do{}while(AN==1);
delay( );
if(AN==0)
{
UP( );
switch(MORA)
{
case 1 : apc1=0x40;
apc2=0x04;
break;
case 0 : apc1=0x80;
apc2=0x04;
break;
default : break;
}
wr_apc(apc1,apc2);
waitrdy( );
while(1)
{
clrint( );
waitrdy( );
chk_mem( );
switch(PR)
{
case 1 : rec( );
break;
case 0 : play( );
break;
default : break;
}
}
}
}
void rec( )
{
bdata unsigned char resta;
unsigned char i;
delayms(50);
do
{
resta=SPOI(0x41);
resta=SPOI(0x00);
SS=1;
resta=chesr1( );
}while(resta^3==0);
LED=0;
for(i=0;i<200;i++)
{
while(AN==0)
{
checkfull( );
}
}
LED=1;
clrint( );
stopp( );
if(STOP==0) mrest( );
do{ }while(AN==1);
clrint( );
stopp( );
}
void play( )
{
bdata unsigned char resr;
do{ }while(AN==0);
do
{
resr=SPOI(0x40);
resr=SPOI(0x00);
SS=1;
resr=chesr0( );
}while(resr^0==1);
LED=0;
do
{
if(STOP==0) mrest( );
}
}
void delay10ms( )
{
TMOD=0x01;
TH0=0xD8;
TL0=0xf0;
TR0=1;
do{ }while{!TF0);
TR0=0;
TF0=0;
}
void delayms(unsigned char ts)
{
unsigned char j;
for(j=0;j<ts;j++)
{
delay10ms( );
}
}
unsigned char SPOI(unsigned char instr)
{
bdata unsigned char ret;
unsigned char i;
bit m;
SCLK=1;
SS=0;
for(i=0;i<8;i++)
{
SLCK=0;
_nop_( );
_nop_( );
m=MISO;
resta^i=m;
m=instr^i;
SCLK=1;
}
MOSI=0;
return resta;
}
unsigned char chesr1( )
{
rdstatus( );
unsigned char sr1;
sr1=SPOI(0x05);
sr1=SPOI(0x00);
sr1=SPOI(0x00);
return sr1;
}
void writerdy( )
{
unsigned char resr;
do
{
resr=chesr1( );
}while(resr^0==0);
}
void rdstatus( )
{
unsigned char resr;
resr=SPOI(0x05);
resr=SPOI(0x00);
resr=SPOI(0x00);
SS=1;
}
unsigned char chesr0( )
{
rdstatus( );
unsigned char sr0;
sr1=SPOI(0x05);
return sr0;
}
void clrint( )
{
unsigned char i;
i=SPOI(0x04);
i=SPOI(0x00);
SS=1;
delayms(10);
}
void powerup( )
{
unsigned char i;
i=SPOI(0x01);
i-SPOI(0x00);
SS=1;
delayms(10);
}
void stopp( )
{
unsigned char i;
i=SPOI(0x02);
i=SPOI(0x00);
SS=1;
delayms(10);
}
void chk_mem( )
{
unsigned char i;
i=SPOI(0x49);
i=SPOI(0x00);
SS=1;
delayms(10);
}
void fwd( )
{
unsigned char i;
i=SPOI(0x48);
i=SPOI(0x00);
SS=1;
delayms(10);
}
void dstop( )
{
unsigned char i;
i=SPOI(0x07);
i=SPOI(0x00);
SS=1;
delayms(10);
}
void gerase( )
{
unsigned char i;
i=SPOI(0x43);
i=SPOI(0x00);
SS=1;
delayms(10);
}
void rest( )
{
unsigned char i;
i=SPOI(0x03);
i=SPOI(0x00);
SS=1;
delayms(10);
}
void wr_apc(unsigned char a1,unsigned char a2)
{
unsigned char i;
i=SPOI(0x65);
i=SPOI(a1);
i=SPOI(a2);
SS=1;
delayms(10);
}
void checkfull( )
{
bdata unsigned char i;
unsigned char j;
rdstatus( );
i=SPOI(05);
if(i^1==1)
{
while(1)
{
LED=1;
for(j=0;j<10;j++)
{
delayms(5);
if(AN==0) mrest( );
}
LED=0;
for(j=0;j<10;j++)
{
delayms(5);
if(AN==0) mrest( );
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -