tea6430.c

来自「10:8的双通道音频矩阵源码」· C语言 代码 · 共 79 行

C
79
字号
/*==================================
TEA6430.c
==================================*/
#include"G40A8.h"

extern unsigned char reg[0x30];

#define GAIN0   3
#define GAIN1   2
#define GAIN2   1
#define GAIN3   0

/*=================================
=================================*/
unsigned char TEA6430write(unsigned char address,unsigned char active,unsigned char gain,unsigned char outChannel,unsigned char inChannel)
{
  unsigned tmp;
  tmp  = active? 0x00:0x80;
  tmp |= (gain&0x03)<<3;
  tmp |= (0x03-(outChannel&0x03))<<5;
  tmp |= inChannel%5;
  while(!iic_start());
  if(!iic_send(address))
    return 0;
  if(!iic_send(tmp))
    return 0;
  iic_stop();
  return 1;
  /*while(!iic_start());
  if(!iic_send(0x9e))
    return 0;
  if(!iic_send(0x00))
    return 0;
  iic_stop();
  return 1;*/
}
/*=================================
=================================*/
void TEA6430write(unsigned char outChannel,unsigned char inChannel)
{
#define ADR_5i4o  0x9e
#define ADR_Ai4o  0x98
#define ADR_5i8o  0x9c
#define ADR_Ai8o  0x9a
  unsigned char adr;
  if(outChannel<4 && inChannel<5)
    adr = ADR_5i4o;
  else if(outChannel<4 && inChannel>=5)
    adr = ADR_Ai4o;
  else if(outChannel>=4 && inChannel<5)
    adr = ADR_5i8o;
  else
    adr = ADR_Ai8o;

  switch(adr)
  {
  case ADR_5i4o:
    if(TEA6430write(ADR_Ai4o,false,GAIN0,outChannel,inChannel))
      TEA6430write(ADR_5i4o,true ,GAIN0,outChannel,inChannel);
    break;
  case ADR_Ai4o:
    if(TEA6430write(ADR_5i4o,false,GAIN0,outChannel,inChannel))
      TEA6430write(ADR_Ai4o,true ,GAIN0,outChannel,inChannel);
    break;
  case ADR_5i8o:
    if(TEA6430write(ADR_Ai8o,false,GAIN0,outChannel,inChannel))
      TEA6430write(ADR_5i8o,true ,GAIN0,outChannel,inChannel);
    break;
  case ADR_Ai8o:
    if(TEA6430write(ADR_5i8o,false,GAIN0,outChannel,inChannel))
      TEA6430write(ADR_Ai8o,true ,GAIN0,outChannel,inChannel);
    break;
  }

}
/*==================================
END
==================================*/

⌨️ 快捷键说明

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