📄 amp.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 + -