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

📄 m61540.c

📁 针对音量IC:M61540的控制程序
💻 C
字号:
void M61540_Send_Volume_Data(volatile unsigned char Volume_Data_L,volatile unsigned char Volume_Data_R,volatile unsigned char End_Byte)
{
	unsigned char Count = 0;
	DDRD |=(1<<DDD2);
	DDRB |=(1<<DDB1);
	M61540_CLK = 0;   
	M61540_Data = 0;
	//Send slected channel gain
	M61540_Data = 0;
	Delay(8);
	M61540_CLK = 1;	
	Delay(16);
	M61540_Data = 0;
	Delay(8);
	M61540_CLK = 0; 
	Delay(16);  										//0
	
	M61540_Data = 0;
	Delay(8);
	M61540_CLK = 1;	
	Delay(16);
	M61540_Data = 0;
	Delay(8);
	M61540_CLK = 0; 
	Delay(16);  									 //0	
	
	for(Count=0 ; Count<7 ; Count++)
	{
		if((Volume_Data_L & 0x01)==0x01)
		{
			M61540_Data = 1;
		}
		else 
		{
			M61540_Data = 0;
		}
		Delay(8);
		M61540_CLK = 1;			
		Delay(16);
		M61540_Data = 0;
		Delay(8);
		M61540_CLK = 0;						
		Delay(16);
		Volume_Data_L >>= 1;
	}
	
	//Send slected channel gain
	M61540_Data = 0;
	Delay(8);
	M61540_CLK = 1;	
	Delay(16);
	M61540_Data = 0;
	Delay(8);
	M61540_CLK = 0; 
	Delay(16);  										//0
	
	M61540_Data = 0;
	Delay(8);
	M61540_CLK = 1;	
	Delay(16);
	M61540_Data = 0;
	Delay(8);
	M61540_CLK = 0; 
	Delay(16);  										//0
	
	for(Count=0 ; Count<7 ; Count++)
	{
		if((Volume_Data_R & 0x01) == 0x01)
		{
			M61540_Data = 1;
		}
		else 
		{
			M61540_Data = 0;
		}
		Delay(8);
		M61540_CLK = 1;			
		Delay(16);
		M61540_Data = 0;
		Delay(8);
		M61540_CLK = 0;						
		Delay(16);
		Volume_Data_R >>= 1;
	}
	
	//Send finishing sign
	for(Count=0 ; Count<6 ; Count++)
	{
		if((End_Byte & 0x01) == 0x01)
		{
			M61540_Data = 1;
		}
		else 
		{
			M61540_Data = 0;
		}
		Delay(8);
		M61540_CLK = 1;			
		Delay(16);
		if(Count == 5)                                //end bit
		{
			M61540_Data = 1;
		}
		else
		{
			M61540_Data = 0;
		}
		Delay(8);
		M61540_CLK = 0;						
		Delay(16);
		End_Byte>>=1;
	}
	M61540_Data = 0;
}

void M61540_Send_Control_Data(volatile unsigned char Control_Data,volatile unsigned char Treble_Bass)
{
	unsigned char Count = 0;
	DDRD |=(1<<DDD2);
	DDRB |=(1<<DDB1);
	M61540_CLK = 0;   
	M61540_Data = 0;

	for(Count=0 ; Count<8 ; Count++)
	{
		if((Control_Data & 0x01) == 0x01)
		{
			M61540_Data = 1;
		}
		else 
		{
			M61540_Data = 0;
		}
		Delay(8);
		M61540_CLK = 1;			
		Delay(16);
		M61540_Data = 0;
		Delay(8);
		M61540_CLK = 0;						
		Delay(16);
		Control_Data>>=1;
	}
	
	//Treble and Bass
	for(Count=0 ; Count<8 ; Count++)
	{
		if((Treble_Bass & 0x01) == 0x01)
		{
			M61540_Data = 1;
		}
		else 
		{
			M61540_Data = 0;
		}
		Delay(8);
		M61540_CLK = 1;			
		Delay(16);
		M61540_Data = 0;
		Delay(8);
		M61540_CLK = 0;						
		Delay(16);
		Treble_Bass>>=1;
	}
	
	//Send finishing sign
	for(Count=0 ; Count<8 ; Count++)
	{
		M61540_Data = 0;
		Delay(8);
		M61540_CLK = 1;	
		Delay(16);
		if(Count==7)                                       // end bit
		{
			M61540_Data = 1;
		}
		else
		{
			M61540_Data = 0;
		}
		Delay(8);
		M61540_CLK = 0; 
		Delay(16);  										//0
	}
	M61540_Data = 0;
}

⌨️ 快捷键说明

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