⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at89c51-1700.c.bak

📁 mc51单片机与isd1700芯片的通信程序
💻 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 + -