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

📄 main.c

📁 完整功放的控制程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/*================================= 主函数及公共程序部分 =================================*/
/*===================================== 主函数 =======================================*/
main()
{
  uchar i;
  bit   b_flg;
  	
  bit b_cool;			/*在冷启动时,ET1=0 */
  b_cool=ET1;			/* !!!冷启动检测位 */
  pub_delay_do(50);   		/* 延时0.1S时间, 按键去抖 */  
  b_close_mach=1;  
  test_c=0;	  
  /*********************** CPU 硬件初始化 *******************************/
  PSW=0x00;
  TMOD=0x11;                    /* #00010001B, T1=mode1 T0=mode1        */
  TCON=0x00;

  TL1=0x25;                     /* TIME1=500/sec                       	*/
  TH1=0xfa;

  IP=0x08;                      /* #00001000B, time1 为最高优先级       */
  IE=0x88;                      /* #10001000B, 打开 time1 中断    	*/
  TR1=1;                        /* open time1                           */
  /***********************************************************************/
  
   if (b_cool==0)		/*软件看门狗溢出标志字节b_cool=0*/
   { 
   /* 冷启动的处理 */
     setup_6311();		/* 初始荧光屏 */
     tsetup_6311();		/* 初始荧光屏 */
     mute_enable();		/***** 静音62446******/
   }

  rkey_speed=0;			/* 遥控连发灵敏度计数 */
  rkey_keep=0;                  /*遥控按键连发保持时间*/

  timeu=DEL_TIMEU;		/* 重置, 系统时间单位计数数 */
  b_timeu=0;

  old_key=0;			/* 旧键值寄存 */

  b_mute=0;			/* 1=扩音机静音 */
  /****************************************/
  setup_6311();			/* 初始荧光屏 */

  tsetup_6311();		/* 初始荧光屏 */

  mic1_val=1;
  mic2_val=1;
  mtre_val=4;
  mbass_val=4;  
  m62421_do();
  pub_delay_do(60);   		/* 延时0.1S时间, 按键去抖 */  
    /******** 检测24c01, 是否新机, 是->做出厂默认设置 *********/
  dog_time0=DOG_TIME0;		/* 恢复time0看门狗计数数 */
  dog_main=DOG_MAIN;		/* 恢复main看门狗计数数 */
  
  par[0]=&a24_start;
  read_abyte();  		/* 从地址par[0], 读出一数据par[0] */
  if (par[0]!=0xae)		/*AEH为24C01第一次运行标志*/
    {
     par[0]=&a24_start;		/*第一次运行标志存储地址*/
     a24_start=0xae;
     write_abyte();		/* 写一数据(20ms),par[0]=地址, PAR[1]=写入数 */
     setmach();			/***** 做出厂设置 *****/
    }
  else
    {
      setup_use();  		/*** 开机的用户状态初始化 ***/
    }
    
   restore();                  /*恢复原先的数据*/

   
   if (b_cool==0)		/*软件看门狗溢出标志字节b_cool=0*/
    {  
   /* 冷启动的处理 */
     start_dis(); 		 /*冷启动, 开机走屏显示 */
   }  
  				/*如果为上电复位则把b_cool设置为AAH*/
   
   if (b_cool==0)		/*软件看门狗溢出标志字节w_d=aah*/
   {
   /* 冷启动的处理 */
      master_val=0;
      sr_val=0;
      sl_val=0;
      cen_val=0;
      
      sys_cont=20;
      sys_start=1;
      
      get_peng_flg=0;
      
      auto_select_flg=1;
      input_att_bak=input_att;
      auto_cout=AUTO_COUNT1;      
      
   }

  else start_intmute();	       /* 临时静音启动 */
    				
  /***** 设置音源开关 *****/

  b_rkey=0;
  mach_display();
  
  bc_4051a=1;			/*+2.7db*/
  bc_4051b=0;
  bc_4051c=1;
  adpro_num=5;
  b_auto_disp=0;		 /*自动频谱*/

  singal_time=0;   		/*2002-07-31 01:11PM*/  
  ton_num = 0;
  lrk_del = 0;
  /**************************** 主循环 **********************************/
  while(1)
  {
    dog_main=DOG_MAIN;		        /* 恢复main看门狗计数数 */
    dog_time0--;			/* 监控time0 */
    if (dog_time0==0) reset();		/*主程序看门狗复位 机器复位 */
    
    bc_mic=1;
    
    if((sys_start==0)&&(auto_select_flg==0)) mic_det();
    bc_okmute=b_mic;
    /***** 防止误认其它的遥控连发信号 *****/
    if (b_timeu)			/* 用时间单位计时 */
    {
      if (rkey_keep!=0)	rkey_keep--;	/* 是否到时? */
      else rkey_num=0xae;		/* (无键标识) */
    }
 
    setup_6311();			/* 初始荧光屏 !!!!! */
    dim_vfd();  			/* 打开荧光显示 */
    tsetup_6311();			/* 初始荧光屏 */
    tdim_vfd(); 		 	/*清除11格,17段数据显示(清荧光屏) */

    auto_source_select();               /*自动音源选择*/

    protect_do();
    
//tmp    if((b_close_mach)&&(auto_select_flg==0)) input_det();
	if((b_close_mach)&&(auto_select_flg==0)) read_lr_key();
  
    if(adpro_delay<50) adpro_delay++;   /*多长时间没有频谱,则显示音源输入*/
    else adpro_delay=0;
/*****************************/    
    if(add_delay!=0) add_delay--;
    
    if(add_delay==0) 
    {
     if(auto_select_flg==0)    
      {
       adpro_add_display();
      }
    }   
/*****************************/       
    timeu_do();				/* 延时时间单位-- 计时程序 */

    sys_start_do();   

//tmp    if((b_close_mach)&&(auto_select_flg==0)) input_det();

    if(b_mute==0) string_refdo();	/*机器静音状态下不刷新 各种字符串显示方式的执行 */
					/*有一通道旧值与新值相等时,再进行频谱检测*/      
    if((b_mute==0)&&(sys_start==0)&&(string_att==STRING_MACH)&&(auto_select_flg==0))  
    {
      adpro();  
               b_flg=0;
	       for(i=0;i<8;i++)
	       {
	       	 if(ad_in[i]!=0)       /*测到有频谱,b_flg=1*/
	       	  {
	       	    b_flg=1;
                    test_c=0;	       /*2002-07-31 11:36AM !!!*/	       	    
	       	    break;
	       	  }  
	       }		       /*代替以下语句可节省11字节*/	      
      if(b_flg) 
       {
	 if(b_close_mach==0)
	  {
             if(b_rkey_close) 		 /*=0为按键关机,=1为自动关机*/       	
             {
             	 if(singal_time<6) singal_time++;
             	 else
             	 {
             	   singal_time=0;	/*2002-07-31 01:11PM*/
                   close_mach();	
                 }  
             }	
          }   
         peng_flg=1;
         adpro_screen_delay=0;
         adpro_delay=2;
       }  
      else 
       {
       	singal_time=0;   /*2002-07-31 01:11PM*/
       	if(adpro_delay==1)
       	{
       	  adpro_screen_delay++;	   /*没有音源输入,显示音源输入次数大于3则走屏显示*/	
       	  if(adpro_screen_delay<10)		//3
       	  {	
       	   mach_display();
       	  }
       	  else
       	  {
           screen_num=0;
           string_scr_step=125;			
           if(b_close_mach) input_data_scroll();
	   adpro_screen_delay=0;
	   
	     if(b_mic==0)				/*在插咪状态下不关机*/
	     {
		     if(b_close_mach)
		     {
	              if(test_c<13) test_c++; 		/*test_c<13 多长时间没有频谱则自动关机*/
	              else
	                {
	                  test_c=0;	
			  close_mach();                	
	               	  b_rkey_close=1; 		 /*=0为按键关机,=1为自动关机*/
	                }
	             }
	       }      
       	  }	 
       	  peng_flg=0;
       	}
       	   
       } 
      
    }  
    else peng_flg=0; 
    /*A/D 转换子程序, 各通道的转换结果刷新,在静音或临时静音状态下不进行频谱采样*/
    if(auto_select_flg==0) remote_do(); /* 遥控键主调用程序 */

    if(auto_select_flg==0) key_do();	/* 主按键调用程序 */

    setup_6311();			/* 初始荧光屏 !!!!! */
    dim_vfd();  			/* 打开荧光显示 */
    tsetup_6311();			/* 初始荧光屏 */
    tdim_vfd(); 		 	/*清除11格,17段数据显示(清荧光屏) */

    intmute_do();			/***** 临时静音延时处理 *******/

    dog_time0=DOG_TIME0;		/*2002-08-05 11:15AM 恢复time0看门狗计数数 */
    dog_main=DOG_MAIN;			/*2002-08-05 11:15AM 恢复main看门狗计数数 */

//tmp    if((b_close_mach)&&(auto_select_flg==0)) input_det();

    if((b_close_mach)&&(auto_select_flg==0)) fresh_mvol(); /*主音量控制,由主程序调用*/

    if((peng_flg)&&(b_mute==0)&&(sys_start==0)&&(auto_select_flg==0)) video_compare(); /*频谱比较*/	

    if((peng_flg)&&(display_num==5)||(display_num==6)||(display_num==7)) peng_top();
    
    if(peng_flg) auto_display();

    display_do();			/* VFD的总显示函数 */

//temp    if((b_close_mach)&&(auto_select_flg==0)) input_select();	/*输入选择控制电平*/
    
    led_control();
    
    fresh_input();			/*不停地刷新输入选择!!2002-08-05 11:14AM*/
   }
}


/*************************************/
void adpro_add_display(void)	/*频谱增益自动调节0,7*/
{
  uchar i;
  bit   b_da_7=1,b_xi_4=1,b_de_0=1;
      for(i=0;i<8;i++)
      {
      	if(ad_in[i]<8) 		/*ad_in[i]中只要有一个小于8则B_DA_7=0*/
      	 {
      	   b_da_7=0;
      	   break;	
      	 }
      }	
  	
  add_delay=0x15;
  if(b_da_7)
  {
    if(adpro_num!=0) adpro_num--;
    add_delay=0x15;    
  }

      for(i=0;i<8;i++)
      {
      	if(ad_in[i]>3) 		/*ad_in[i]中只要有一个小于8则b_xi_4=0*/
      	 {
      	   b_xi_4=0;
      	   break;	
      	 }
      }	
  
  if(b_xi_4)
  {
    if(adpro_num<7) adpro_num++;
    add_delay=0x15;
  }

  par[0]=adpro_num;
  bc_4051b=par0_1;
  bc_4051a=par0_0;
  bc_4051c=par0_2;
}	


⌨️ 快捷键说明

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