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

📄 scob.c

📁 串口小程序
💻 C
字号:
#include <reg52.h>
#include <stdio.h>
#include <string.h>
#include "SCON.h"


unsigned char sent_data[3] , re_data[12]  , _sign=1 ;
void mp3_stop(  );
void delay(  );
void small_delay(  );

void file_selec(  );
void WaitTF0( void );
void  UART_INT( )
    {

	SCON = 0x50;
	PCON = 0x80;
	TMOD = 0x22;
    TL1 = 0xf3;
	TH1 = 0xf3;  /* 20MHz晶振, 9600bps */
	TR1 = 1;
	TI = 1;
	RI =0;
	ES = 1;
}

void S2INI(void)
{   ET0=1;   
    TL0=0x30; 
    TH0=0x30;                //开始计数
    TF0=0;
    P1_0=0;
	EA=1;
}

void  WByte(unsigned char input)
{
    //发送启始位
    unsigned char j=8;
    TR0=1;
     P1_5 = 0 ;
    WaitTF0();
    //发送8位数据位
   for(j=8;j>0;j--)
    {
        P1_5 = (input&0x01);     //先传低位
        WaitTF0();
        input=input>>1;
    }
    //发送校验位(无)
    //发送结束位
    P1_5=1;
    WaitTF0();
    TR0=0;
}    
//查询计数器溢出标志位
void WaitTF0( void )
{
    while(!TF0);
    TF0=0;
}
/***************************************************************
2007.8.17. 加入WDT
2007.8.20.加第0首歌曲可以播放
2007.8.27.加USB自动发送进入功能
2007.9.7. 加USB自动进入退出不会自动进去!




****************************************************************/

void main (  )
{

   
  unsigned char i, address , usb_sign=1,back_count=0;
  unsigned int  m_big_count=0 ;     
      WDT=0x06;
       UART_INT( );
       S2INI(  );
	   

        delay(  );    
      delay(  ); 

      delay(  );
	  
      delay(  );  
      delay(  );
	 
      
     if(P1_0==1)
    {        
	  delay(  );  
      delay(  );  
      delay(  );    
      delay(  );    
      delay(  );  
      delay(  );    
      delay(  );  
      delay(  );
        sent_data[0]=0;
        sent_data[1]=0;
        sent_data[2]=3;
            for(i=0;i<3;i++)
	    	{
              WByte(sent_data[i]);
            }
        delay(  );    
	   
       
        
    while(1) 
	{
      if((P3_2==0)&&(back_count<9))
	  {
	    delay(  );  
    
        P1_1=0;
  	    delay(  );
	    P1_1=1;
  	    delay(  );
        P1_1=0;
  	    delay(  );
        P1_1=1;
        sent_data[0]=0;
        sent_data[1]=0;
        sent_data[2]=2;
            for(i=0;i<3;i++)
	    	{
              WByte(sent_data[i]);
            }
	 	 delay(  );
         delay(  );
         delay(  );
        
       }  
     
      
          m_big_count++;
       if(m_big_count==60000)
        {
         m_big_count=0;
         back_count++ ;
        }

     }   
	 
	  
       
  }
	while(1)
	{     
	 for(i=0;i<12;i++)
	 {
     while(RI!=1)
	 {
   	 }
     RI=0;
	 WDT= WDT|0x20;
     re_data[i]=SBUF;

     WDT= WDT|0x10;
     }

     WDT= WDT|0x30;
	  
  

       address =  P2;
	   WDT = WDT&0xDF;
     if((re_data[0]==254)&(re_data[1]==1)&(re_data[2]==0)&(re_data[3]==8)&(address==re_data[5]))   //10 data  input address
      {
	        mp3_stop(  );                //停止正在播放的歌曲
           small_delay(  );
            
           
            
            
	     if((re_data[6]!=65)&&(_sign==1))
	     {
           if(((re_data[10]&0x81)==0x81)&&((re_data[10]&0x82)!=0x82))
	    	{
	      	 sent_data[0]=0;
	    	 sent_data[1]=re_data[8];
             
             file_selec(  );
            }
	    	if(((re_data[10]&0x82)==0x82)&&((re_data[10]&0x81)!=0x81))
	    	{
	       	 sent_data[0]=re_data[7];
		     sent_data[1]=0;          
             file_selec(  );
	    	}
            if((re_data[10]&0x83)==0x83)
		    {
		     sent_data[0]=re_data[7];
		     sent_data[1]=re_data[8];
             file_selec(  );
            }
          

    	 }
       if(re_data[6]==65)
		{

          _sign=!_sign;
        /*
        sent_data[0]=0;
        sent_data[1]=0;
        sent_data[2]=2;
            for(i=0;i<3;i++)
	    	{
              WByte(sent_data[i]);
            }
			*/			
		}

       }

      if(  (re_data[0]==0)&(re_data[1]==0)&(re_data[2]==0)&(re_data[3]==0))  //in USB
	  {

        P1_1=0;
  	    delay(  );
	    P1_1=1;
  	    delay(  );
        P1_1=0;
  	    delay(  );
        P1_1=1;
        sent_data[0]=0;
        sent_data[1]=0;
        sent_data[2]=2;
            for(i=0;i<3;i++)
	    	{
              WByte(sent_data[i]);
            }
	 	 delay(  );
         delay(  );
         delay(  );
         delay(  );
         delay(  );
	    }


     if( (re_data[0]==0xaa)&&(re_data[6]==0xaa )&&(re_data[1]==re_data[7]))
       {
          
           if( re_data[1]==0x18)
           {
             if((re_data[2]<=0x1f)&&(re_data[3]<=0x1f))
              {
                 sent_data[0]=re_data[2];
                 sent_data[1]=re_data[3];
                 sent_data[2]=9;                                                       // voice change   9
                 for(i=0;i<3;i++)
                 {
                   WByte(sent_data[i]);
                  }
           
              }


           }
          if( re_data[1]==0x15)
           { 
        sent_data[0]=0;
        sent_data[1]=0;
        sent_data[2]=8;
            for(i=0;i<3;i++)
	    	{
              WByte(sent_data[i]);
            }
           }
       }
	  
     for(i=0;i<12;i++)
	 {     
     SBUF=re_data[i];
	 
	 while(TI!=1);
	 TI=0;
     }
      
    
   }

}
void delay(  )
{
unsigned char  a ,b,c;
 for(a=0;a<201;a++)
 for(b=0;b<90;b++)
 for(c=0;c<2;c++);


}
void small_delay(  )
 {

unsigned char  a ,b,c;
 for(a=0;a<200;a++)
 for(b=0;b<90;b++)
 for(c=0;c<1;c++);



 }


void file_selec(  )
 {
  unsigned int  song_num=0 ;
  unsigned char  i ,j;
 song_num=sent_data[0]*256+sent_data[1];
                                          

 if((song_num>=0)&(song_num<1025))
  { 
     sent_data[2]=0;                                                   //0 song
    for(i=0;i<3;i++)
    {
       WByte(sent_data[i]);
	}
  sent_data[0]=0;
  sent_data[1]=0;
  sent_data[2]=2;                                                   //fun  2
    delay(  );
   for(i=0;i<2;i++)
   {
     for(j=0;j<3;j++)
       {
        WByte(sent_data[j]);

	   }
     delay(  );
   }
 
   
   }
 

}

void mp3_stop(  )
 {
   char  j ;
    
    sent_data[0]=0;
    sent_data[1]=0;
    sent_data[2]=8;    


 for(j=0;j<3;j++)
       {
        WByte(sent_data[j]);
	   }



 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -