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

📄 main.c

📁 str73系列 三洋LC75010 控制代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	unsigned long int time;
	uint8 half = FALSE;
	
		for(j=0;j<3;j++)
		{
			if(j==1)
			{
				CCBBUS_CE_H;
				half = TRUE; 
			}
			
			tmp = buff[j];					//取一字节数据
			for(k=0;k<8;k++)						//发送一字节数据
			{
				CCBBUS_CL_L;					//时钟输出低电平
							
				if(tmp & 1)							//数据输出
				{
					CCBBUS_DI_H;
				}
				else
				{
					CCBBUS_DI_L;
				}
				
				tmp >>= 1;							//下一位
				
				delay();							//低电平保持时间
								
				CCBBUS_CL_H;					//时钟输出高电平
				
				if(half == TRUE)					//数据半字节发送
				{
					if(k == 3)
					{
						half = FALSE;
						break;
					}
					
				}
				
				delay();							//高电平保持时间
			}
			
			delay();								//字节间隔时间
			delay();
			delay();
			delay();
			
		}
		
		CCBBUS_CE_L;
		
		SetUserTimer(&time);						//帧间隔时间
		while(ReadUserTimer(&time) < T_5MS);
}


void ccb_send(void)
{
	EIC->ICR &=2;
	
    send_volume(VOLUME_send);
	
	send_cd_status(CD_status_send);
	
	if(CORRE_playing != AM)
	{
		send_da5_and_dal(DA5_AND_DAL_send);
	
		send_da5(DA5_send);
	}
	
	send_POWER_status(POWER_ON);
		
	send_AM_status(AM_status);
	
	EIC->ICR &=3;
}

void deal_volume(uint8 vol)
{	uint8 i;

				
			   if(vol >= 45)
				{	
					for(i=2;i<4;i++)
					{
						VOLUME_send[i] = VOLUME[vol][i];
					}
				
					EIC->ICR &=2;
					send_volume(VOLUME_send);
					send_da5_and_dal(DA5_AND_DAL_send);
					send_da5(DA5_send);
					EIC->ICR &=3;
				}
				else if(vol >= 40)
				{
					for(i=2;i<4;i++)
					{
						VOLUME_send[i] = VOLUME[vol][i];
					}
				
					EIC->ICR &=2;
					send_volume(VOLUME_send);
					send_da5_and_dal(DA5_AND_DAL_send);
					send_da5(DA5_send);
					EIC->ICR &=3;
				}
				else if(vol >= 35)
				{
					for(i=2;i<4;i++)
					{
						VOLUME_send[i] = VOLUME[vol][i];
					}
				
					EIC->ICR &=2;
					send_volume(VOLUME_send);
					send_da5_and_dal(DA5_AND_DAL_send);
					send_da5(DA5_send);
					EIC->ICR &=3;
				}
				else if(vol >= 30)
				{
					for(i=2;i<4;i++)
					{
						VOLUME_send[i] = VOLUME[vol][i];
					}
				
					EIC->ICR &=2;
					send_volume(VOLUME_send);
					send_da5_and_dal(DA5_AND_DAL_send);
					send_da5(DA5_send);
					EIC->ICR &=3;
				}
				else if(vol >= 25)
				{
					for(i=2;i<4;i++)
					{
						VOLUME_send[i] = VOLUME[vol][i];
					}
				
					EIC->ICR &=2;
					send_volume(VOLUME_send);
					send_da5_and_dal(DA5_AND_DAL_send);
					send_da5(DA5_send);
					EIC->ICR &=3;
				}
				else if(vol >= 20)
				{
					for(i=2;i<4;i++)
					{
						VOLUME_send[i] = VOLUME[vol][i];
					}
				
					EIC->ICR &=2;
					send_volume(VOLUME_send);
					send_da5_and_dal(DA5_AND_DAL_send);
					send_da5(DA5_send);
					EIC->ICR &=3;
				}
				else 
				{
					for(i=2;i<4;i++)
					{
						VOLUME_send[i] = VOLUME[vol][i];
					}
				
					EIC->ICR &=2;
					send_volume(VOLUME_send);
					send_da5_and_dal(DA5_AND_DAL_send);
					send_da5(DA5_send);
					EIC->ICR &=3;
				}
				
				
}


void deal_DA5_AND_TRE(void)
{	uint8 i;
	
	for(i=1;i<16;i++)
	{
		DA5_AND_DAL_send[i] = DA5_AND_TRE_16[TRE_value][DA5_value][i];
	}
				
	
	for(i=1;i<3;i++)
	{
		DA5_send[i] = DA5_AND_TRE_3[TRE_value][DA5_value][i];
	}
	
	EIC->ICR &=2;
	send_da5_and_dal(DA5_AND_DAL_send);
	send_da5(DA5_send);
	EIC->ICR &=3;
}

 
 
 /********************************************************************
 **功    能:主函数
 **入口参数:无
 **出口参数:无
 **日	 期:08/5/14
 **作	 者:梁南标
 ***********************************************************************/
 
int main (void)
{   
    u8 i=0;
	u32 time;

	SysTimerInit();
	Uart0Init();
	Init_75010w();
                          			
	SetUserTimer(&time);
	for(i=0;i<4;i++)
	{
		while(ReadUserTimer(&time) < T_300MS);
	
		SetUserTimer(&time);	
			
		EIC->ICR &=2;	//禁止中断
		send_volume(VOLUME_send);
		send_cd_status(CD_OFF);	 //
		send_da5_and_dal(DA5_AND_DAL_send);
		send_da5(DA5_send);
		send_POWER_status(POWER_OFF); //
		send_AM_status(AM_OFF);
		
		EIC->ICR &=3;			  //允许中断
	}
     while(1)
	{	
		if(ReadUserTimer(&time) > T_500MS)
		{
			SetUserTimer(&time);	
			
			ccb_send();
		}

		if(UART_FlagStatus(UART0,UART_Flag_RxBufFull)||UART_FlagStatus(UART0,UART_Flag_TimeOutNotEmpty)){
	  
		          UART_data_buff[UART_data_buff_w++] = UART0->RxBUFR;	 
	     
	             if(UART_data_buff_w >= UART_buff_size){
	               
	     	          UART_data_buff_w = 0;
	              }
          }


		if(UART_data_buff_w != UART_data_buff_r)
          {

		     UART_ByteSend(UART0, UART_data_buff[UART_data_buff_r]);	
				if(UART_data_buff[UART_data_buff_r] == 0xaa)			//VOLUME +
		    	{
				VOLUME_value++;
			    	if(VOLUME_value >= 63)
			    	{
					VOLUME_value = 63;
					
			    	}
			    	deal_volume(VOLUME_value);				
		    	}
		    	else if(UART_data_buff[UART_data_buff_r] == 0x55)		//VOLUME -
		    	{
			    	VOLUME_value--;
			    	if(VOLUME_value <= 0)
			    	{
					VOLUME_value = 0;
			    	}
			    	deal_volume(VOLUME_value);	
			     }
			     else if(UART_data_buff[UART_data_buff_r] == 0x81)		//DA5 +
		     	{	DA5_value++;
		    		if(DA5_value >= 10)
			    	{
					DA5_value = 10;
			     	}
			    	if(CORRE_playing != AM)
			    	{
					deal_DA5_AND_TRE();
			    	}
			    	else
			    	{	point = &DA5_AM[DA5_value][0];
					EIC->ICR &=2;
					send_da5(point);
					EIC->ICR &=3;
			    	}
			     }
		    	else if(UART_data_buff[UART_data_buff_r] == 0x82)		//DA5 -
		    	{	DA5_value--;
			    	if(DA5_value <= 0)
			    	{
					DA5_value = 0;
			    	}
			    	if(CORRE_playing != AM)
			    	{
					
					deal_DA5_AND_TRE();
			    	}
			    	else
			    	{	point = &DA5_AM[DA5_value][0];
				    	EIC->ICR &=2;
				    	send_da5(point);
				     	EIC->ICR &=3;
			    	}
			    }
			     else if(UART_data_buff[UART_data_buff_r] == 0x83)		//TRE +
			    {	TRE_value++;
			     	if(TRE_value >= 10)
			     	{
					TRE_value = 10;
			     	}
			    	if(CORRE_playing != AM)
			     	{
			 		
					deal_DA5_AND_TRE();
			     	}
			    	else
			    	{	point = &TRE_AM[TRE_value][0];
					EIC->ICR &=2;
					send_da5(point);
					EIC->ICR &=3;
			     	}
		    	}
			    else if(UART_data_buff[UART_data_buff_r] == 0x84)		//TRE -
			  {
			    	TRE_value--;
			    	if(TRE_value <= 0)
			     	{
			    		TRE_value = 0;
			    	}
			    	if(CORRE_playing != AM)
			    	{
					
					deal_DA5_AND_TRE();
			    	}
			    	else
			     	{	point = &TRE_AM[TRE_value][0];
				    	EIC->ICR &=2;
				    	send_da5(point);
				    	EIC->ICR &=3;
			    	}
			   }
		    	else if(UART_data_buff[UART_data_buff_r] == 0x85)	//	DAL +
		    	{
			    	DAL_value++;
			    	if(DAL_value >= 14)
			     	{
					DAL_value = 14;
			    	}
			 	    point = &DAL[DAL_value][0];
			    	EIC->ICR &=2;
				    send_da5(point);
				    EIC->ICR &=3;
			    }
		    	else if(UART_data_buff[UART_data_buff_r] == 0x86)		//DAL -
		     	{	
			    	DAL_value--;
			    	if(DAL_value <= 0)
			    	{
					DAL_value = 0;
				    }
				   point = &DAL[DAL_value][0];
			    	EIC->ICR &=2;
			    	send_da5(point);
			    	EIC->ICR &=3;
		     	}
			   else if(UART_data_buff[UART_data_buff_r] == 0x87)		//FAD +
		    	{	
				FAD_value++;
				if(FAD_value >= 14)
				{
					FAD_value = 14;
				}
				point = &FAD[FAD_value][0];
				EIC->ICR &=2;
				send_da5(point);
				EIC->ICR &=3;
		    	}
		    	else if(UART_data_buff[UART_data_buff_r] == 0x88)		//FAD -
		    	{	FAD_value--;
			    	if(FAD_value <= 0)
		     		{
					FAD_value = 0;
			    	}
			    	point = &FAD[FAD_value][0];
			    	EIC->ICR &=2;
			    	send_da5(point);
			    	EIC->ICR &=3;
		    	}
		    	else if(UART_data_buff[UART_data_buff_r] == 0x90)		// CHANGE TO AM
		    	{
			    	CORRE_playing = AM;
			    	for(i = 1;i<3;i++)
			    	{
					AM_status[i] = AM_ON[i];
					CD_status_send[i] = CD_OFF[i];
			         }
		    	}
		    	else if(UART_data_buff[UART_data_buff_r] == 0x91)      //切换到FM
		    	{
			    	CORRE_playing = FM;
			    	for(i =1;i<3;i++)
			    	{
					AM_status[i] = AM_OFF[i];
					CD_status_send[i] = CD_OFF[i];
			    	}
			     }
			    else if(UART_data_buff[UART_data_buff_r] == 0x92)        //切换到CD
		    	{
			    	CORRE_playing = CD;
			    	for(i =1;i<3;i++)
			    	{
					AM_status[i] = AM_OFF[i];
					CD_status_send[i] = CD_ON[i];
			    	}
			     }

			 
			     UART_data_buff_r++;
			    if(UART_data_buff_r >= UART_buff_size)
			    {
				UART_data_buff_r = 0;
			    }
		}
		
	}
    return 0;
	
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/



/******************* (C) COPYRIGHT 2005 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

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