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

📄 main.c

📁 完整功放的控制程序
💻 C
📖 第 1 页 / 共 2 页
字号:


/*====================================================================*/
/****** 延时时间单位-- 计时程序(多任务) ******/
void timeu_do(void)
{
  uchar i;	
  timeu--;              /*延时字节*/
  if (timeu==0)
  {
    b_timeu=1;          /*延时字节等于0时,设置位等于1*/
    timeu=DEL_TIMEU;	/* 重置 DEL_TIMEU=5 */
/********************************/    
  }
  else b_timeu=0;       /*没有到时,标志位清0,在一次主循环中只有一次有效*/
}



/******** 共用延时函数, 非多任务的, 参数为需要的延时时间 *******/
void pub_delay_do(uint x)
{ /* 每时间单位=1ms */
  uchar i;
  while (x!=0)
  {
    dog_main=DOG_MAIN;		/* 恢复main看门狗计数数 */
    for (i=103; i!=0; i--)	/* 1ms循环时间, 6M晶振 */
    {;}				/*空操作*/
    x--;
  }
}

/******************上电恢复原先的数据*************/
void  restore(void)
{
    uchar  i;
    balan_val=9;		/*左等于右*/
    master_val=45;    
    sl_val=45;
    sr_val=45;
    cen_val=45;
    
    dim_num=7;
    b_close_mach=1;
	pwr_key_del=0;
    
    display_num=6;    
    input_control();		/*选通输入选择*/
      for(i=0;i<8;i++)
      {
        ad_in[i]=0;  	/*有频谱后把频谱数据清除*/	
      }	
}	



void mach_display(void)
{
  string_att=STRING_PROMPT;		/* 设显示为提示方式 */
  string_del=STRDEL_PA;		/* 设显示停留时间 */
  string_num=input_att;        /* "xxxxxxx" */
}

	

/*==========================================================================================*/


void peng_top(void)		/*频谱顶点保留*/
{
    uchar i;	
/*********************/    
    for(i=0;i<25;i++)
    {
     if(ad_disp_line[i]>15) ad_disp_line[i]=0;	
    }	
/*********************/    

    if(pot_test<8) pot_test++;	/*延时处理,经过多少次主程序(顶点保留时间长度)*/
     else pot_test=0;
    
     if(pot_test==4)
      {
      	      
      	   if(display_num==6)
      	   {    
     	      for(i=0;i<25;i++) 
     	       {
	        if(ad_disp_line[i]!=0) ad_disp_line[i]--;   /*顶点从上向下掉下*/
	       } 
	   }
	  else if((display_num==5)||(display_num==7))	    
      	   {    
      	      for(i=0;i<25;i++)
      	      {	
	      if(ad_disp_line[i]<15) ad_disp_line[i]++;   /*顶点从上向下掉下*/
	      else ad_disp_line[i]=0;
	      }
	   }
	    
	      
       }	    
	for(i=0;i<25;i++)
	{
        if(ad_disp_line[i]<tdig_offset[i]) ad_disp_line[i]=tdig_offset[i];  /*取得新顶点*/
    }
}



void  sys_start_do(void)		/*开机音量从0增加到上次关机前的记忆值*/
{
  	
 if((sys_start)&&(auto_select_flg==0))
 {	
  sys_cont--;
    if(sys_cont==0)			/*音量增加时间到*/
    { 	
     sys_cont=SYS_COUNT;	

      if(master_val<35)
      {
      	blrk_process=1;			/*主音加1*/
      	blrk_direct=1;			/*主音加1*/      
		lrk_del=0;
      } 
       else 
      { 
		sys_start=0;
      } 
    }
  }	
}	

void auto_source_select(void)              /*自动音源选择*/
{
  uchar i;	
  if(auto_select_flg)   	           /*经过一定时间开始自动音源检测*/
  {	
     auto_cout--;
/**************/     
/*     adpro();				再采集一次*/
     
//     for(i=0;i<8;i++)
//     {
//       if(ad_in[i]>2)	
//        {
//     	  get_peng_flg=1;	   
//     	  break;
//        }		
//     }	
/*************/     
    if(auto_cout==0)
   { 	
             auto_cout=AUTO_COUNT1;	
	     adpro();
		     for(i=0;i<8;i++)
		     {
		       if(ad_in[i]>1)	
		        {
		     	  get_peng_flg=1;	   
		     	  break;
		        }		
		     }	
	     
	     if(get_peng_flg)
	      {
	      auto_select_flg=0;	   /*=0已检测到音源*/
              bc_jin=1;			/* 预置过载检测口高电平 */
              bc_jout=0;			/* 继电器控制脚, 0=合上 */
		   if(input_att==INPUT_AC3)
		   {	
		      if(dsp_att!=DSP_NO)
		      {
		      /******** 高低音恢复子程序 ********/
		       tre_bass_restore();
		      } 
		   }
	        mach_display();
	      }	
	     else
	     {
	     	
	       if(input_att<4)  input_att++;
 	       else input_att=0;
 	       
 	       if(input_att==input_att_bak)
	        {
	         input_att=input_att_bak;	
	         auto_select_flg=0;		/*自动音源选择标志位*/
	         bc_jin=1;			/* 预置过载检测口高电平 */
	         bc_jout=0;			/* 继电器控制脚, 0=合上 */
		}

	          input_control();	        /*音源输入选择*/	
	          mach_display();		/*先选通AC-3输入*/	
	     }	
       	
	
        }	
    }	
}	

void set_led_state(bit lrk_flg)
{
	par[0]=0;

	if(b_close_mach) par0_2=1;      /*power*/
	else
		par0_2=b_test;   /*关机电源灯闪动*/

	if(b_close_mach)
	{
		if (ad_delay)
		{
			ad_delay--;
			if (lrk_flg)
			{
				if ((test&0x01)==0)
				{
					par0_0=1;
					par0_1=1;
				}
				else
				{
					par0_0=0;
					par0_1=0;
				}
			}
			else
			{
				par0_0=1;
				par0_1=1;
			}
		}
		else
		{
			par0_0=1;
			par0_1=1;
		}
	} 
	else
	{
		par0_0=0;
		par0_1=0;
	}
}	

void led_control(void)
{
   if(b_timeu) 
   {
		test=(test+1)&0x0f;
		if ((test&0x03)==0)
	         b_test=!b_test;

		set_led_state(!blrk_direct);
  		wled_6311();
		set_led_state(blrk_direct);
		twled_6311();
	}
}  

void auto_display(void)
{
  if((b_auto_disp)&&(b_timeu))
  {
    if(a24_start<40) a24_start++;
    else 
    {
    	a24_start=0;
	if(display_num<7) display_num++;
	else display_num=0;
    }	
  }	
}	


void fresh_input(void)
{
  if((b_timeu)&&(auto_select_flg==0))
  {	
  	if(b_intmute==0)
  	{
           tre_bass_do();	

	   if((input_att==INPUT_AUX)||(input_att==INPUT_AC3))
	   {	
	    bc_inputa=1;
	    bc_inputb=1;
	   }
	   else if(input_att==INPUT_TAPE)
	   {
	    bc_inputa=0;
	    bc_inputb=0;
	   }	
	   else if(input_att==INPUT_VCD)
	   {
	    bc_inputa=1;
	    bc_inputb=0;
	   }	
	   else if(input_att==INPUT_DVD)
	   {
	    bc_inputa=0;
	    bc_inputb=1;
	   }	
   	}
   }	
}

	


⌨️ 快捷键说明

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