?? scob.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; //開始計數(shù)
TF0=0;
P1_0=0;
EA=1;
}
void WByte(unsigned char input)
{
//發(fā)送啟始位
unsigned char j=8;
TR0=1;
P1_5 = 0 ;
WaitTF0();
//發(fā)送8位數(shù)據(jù)位
for(j=8;j>0;j--)
{
P1_5 = (input&0x01); //先傳低位
WaitTF0();
input=input>>1;
}
//發(fā)送校驗位(無)
//發(fā)送結(jié)束位
P1_5=1;
WaitTF0();
TR0=0;
}
//查詢計數(shù)器溢出標志位
void WaitTF0( void )
{
while(!TF0);
TF0=0;
}
/***************************************************************
2007.8.17. 加入WDT
2007.8.20.加第0首歌曲可以播放
2007.8.27.加USB自動發(fā)送進入功能
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]);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -