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

📄 main._c

📁 sunplus spca514 cdmp3 源码
💻 _C
字号:
#include <macros.h>
#include <iom163.h>
#include <eeprom.h>
#include "..\bu2624\bu2624.h"
#include "..\main.h"
#include "..\key.h"
#include "..\uicc_def.h"
#include "..\io.h"
#include "..\key_lut.h"
#define SLEEP_TIME_TAG 30
#define SLEEP_MAX_CNT 4
extern  NV_SETTINGS gps;
extern unsigned int info;
extern unsigned char amfm_flag;
unsigned char display_type=0,g_avtv; 
extern unsigned char  radio_is_muted, rds_display_type; 
extern unsigned int g_ui_timing_cnt;
unsigned char led_val=0;
extern unsigned int g_vfd_grid_buffer[];
//unsigned char display_default_type = 0;
unsigned char tick_flag=0;
unsigned int key_buff=0xffff;
unsigned char uicc_code,last_key;
unsigned int dvd_key=0xffff;
unsigned char g_ui_tmp_msg_cnt=0;
extern unsigned char repeat,muted;
extern unsigned char Mchvol,Bassvol,Treblevol,Balanceval,Loudnessval;
extern unsigned char Cchvol,SWchvol,Schvol;
extern unsigned char is_autosearching;
unsigned char work_mode=0,work_mode1;
extern unsigned char *err_msg; 
extern const UI_KEY_MAP key_map[];
unsigned char get_uicc_key(unsigned int key)
{
 unsigned char i,j;
  for(i=0;i<MAX_KEY_CNT;i++)
   if(key_map[i].input_key == key)
   {
     return key_map[i].uicc_key;
   }
  return 0xff;
}
void DEC_power(unsigned char val)
{
  if(val)
     led_val |= 0x10;
  else
     led_val &= 0x0f;
  VFD_LL_RefreshLED(led_val);
}

void ui_input_handler(void)
{
 unsigned int tmp;
 if(work_mode == POWER_OFF_MODE)
 {
   if(uicc_code== UICC_POWER)
   {
       work_mode = work_mode1;
       work_mode_convert();
	   led_val &= 0x1e;
	  
	  // delay_ms(100);
	  // muted = 0;
	   //MCU_mute();
	}
	else
	{
	 #ifdef CLOCK_STANDBY
	  clock_operator();
	  #endif
	
   };
 }
 else
 {
  switch(uicc_code)
  {
   case UICC_POWER:
        #ifndef TEST_KEY
        g_ui_timing_cnt = 0;
        work_mode1=work_mode;
        work_mode = POWER_OFF_MODE;
		work_mode_convert();
		muted = 1;
		MCU_mute();
	    #endif
		break;
   case UICC_WORK_MODE:
	   work_mode++;
	   #ifdef AV3_EXIST
	   if(work_mode >4)
	   #else
	   		#ifdef NO_AV2
			 if(work_mode>2)
			 #else
			 if(work_mode>3)
			 #endif
	   #endif
	     	  work_mode = 0;
	   work_mode_convert();
	   break;
/*
   case UICC_DVD:
        if(work_mode!=DVD_MODE)
		{
         work_mode = DVD_MODE;
		 work_mode_convert();
		};
		break;
   case UICC_AV1:
        if(work_mode!=AV1_MODE)
		{
         work_mode = AV1_MODE;
		 work_mode_convert();
		};
		break;
	case UICC_AV2:
	    if(work_mode!=AV2_MODE)
		{
         work_mode = AV2_MODE;
		 work_mode_convert();
		}
		break;
	case UICC_AV3:
		if(work_mode!=AV3_MODE)
		{
         work_mode = AV3_MODE;
		 work_mode_convert();
		};
		break;
	case UICC_AM:
		 EEPROMwrite((int)&(gps.ps_amfm_flag),1);
	     if(work_mode!=TUNER_MODE)
		 {
		   work_mode = TUNER_MODE;
		   work_mode_convert();
		 }
		 else
		 {
		    if(!amfm_flag)
			work_mode_convert();
		 }
		 break;
	case UICC_FM:
		 EEPROMwrite((int)&(gps.ps_amfm_flag),0);
	     if(work_mode!=TUNER_MODE)
		 {
		   work_mode = TUNER_MODE;
		   work_mode_convert();
		 }
		 else
		 {
		    if(amfm_flag)
			work_mode_convert();
		 }
		 break;
*/		  
   case UICC_VOLUME_UP:
		g_ui_tmp_msg_cnt = 20;
		switch(display_type)
		{	
			case DISPLAY_VOL:
				if(Mchvol < 60)
				{
     				Mchvol++;
     			 	pt2320_vol();
				};
				dvd_key = D_VOLUME_KEY|Mchvol;
  			    break;
		#ifndef NO_SIX_CHANNEL_OUTPUT
		     case DISPLAY_SVOL:
			      if(Schvol<15)
				  {
				    Schvol++;
					pt2320_Sch();
				  };
				  dvd_key = D_SURR_VOL_KEY|Schvol;
				  break;
			 case DISPLAY_SWVOL:
			  	  if(SWchvol<15)
				  {
				    SWchvol++;
					pt2320_SWch();
				  };
				  dvd_key = D_SW_VOL_KEY|SWchvol;
				  break;
			 case DISPLAY_CVOL:
			  	  if(Cchvol<15)
				  {
				    Cchvol++;
					pt2320_Cch();
				  };
				  dvd_key = D_CENT_VOL_KEY|Cchvol;
				  break;
		#endif 
	
		#ifdef BASS_ONE_KEY
		#ifndef BASS_TWO_KEY
			case DISPLAY_BASS:
				if(Bassvol < 14)
				{
					Bassvol++;
    				pt2320_bass();
				};
			    dvd_key = D_BASS_KEY | Bassvol;
				break;
		#endif
		#endif
		 
		#ifdef TREBLE_ONE_KEY
		#ifndef TREBLE_TWO_KEY
			case DISPLAY_TREBLE:
			
				if(Treblevol < 14)
				{
					Treblevol++;
					pt2320_treble();
				};
			
			    dvd_key = D_TREBLE_KEY|Treblevol;
			    break;
		#endif
		#endif
		
		#ifdef BALANCE_ONE_KEY
		#ifndef BALANCE_TWO_KEY
			case DISPLAY_BALANCE:
				if(Balanceval <14)
				{
					Balanceval++;
					set_balance();
				}
				dvd_key = D_BALANCE_KEY | Balanceval;
			    break;
		#endif
		#endif
			default:
		       display_type = DISPLAY_VOL;
			   dvd_key = D_VOLUME_KEY|Mchvol;
			   break;
		};
		radio_is_muted = 0;
		mute_radio();
	    break;
	case UICC_VOLUME_DOWN:
		g_ui_tmp_msg_cnt = 20;
		switch(display_type)
		{
			case DISPLAY_VOL:
				if(Mchvol > 0)
				{
					Mchvol--;
					pt2320_vol();
				};
				
				dvd_key = D_VOLUME_KEY | Mchvol;
			    break;
		#ifndef NO_SIX_CHANNEL_OUTPUT
		     case DISPLAY_SVOL:
			      if(Schvol>0)
				  {
				    Schvol--;
					pt2320_Sch();
				  };
				  dvd_key = D_SURR_VOL_KEY|Schvol;
				  break;
			 case DISPLAY_SWVOL:
			  	  if(SWchvol>0)
				  {
				    SWchvol--;
					pt2320_SWch();
				  };
				  dvd_key = D_SW_VOL_KEY|SWchvol;
				  break;
			 case DISPLAY_CVOL:
			  	  if(Cchvol>0)
				  {
				    Cchvol--;
					pt2320_Cch();
				  };
				  dvd_key = D_CENT_VOL_KEY|Cchvol;
				  break;
		#endif
			#ifdef BASS_ONE_KEY
   			#ifndef BASS_TWO_KEY
   			case DISPLAY_BASS:	
   				if(Bassvol > 0)
				{
					Bassvol--;
				    pt2320_bass();
        		};
        	    dvd_key = D_BASS_KEY | Bassvol;
				break;
   			#endif
   			#endif
			
   			#ifdef TREBLE_ONE_KEY
   			#ifndef TREBLE_TWO_KEY
   			case DISPLAY_TREBLE:
				if(Treblevol > 0)
				{
		 			Treblevol--;
				    pt2320_treble();
			    };
				dvd_key = D_TREBLE_KEY | Treblevol;
   			    break;
   			#endif
   			#endif
			
   			#ifdef BALANCE_ONE_KEY
   			#ifndef BALANCE_TWO_KEY
   			case DISPLAY_BALANCE:
   				if(Balanceval >0)
				{
					Balanceval--;
					set_balance();
				};
				dvd_key = D_BALANCE_KEY | Balanceval;
   			    break;
   			#endif
   			#endif
			default:
			   display_type = DISPLAY_VOL;
			   dvd_key = D_VOLUME_KEY | Mchvol;
   		}
		radio_is_muted = 0;
		mute_radio();
       	break;
       		
		#ifndef D_NO_6CHANNEL_OUTPUT
		case UICC_VOLUME_MODE:
		     if(work_mode!=DVD_MODE)
			  break;
		     g_ui_tmp_msg_cnt = 20;
			 display_type++;
			 if((display_type<DISPLAY_VOL)||(  display_type>DISPLAY_SWVOL))
			    display_type = DISPLAY_VOL;
			 tmp = D_AMODE_KEY|((display_type-5)<<6);
			 switch(display_type)
			 {
			  case DISPLAY_VOL:
			  	   dvd_key = tmp|Mchvol;
				   break;
			  case DISPLAY_SVOL:
			       dvd_key = tmp|Schvol;
				   break;
			  case DISPLAY_CVOL:
			       dvd_key = tmp|Cchvol;
				   break;
			  case DISPLAY_SWVOL:
			       dvd_key = tmp|SWchvol;
				   break;
			 };
			 break;
		#endif
		
		
		#ifdef BASS_ONE_KEY
        case UICC_BASS:
        	g_ui_tmp_msg_cnt = 20;
        	display_type = DISPLAY_BASS;
			dvd_key = D_BASS_KEY | Bassvol;
			break;
		#endif
		#ifdef TREBLE_ONE_KEY
		case UICC_TREBLE:
        	g_ui_tmp_msg_cnt = 20;
        	display_type = DISPLAY_TREBLE;
			dvd_key = D_TREBLE_KEY | Treblevol;
			break;
		#endif
		#ifdef BALANCE_ONE_KEY
		case UICC_BALANCE:
        	g_ui_tmp_msg_cnt = 20;
        	display_type = DISPLAY_BALANCE;
			dvd_key = D_BALANCE_KEY | Balanceval;
			break;
		#endif
	/*
		case UICC_LOUDNESS:
			g_ui_tmp_msg_cnt = 20;
			if(display_type!=DISPLAY_LOUDNESS)
			{
				display_type = DISPLAY_LOUDNESS;
			}
			else if(Loudnessval)
				Loudnessval=0;
			else
				Loudnessval = 1;
			#ifdef USE_PT2314
			pt2314_loudness(Loudnessval);
			#endif
			dvd_key = D_LOUDNESS_KEY|Loudnessval;
			break;
      */
	 #ifdef BASS_TWO_KEY
		case UICC_BASS_UP:
			if(dislay_type == DISPLAY_BASS)
			{
			   if(Bassvol<14)
			   {
			     Bassvol++;
			   	 PT2320_bass();
				}
			}
			else
			{
				display_type = DISPLAY_BASS;
			}
			dvd_key = D_BASS_KEY | Bassvol;
			g_ui_tmp_msg_cnt = 20;
    		break;
	
		case UICC_BASS_DOWN:
			if(dislay_type == DISPLAY_BASS)
			{
			   if(Bassvol>0)
			   {
				 Bassvol--;
			     PT2320_bass();
			   }
			}
			else
			{
				display_type = DISPLAY_BASS;
			}
			dvd_key = D_BASS_KEY | Bassvol;
			g_ui_tmp_msg_cnt = 20;
     		break;
	#endif //bass_two_key
	
	#ifdef TREBLE_TWO_KEY
		case UICC_TREBLE_UP:
     		if(dislay_type == DISPLAY_TREBLE)
			{
			   if(Treblevol<140)
			   {
			     Treblevol++;
			     PT2320_treble();
			   }
			}
			else
			{
				display_type = DISPLAY_Treble;
			}
			dvd_key = D_TREBLE_KEY | Treble_vol;
			g_ui_tmp_msg_cnt = 20;
     		break;

		case UICC_TREBLE_DOWN:
     		if(dislay_type == DISPLAY_TREBLE)
			{
			   if(Treblevol>0)
			   {
			     Treblevol--;
			     PT2320_treble();
			   }
			}
			else
			{
				display_type = DISPLAY_Treble;
			}
			dvd_key = D_TREBLE_KEY | Treble_vol;
			g_ui_tmp_msg_cnt = 20;
     		break;
        #endif //treble_two_key
        

	 
       case UICC_MUTE:
	        if(work_mode == DVD_MODE)
			 {
			   dvd_key = IRKC_MUTE;
			   break;
			 }
	        if(radio_is_muted)
			   radio_is_muted = 0;
			 else 
			   radio_is_muted = 1;
			 mute_radio();
			 break;
		case UICC_TIMING:
			tmp =( g_ui_timing_cnt/(300*SLEEP_TIME_TAG));  //10m*60*5
			if((g_ui_timing_cnt%(300*SLEEP_TIME_TAG))>2)
				tmp++;
			if(display_type== DISPLAY_TIMING )
			{
		
				tmp =(tmp + 1)%SLEEP_MAX_CNT;
				g_ui_timing_cnt =(300*SLEEP_TIME_TAG)*tmp;	
			}
			else
				display_type = DISPLAY_TIMING;
			g_ui_tmp_msg_cnt = 20;
			tmp = g_ui_timing_cnt/300;
			if(g_ui_timing_cnt%10>10)
			  tmp++;
			dvd_key = D_TIMING_KEY|tmp;
			//key_pressed_type = 4;
			break;
        case  UICC_AVTV:
		    if(g_avtv)
			{
			  g_avtv=0;
			  Set_AV();
			}
			else
			{
			 g_avtv=1;
			 Set_TV();
			}
			break;
	default:
	    if(g_ui_tmp_msg_cnt >1)
	     g_ui_tmp_msg_cnt = 1;
	   switch(work_mode)
	   {
	    case TUNER_MODE:
		     
		     radio_action();
			 break;
		//case :
		  //   tape_operator();
		   //  break;
		//case AV2_MODE:
		  //   break;
		case DVD_MODE:
		     dvd_key = key_buff;
		     break;
	    
	   };  //work_mode    
  }//uicc_code
 } //if
 last_key=uicc_code;
}

void main(void)
{
 unsigned char i=0;
 
 init_io();
 init_timer();
 spi_init() ;
 SEI();
 decoder_power_off();
 g_avtv = 0;
 Set_AV();
 led_val = 00;
 delay_ms(150);
 decoder_power_off();
 //SEI();
 #ifndef TEST_KEY
 work_mode = DVD_MODE;
 #else
 work_mode = AV1_MODE;
 #endif
 for(i=0;i<12;i++)
     g_vfd_grid_buffer[i] = 0;
 Set_String("  DVD");
 ui_fp_update_handler();
 delay_ms(200);
 delay_ms(200);
 ui_fp_update_handler();
 delay_ms(300);
 delay_ms(200);
 work_mode_convert();
 
 while(1)
 {
  
  if(tick_flag&TICK_20MS)
  {
   tick_flag &=(~TICK_20MS);
   	fp_key_scan2();
	fp_vol_scan();
	if(work_mode==TUNER_MODE)
	{
	 if(is_autosearching) tuner_autosearch();
	 #ifdef SGJM_RDS
	 rds_handler();
	 #endif
	}
  }
  
  if(tick_flag&TICK_200MS) 
  {
   tick_flag &=(~TICK_200MS);  //clear 200msflag
   repeat++; //key repeat
   if(key_buff!=0xffff)
   {
   	#ifdef TEST_KEY
   	info = key_buff;
   	display_type = DISPLAY_KEY;
   	#endif

   	uicc_code = get_uicc_key(key_buff);
	//key_buff = 0xffff;
	if(uicc_code!=0xff)
	{
	  ui_input_handler();
	}
	else
	 dvd_key = key_buff;
	key_buff = 0xffff;
   }
    
   ui_fp_update_handler();
   
   if(g_ui_tmp_msg_cnt)
   {
     g_ui_tmp_msg_cnt--;
	 if(!g_ui_tmp_msg_cnt)
	 {
	    #ifdef SGJM_RDS
		display_type = rds_display_type;
	    #else
		display_type = 0;
		#endif
		last_key = 0xff;
		clear_vol_cnt();
	 };
   }
   
   if(g_ui_timing_cnt)
   {
    g_ui_timing_cnt--;
	if(!g_ui_timing_cnt)
	{
	 work_mode1= work_mode;
	 work_mode = POWER_OFF_MODE;
	 //work_mode1 = work_mode;
	 work_mode_convert();
	 //muted = 1;
	//MCU_mute();
	//delay_ms(200);
		//decoder_power_off();
		//delay_ms(200);
	};
   }
  };
  
 }
}

⌨️ 快捷键说明

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