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

📄 amp.c

📁 我个人编写的车载dvd上的程序
💻 C
字号:
#include "public.h"
/***********************************************
 function :Send db0 and db1 to TDA7564 vai I2C
add it by  jzq 2009-1-1
***********************************************/
void AmpSend(unsigned char byteone,unsigned char bytetwo)
{
       I2CStart ();
  	I2COut8Bit(TDA7546_ADDR);
  	I2COut8Bit(byteone);
  	I2COut8Bit(bytetwo);
  	I2CStop();
  	Wait1ms(100);// add it for open amp every time
       I2CStart ();
  	I2COut8Bit(TDA7546_ADDR);
  	I2COut8Bit(byteone);
  	I2COut8Bit(bytetwo);
  	I2CStop();
}

void AmpInit()
{
     db0 = 0x06;
     db1  = 0x10;
     AmpSend(db0,db1);
     AmpMode  = AMPMODE_ON;
     Wait1ms(100);
     
}

void AmpProc()
{
    
       switch(AmpMode)
       	{
       	     case AMPMODE_OFF:
       	     	     
       	     	       break;
       	     case AMPMODE_OFFREQ:
       	     	       db0  &= ~MUTE_FRONT_CHANNEL;
       	     	       db0  &= ~MUTE_REAR_CHANNEL;
       	     	       AmpSend(db0,db1);
       	     	     //  AmpSend(db0,db1);
       	     	       AmpTimerdelay = 4;//wait for 8 ms
       	     	       AmpMode  = AMPMODE_OFFWAIT;
       	     	      
       	     	       //debug("amp off req");
       	     	       break;
       	     case AMPMODE_OFFWAIT:
       	     	       if(AmpTimerdelay > 0) break;
       	     	      db1 &= ~STANDBY_ON; 
       	     	       db0 &= ~DIAGNOSTIC_ENABLE;
       	     	      
       	     	       AmpSend(db0,db1);
       	     	       Wait1ms(10);
       	     	       AmpMode  = AMPMODE_OFF;
       	     	       break;
       	     
       	     case AMPMODE_ON:
       	     	   
       	     	       break;
       	     case AMPMODE_ONREQ:
       	     	      db0 |= DIAGNOSTIC_ENABLE;
       	     	      db1 |= STANDBY_ON;
       	     	      
       	     	      AmpSend(db0,db1);
       	     	      AmpTimerdelay = 8;
       	     	      AmpMode  = AMPMODE_ONWAIT;
       	     	      //debug("amp on req");
       	     	      break;
       	     case AMPMODE_ONWAIT:
       	     	      if(AmpTimerdelay > 0) break;
       	     	      db0 |= MUTE_FRONT_CHANNEL;
       	     	      db1 |= MUTE_REAR_CHANNEL;
       	     	      AmpSend(db0,db1);
       	     	      Wait1ms(10);
       	     	      AmpMode = AMPMODE_ON;
       	     	   
       	     	      break;
       	  
       	    	      
       	}
}

void AmpMain()
{
          AmpProc();
}
void AmpTimer100ms(void)
{
       if(AmpTimerdelay>0)AmpTimerdelay--;
}

⌨️ 快捷键说明

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