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

📄 controlpt2259.c

📁 此源码是一个电控调音
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

#define NULL        0
#define STOP        1
#define PLAY        2
#define REC         3
#define FFW         4
#define REW         5
#define PAUSE       6
#define LY6658      7
#define DELAY_TIME  100     //
#define BS6658      11    /*  变速  */
#define FD6658      12    /*  复读  */
#define GD6658      13    /*  跟读  */
#define DB6658      14    /*  对比  */
#define DB16658      15    /*  对比  */


#define fz  MOT1=0; MOT2=1;
#define zz  MOT1=1; MOT2=0;
#define tz  MOT1=1; MOT2=1;
#define WAIT { _nop_(); _nop_(); _nop_(); _nop_();_nop_();_nop_();  }

sbit MOT1 =  P1^0;
sbit MOT2 =  P1^7;    //电机正反转
sbit RecEn = P3^7;  
sbit Fast =  P1^2;
sbit Mute =  P1^4;   
sbit HR =    P3^2;

sbit SCL = P1^3;
sbit SDA = P1^5;
sbit REC_EN = P1^1;



sbit PIN_CD6658_DATAOUT  =   P1^6;
sbit PIN_CD6658_CLOCK    =   P3^3;
sbit PIN_CD6658_READY    =   P3^5;
sbit PIN_CD6658_RESET    =   P3^4;

bdata char CF;
sbit  RUN = CF^0;
sbit  RF  = CF^1;
sbit  MODI = CF^2;
sbit  C_HL = CF^3;
sbit  Cute = CF^4;





uchar code  base=40;  //20

//uchar code LED[]={0xbe,0x06,0x7c,0x5e,0xc6,0xda,0xfa,0x0e,0xfe,0xde,0xee,0xf2,0xb8,0x76,0xf8,0xe8,0xba,0xe6};//S7001A
//uchar  LCDdat[16];
uchar  LastFUN,CurrentFUN,RemoteFUN,Cd6658FUN;
uint   AutoStop,CountNub;
uchar  RevDat,RevDat1,RevDat2;
uchar  Volume,Curr_Volume;
uchar  set_1,SPEED,C_vmute,Fspeed;


/*
void delay_1(uint t)
{
while(t!=0)
t--;
}
*/

void delay(uint x)
{
 unsigned char j;
 EA = 0;
 while(x--){
   for(j=0;j<125;j++);
 }
 EA = 1;
}


void delay_1 (uchar us)
{
  while (us--);
}



void PT2259_Start(void)
{
  //SCL  = 0;
  SCL  = 1;
  SDA = 1;

  WAIT;
  SDA = 0;
 // WAIT;
  //SCL = 0;
}
//-----------------------------------------

void PT2259_Stop(void)
{

    SCL  = 1;
    SDA = 0;
    WAIT;
    SDA = 1;

}

void PT2259_WriteByte( uchar ucData )
{
 uchar i;

    for( i = 0; i < 8; i++)
    {
      SCL  = 0;
      WAIT;
      SDA = ((ucData & 0x80) == 0x80);
      WAIT;
      SCL  = 1;
      WAIT;
      ucData <<= 1;

    }
     SCL  = 0;
     SDA = 1;
     SCL  = 1;


}
void PT2259_Set( uchar ucData10DB,uchar ucData1DB )
{
  
  PT2259_Start();
  PT2259_WriteByte( 0x88 );
  PT2259_WriteByte( ucData10DB );
  PT2259_WriteByte( ucData1DB  );
  PT2259_Stop();
}

void PT2259_Clear()
{
 PT2259_Start();
 PT2259_WriteByte( 0x88);  // is PT2259 address
 PT2259_WriteByte( 0xf0 ); // clear register
 PT2259_Stop();
}

void PT2259_OpenVolume(uchar Data)
{
 PT2259_Start();
 PT2259_WriteByte( 0x88);  // is PT2259 address
 PT2259_WriteByte( Data ); // clear register
 PT2259_Stop();

}


void CD6658_SendCommand(uchar Keyvol)
{
   uchar i,j;
   //EX1=0;
 
    for(i=0;i<300;i++)
       {
         PIN_CD6658_CLOCK = 1;     //释放DATA CLOCK 线
         PIN_CD6658_DATAOUT=1;
         delay_1(2); 
            
      if( PIN_CD6658_READY == 1)  //若READY信号边高
         {
         PIN_CD6658_CLOCK = 0;      //时钟信号变低
         delay_1(1);    
        
             if( PIN_CD6658_READY == 1)  //若READY信号边高
                       { 
       
                         for (j=0; j<=2; j++) 
               
                             {
                                             //发送三位键值
                              PIN_CD6658_CLOCK = 0;
                              if (((Keyvol << j) & 0x80) == 0x80)
                                  PIN_CD6658_DATAOUT = 1;                 
                                  else 
                                  PIN_CD6658_DATAOUT = 0;    
                                  PIN_CD6658_CLOCK = 1;
                                  delay_1(2); 
                                    }      
                          PIN_CD6658_CLOCK = 1;     //释放DATA CLOCK 线
                          PIN_CD6658_DATAOUT=1;
                          delay_1(20);
                          goto Send_ok;
        	   
                        } 
     
             }

}

Send_ok:
   
   delay_1(1);
 //EX1=1;

}




void Count(void) interrupt  0 using 1{

  if (RF){
   if (CountNub<9999)
    CountNub++;
   else
    CountNub = 0;
  }else{
   if (CountNub>0)
    CountNub--;
   else
    CountNub = 9999;
       }
  RUN = 1;

  }


void Timer(void) interrupt 1 using 3{
 TL0=-(6000 % 256 );  TH0=-(6000 / 256);
 if ((CurrentFUN!=STOP) && (CurrentFUN!=PAUSE))
                  AutoStop++;
                                     }
									 									 									
void Comm(void) interrupt 4 using 2{
  RI = 0;
  ES = 0;
  RevDat = SBUF;
  RevDat1=RevDat;

  switch(RevDat)
  {
   case 0x30: RemoteFUN = PLAY;    break;
   case 0x32: RemoteFUN = STOP;    break;
   case 0x34: RemoteFUN = REW;     break;
   case 0x35: RemoteFUN = REC;     break;
   case 0x31: RemoteFUN = PAUSE;   break;
   case 0x33: RemoteFUN = FFW;     break;
   case 0x20: RemoteFUN = BS6658;  break;      /*  变速  */
   case 0x21: RemoteFUN = FD6658;  break;      /*  复读  */
   case 0x22: RemoteFUN = GD6658;  break;      /*  跟读  */
   case 0x23: RemoteFUN = DB6658;  break;      /*  对比  */
   case 0x24: RemoteFUN = LY6658;  break; 
  // case 0x9f: Mute=0;      break;    //自习
  // case 0x9b: Mute=1;      break;    //授课    //考试
  // case 0x98: Mute=1;      break;    //讨论
  // case 0x90: Mute=0;      break; 
  // case 0x91: Mute=0;      break;
  // case 0x92: Mute=0;      break;
  // case 0x93: Mute=0;      break;
  // case 0x94: Mute=0;      break;
  // case 0x95: Mute=0;      break;
  // case 0x96: Mute=0;      break;
  // case 0x97: Mute=0;      break;
  // case 0x99: Mute=0;      break;
  // case 0x9a: Mute=0;      break;
  // case 0x9c: Mute=0;      break;
  // case 0x9d: Mute=0;      break;
  // case 0x9e: Mute=0;      break;





  default:
     if((RevDat>0x7f)&&(RevDat<0x90))
        {
            Volume = RevDat;                 
          MODI=1;
        }                      break;
   
 
    }






   ES = 1;
return;
}

void Stop()
{
 if (CurrentFUN!=STOP){
  if ((CurrentFUN==PLAY)||(CurrentFUN=FFW)){
     Fast =0;
     fz
     delay(30*base);//*base
      }
 tz
 }
 CurrentFUN=STOP;
 REC_EN=0;

Mute = 1;
}

void Play()
{
 /* PLAY */
  if(CurrentFUN == PAUSE)
         zz
  if ((CurrentFUN!=PAUSE) && (CurrentFUN!=REC)){
         Fast = 0;
 
  if((CurrentFUN == FFW)||(CurrentFUN == REW))
           {
           Stop();
        // fz
         //delay(30*base);//*base
           }
         zz
         }




RF = 1;
CurrentFUN=PLAY;
Mute = 0;

 if(Cd6658FUN==FD6658){
                 switch(Fspeed)
                    {
                case 0:                            Fspeed=0;  break; 
                case 1: CD6658_SendCommand(0x80);
                        CD6658_SendCommand(0x80);
                         CD6658_SendCommand(0x80);
                         CD6658_SendCommand(0x80); Fspeed=0;  break;
                case 2: CD6658_SendCommand(0x80);
                         CD6658_SendCommand(0x80);
                         CD6658_SendCommand(0x80); Fspeed=0;  break;
                 case 3: CD6658_SendCommand(0x80);
                          CD6658_SendCommand(0x80);Fspeed=0;  break;
                case 4: CD6658_SendCommand(0x80);  Fspeed=0;  break;   
                    }  
                   }
if(Cd6658FUN==LY6658)
{

CD6658_SendCommand( 0x00 );
CD6658_SendCommand( 0x00 );
  }

else

CD6658_SendCommand( 0x00 );

Cd6658FUN=LY6658;



⌨️ 快捷键说明

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