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

📄 menuctrl.c

📁 以ST公司CPU为核心的彩色电视机的完整源程序。
💻 C
📖 第 1 页 / 共 2 页
字号:
             break;
             
             case ITEM_MANUAL_TUNE :
                if(menu_item & MENU_DIRECTION )
				    command_flags = command_flags | AUTO_SEARCH_DIRECTION;
                else 
 					command_flags = command_flags &~ AUTO_SEARCH_DIRECTION;
				first_autosearch = 1;
                start_autosearch();
             break;
             
             case  ITEM_FINE_TUNE :
                if(menu_item & MENU_DIRECTION)
                    {
    				increment_VS(MEDIUM_STEP);
	    			if(fine_tune < 63)
		    			fine_tune++;
		    		}
		    	else
		    	    {
	    			decrement_VS(MEDIUM_STEP);
		    		if(fine_tune > 0)
   				        fine_tune--;
		    	    }
 				store_program_info(channel);		
			    tuning_flags = tuning_flags & ~ENABLE_AFC;  
             
             break;
             
             case ITEM_ORGANIZE :
                next_menu();             
             break;  
            } 		
    break;

    case MENU_FUNCTION:
        menu_item &=~MENU_DIRECTION;
        switch(menu_item)
        {
        case ITEM_LANGUAGE : 
            language ^=0x01;
			write_eeprom(EEPROM_LANGUAGE,language);
        break;
        case ITEM_TIMER :
            next_menu();
        break;
        }    
   break;
    
   case MENU_GAME :
   //empty;
   break;
   
    case MENU_TIMER:
		if (menu_item &MENU_DIRECTION)
		{
			menu_item &=~MENU_DIRECTION;
			if (menu_item == ITEM_WAKE_UP_PR)
			{
				menu_theme = 0;
				alarm_channel = roll_inc(alarm_channel,CHANNEL_NUMBER);
				if(alarm_channel == 0)
					alarm_channel = 0x01;
				write_eeprom(EEPROM_ALARM_CHANNEL,alarm_channel);
			}
			else
			{
				menu_theme = 2;
				if (menu_item == ITEM_TIMES)
					minute = roll_inc(minute,59);	
				else
				{
					if (menu_item == ITEM_WAKE_UP)
					{
						alarm_on_minute = roll_inc(alarm_on_minute,59);	
						write_eeprom_alarm_time(); /*write_alarm hour minute */
					}
					else
					{
						if (menu_item == ITEM_OFF_TIME)
						{
							alarm_off_minute = roll_inc(alarm_off_minute,59);	
							write_eeprom_alarm_time(); /*write_alarm hour minute */
						}		
					}
				}
			}
		}		 	
		
		else
		{
			menu_theme = 0;
			if (menu_item == ITEM_WAKE_UP_PR)
			{
				if(alarm_channel == 0x01)
					alarm_channel = 0x00;
				alarm_channel = roll_dec(alarm_channel,CHANNEL_NUMBER);
				write_eeprom(EEPROM_ALARM_CHANNEL,alarm_channel);
			}
			else
			{
				if (menu_item == ITEM_TIMES)
					hour = roll_inc(hour,23);	
				else
				{
					if (menu_item == ITEM_WAKE_UP)
					{
						alarm_on_hour = roll_inc(alarm_on_hour,23);	
						write_eeprom_alarm_time(); /*write_alarm hour minute */
					}
					else
					{
						if (menu_item == ITEM_OFF_TIME)
						{
							alarm_off_hour = roll_inc(alarm_off_hour,23);	
							write_eeprom_alarm_time(); /*write_alarm hour minute */
						}		
					}
				}
			}

		}
    break;



  	case MENU_ORGANIZE:/*ASHISH*/
		if (station_edit_flags == EDIT_DONE)
		{
			if (menu_item &MENU_DIRECTION)
			{
			menu_item = menu_item &~MENU_DIRECTION;
			menu_theme = roll_inc(menu_theme,THEME_SKIP);
			}
   		else
			{
			menu_theme = roll_dec(menu_theme,THEME_SKIP);
			}
   			i=station_page+menu_item;
   			if(i>=CHANNEL_NUMBER)i-=CHANNEL_NUMBER;
   			i = EEPROM_START_LABEL_MEMORY+(i*4)+(menu_theme-1);/*5ASH*/

   			i = read_eeprom(i);	  
   			if(i==32) station_item=29;
   			if(i==164) station_item=26;
   			if(i==96) station_item=27;
   			if(i==58) station_item=28;
   			if(i>='0' && i<='9') station_item=i-'0'+30;
   			if(i>='A' && i<='Z') station_item= i - 'A';
		}
		break;	                    
    }

    menu_item &=~MENU_DIRECTION;
}

/*****************************************************************************
INPUTS     : 
OUTPUTS    : 
DESCRIPTION: 
*****************************************************************************/
void previous_menu(void)
{
	switch(menu_page)
   {
        case MENU_DEFAULT:
            disable_menu_mode(); /* Sroll down and display off*/
		break; 

        case MENU_PICTURE:
        case MENU_GAME :
        case MENU_SOUND:  
		case MENU_INSTALL:
	    case MENU_FUNCTION:
	        menu_item=menu_page-1;	
	        menu_page=MENU_DEFAULT;
		break;

//other menu        
		case MENU_ORGANIZE:/*ASHISH*/
		    menu_item=ITEM_ORGANIZE;
            menu_page=MENU_INSTALL;
            init_nibble_time();
        break;

		case MENU_TIMER:
				if((alarm_on_hour < 24) && (alarm_off_hour <24) && (alarm_off_minute <60) && (alarm_on_minute < 60) && (alarm_channel <100))
					alarm_set = ALARM_ON;
				else
					alarm_set = 0;

            menu_item=ITEM_TIMER;	
            menu_page=MENU_FUNCTION; 
			init_nibble_time();

        break;
   }	
}

/*****************************************************************************
INPUTS     : 
OUTPUTS    : 
DESCRIPTION: 
*****************************************************************************/
void next_menu(void)
{
//	unsigned char i;
    menu_item &=~MENU_DIRECTION;

	switch (menu_page)
	{
	case MENU_DEFAULT:
   		menu_page=menu_item+1; 
		menu_item=0;	  
	break;
    
    case MENU_INSTALL :
            if(menu_item == ITEM_ORGANIZE)
            {    
			menu_page=MENU_ORGANIZE;
			menu_item=0;
            station_page=channel-1;/*page number*/	   
			station_edit_flags =0x00; /* edit_flags init */
            }
    break;
    
    case MENU_FUNCTION :
         if(menu_item == ITEM_TIMER)
            {
            menu_page = MENU_TIMER;
            menu_item = 0;
            }  
    break;

	}

	menu_theme =0;
    display_request_flags = display_request_flags | REFRESH_DISPLAY;
    display_request_flags = display_request_flags & ~MENU_FLASH_DISPLAY;/*2.17*/

}

void time_to_zore(void)
{
if(menu_page == MENU_TIMER)
    {
    switch(menu_item)
		{
		case ITEM_TIMES:
			time_flags |= SET_TIME;
			hour = DISABLE_TIME;
			minute = DISABLE_TIME;
		break;
		case ITEM_WAKE_UP:
			alarm_on_hour = DISABLE_TIME;
			alarm_on_minute = DISABLE_TIME;
			write_eeprom_alarm_time();
		break;

		case ITEM_OFF_TIME:
			alarm_off_hour = DISABLE_TIME;
			alarm_off_minute = DISABLE_TIME;
			write_eeprom_alarm_time();
		break;

		case ITEM_WAKE_UP_PR:
			alarm_channel = channel; 
			write_eeprom(EEPROM_ALARM_CHANNEL,alarm_channel);
		break;
	    }
	menu_theme = 0;
    }
    display_request_flags = display_request_flags | REFRESH_DISPLAY;
    display_request_flags = display_request_flags & ~MENU_FLASH_DISPLAY;

}
/*****************************************************************************
INPUTS     : 
OUTPUTS    : 
DESCRIPTION: 
*****************************************************************************/
void update_menu_digit_entry(unsigned char current_command)
{
   	switch (menu_page)
	{

   case MENU_TIMER:
		switch(menu_item)
		{
		case ITEM_TIMES:
			if(menu_theme < 2)
			    {
				hour = set_digit_time(menu_theme,hour,current_command,23);
			    minute = DISABLE_TIME;
			    }
			else 
			    if (menu_theme < 4)
				    minute = set_digit_time((menu_theme-2),minute,current_command,59);
			if (!(hour & 0xc0) && !(minute & 0xc0))
				time_flags = time_flags &~SET_TIME;
			menu_theme=roll_inc(menu_theme,3);
		break;
		case ITEM_WAKE_UP:
			if(menu_theme < 2)
			    {
				alarm_on_hour = set_digit_time(menu_theme,alarm_on_hour,current_command,23);
			    alarm_on_minute = DISABLE_TIME;
			    }
			else if (menu_theme < 4)
				alarm_on_minute = set_digit_time((menu_theme-2),alarm_on_minute,current_command,59);
			if (!(alarm_on_hour & 0xc0) && !(alarm_on_minute & 0xc0))
				write_eeprom_alarm_time(); /*write_alarm hour minute */
			menu_theme=roll_inc(menu_theme,3);
		break;

        case ITEM_OFF_TIME:
			if(menu_theme < 2)
			    {
				alarm_off_hour = set_digit_time(menu_theme,alarm_off_hour,current_command,23);
			    alarm_off_minute = DISABLE_TIME;
			    }
			else if (menu_theme < 4)
				alarm_off_minute = set_digit_time((menu_theme-2),alarm_off_minute,current_command,59);
			if (!(alarm_off_hour & 0xc0) && !(alarm_off_minute & 0xc0))
				write_eeprom_alarm_time(); /*write_alarm hour minute */
			menu_theme=roll_inc(menu_theme,3);
		break;

		case ITEM_WAKE_UP_PR:
			if (menu_theme == 0)  /* first time */
				alarm_channel = current_command | SET_NIBBLE_CHANNEL; 
			else
			{	
				if (alarm_channel & SET_NIBBLE_CHANNEL)
					alarm_channel &=~SET_NIBBLE_CHANNEL;
				else
					alarm_channel = alarm_channel/10;	
				alarm_channel = alarm_channel *10 + current_command;
				if (alarm_channel == 0 || alarm_channel > CHANNEL_NUMBER)
					alarm_channel = 1;
			}			
			if (!(alarm_channel &SET_NIBBLE_CHANNEL))
				write_eeprom(EEPROM_ALARM_CHANNEL,alarm_channel);
			menu_theme=roll_inc(menu_theme,1);
		break;
		}
    break;
    }
}

/*****************************************************************************
INPUTS     : 
OUTPUTS    : 
DESCRIPTION: 
*****************************************************************************/
unsigned char set_digit_time(unsigned char select,unsigned char digit_time,unsigned char current_command,unsigned char max_digit)
{
	if (select == 0) /* first */
		digit_time = current_command | SET_NIBBLE_TIME;
	else 
	{
		if (digit_time & DISABLE_TIME)	
			digit_time = current_command;
		else
		{
			if (digit_time & SET_NIBBLE_TIME)					
				digit_time = digit_time & ~SET_NIBBLE_TIME;
			else
				digit_time = digit_time/10;
			digit_time = digit_time * 10 + current_command;
			if (digit_time > max_digit)
				digit_time = max_digit;
		}
	}
	return digit_time;
}

/*****************************************************************************
INPUTS     : 
OUTPUTS    : 
DESCRIPTION: 
*****************************************************************************/
void init_nibble_time(void)
{
	alarm_channel &= ~SET_NIBBLE_CHANNEL;
	channel_store &= ~SET_NIBBLE_CHANNEL;
	hour = hour &~SET_NIBBLE_TIME; 
	minute = minute &~SET_NIBBLE_TIME; 
	alarm_on_hour = alarm_on_hour &~SET_NIBBLE_TIME; 
	alarm_on_minute = alarm_on_minute &~SET_NIBBLE_TIME; 
	alarm_off_hour = alarm_off_hour &~SET_NIBBLE_TIME; 
	alarm_off_minute = alarm_off_minute &~SET_NIBBLE_TIME; 

	if (alarm_channel == 0) alarm_channel =1;   /* DEFAULT CHANNEL */
	if ( hour&DISABLE_TIME || minute & DISABLE_TIME)
	{	hour = DISABLE_TIME; minute = DISABLE_TIME;time_flags |= SET_TIME;}
	if ( alarm_on_hour&DISABLE_TIME || alarm_on_minute & DISABLE_TIME)
	{	alarm_on_hour = DISABLE_TIME; alarm_on_minute = DISABLE_TIME;}
	if ( alarm_off_hour&DISABLE_TIME || alarm_off_minute & DISABLE_TIME)
	{	alarm_off_hour = DISABLE_TIME; alarm_off_minute = DISABLE_TIME;}
	write_eeprom_alarm_time();
	write_eeprom(EEPROM_ALARM_CHANNEL,alarm_channel);
}

/*****************************************************************************
INPUTS     : 
OUTPUTS    : 
DESCRIPTION: 
*****************************************************************************/
void toggle_skip(void)
{
	unsigned int j;
	unsigned char i;
//	if (menu_page == MENU_ORGANIZE && station_edit_flags==EDIT_DONE)
//	{
        j = EEPROM_START_CHANNEL_MEMORY+((channel-1)*3)+SETTINGS;
		i =read_eeprom(j);
		i ^=SKIP_MASK;
		write_eeprom(j,i);
//	}
}

/*****************************************************************************
INPUTS     : 
OUTPUTS    : 
DESCRIPTION: 
*****************************************************************************/
void edit_move(void)
{
  if (menu_page == MENU_ORGANIZE)
  {
		if (station_edit_flags == EDIT_DONE)
		{	
			menu_theme = THEME_PR;				
			station_source = station_page + menu_item;
			if (station_source >=CHANNEL_NUMBER) station_source-=CHANNEL_NUMBER;
			station_edit_flags |= EDIT_MOVE_SOURCE;
		}
		else
		{
			menu_theme = THEME_PR;				
			station_target = station_page + menu_item;
			if (station_target >=CHANNEL_NUMBER) station_target-=CHANNEL_NUMBER;
			station_edit_flags |= (EDIT_MOVE_TARGET|DISPLAY_WAIT);
		}
  }
}

void edit_delete(void)
{
	if (menu_page == MENU_ORGANIZE && station_edit_flags == EDIT_DONE)
	{
		menu_theme = THEME_PR;
		station_source = station_page + menu_item;
		if (station_source >=CHANNEL_NUMBER) 
			station_source-=CHANNEL_NUMBER;
		
		station_edit_flags |= (EDIT_DELETE|DISPLAY_WAIT);
	}
}


/*****************************************************************************/

⌨️ 快捷键说明

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