📄 tea6430.c
字号:
/*==================================
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -