亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tuning.c

?? 以ST公司CPU為核心的彩色電視機的完整源程序。
?? C
字號:
/********************* SGS-THOMSON MICROELECTRONICS ************************
FILENAME     : TUNING.C
VERSION      : V1.0
DATE         : JAN 1999
AUTHOR(s)    : ASHISH RUDOLA / DEEPAK DOSHI
PROCESSOR    : ST92195
DESCRIPTION  : This module includes functions which perform channel tuning.
MODIFICATIONS:
	-
*****************************************************************************/

#include "st92196.h"
#include "tuning.h"
#include "macro.h"
#include "autosrch.h"
#include "channel.h"
#include "eeprom.h"
#include "i2c_bus.h"
#include "io.h"
#include "label.h"
#include "power.h"
#include "register.h"
#include "source.h"
#include "timer.h"
#include "utility.h"
#include "video.h"
#include "audio.h"
#include "tv_glob.h"


unsigned char system;

/* Save the current tuning state */
unsigned char tuning_state;

/*****************************************************************************
INPUTS     : none
OUTPUTS    : TUNING_REQUEST - Disable any possible tuning request
DESCRIPTION: This function initializes tuning to prevent false tuning.
*****************************************************************************/
void init_tuning(void)
{
	/* Reset tuning flags to prevent non wanted tuning on start-up */
	tuning_flags = tuning_flags & ~TUNING_REQUEST;
}

/*****************************************************************************
INPUTS     : none
OUTPUTS    : tuning_state - Point the first tuning process to start with
	     TUNING_REQUEST - Request a tuning
DESCRIPTION: This function initializes the tuning to its nominal state. It
	     should be called before any other function of this module is
	     used.
*****************************************************************************/
void start_tuning(void)
{
	/* Prepare that should be the first process to start with */
	tuning_state = SETUP_TUNING;

	/* initiate a tuning procedure, set tuning flags */
	tuning_flags = tuning_flags | TUNING_REQUEST;
		/* Check if this channel is stored in the channel list (EEPROM) */
/*		i = read_channel_info(SETTINGS);*/

  	init_channel();   

}

/*****************************************************************************
INPUTS     : TUNING_REQUEST - Set if a tuning has been requested
	     tuning_state - Current state to work with
	     channel - New channel to tune
OUTPUTS    : TUNING_REQUEST - Reset after tuning completion
	     tuning_state - Next state to handle
	     video_status - Current video status
             TUNING_AV_TIMER - General purpose timer for the tuning
	     REFRESH_DISPLAY - Refresh autosearch bargraph display
             STANDARD_SELECTION - Enable automatic color recognition
             ENABLE_AFC - Enable AFC if it has to be done (EEPRM info)
             ST9 Voltage Synthesis registers
	     see mute_audio_video
             see set_external_source_input
             see set_internal_source_input
             see read_channel_info
             see read_label
             see set_system
             see set_band
DESCRIPTION: This function updates tuning states.
*****************************************************************************/

void update_tuning(void)
{
	unsigned char i ;
	unsigned int j ;

	/* Check if a tuning has been requested */
	if (!(tv_flags & ON_STATE))
		return;


	/* Check if a tuning has been requested */
	if (tuning_flags & TUNING_REQUEST)
	{
		switch (tuning_state)
		{
			case SETUP_TUNING:
	            /*mute audio and blank the screen */
 				mute_audio_video();

                /* Make sure automatic color recognition is active */
				write_video_ram_data(STANDARD_SELECTION, 0x18);

                /* Disable AFC while tuning (not restored if video channel) */
				tuning_flags = tuning_flags & ~ENABLE_AFC;

                    /* Select internal video source  */
				/*	set_internal_source_input(); *//* source.c */
				source = TUNER;
				get_source_input();
				tuning_state = SETUP_VS;

				/* Set blanking and muting time */
				fast_timers[TUNING_AV_TIMER] = 500/MS_PER_INTERRUPT;

				break;

			case SETUP_VS:

				i = read_channel_info(VS_MSB);
                /* Setup AFC according to new channel settings */

				j = i ;
				i = i &~0xC0;
				i = i | 0x80 ;

                spp (VS_PG);
				asm ("ld R254,%0" : : "r"(i));
				i = read_channel_info(VS_LSB);
				spp (VS_PG);
				asm ("ld R255,%0" : : "r"(i));

				j = j &~ 0x3f ;
				j >>= 6 ;
				set_band(j) ;

#ifdef FINE_TUNE_STATUS

	j = EEPROM_START_FINE_TUNE_STATUS + (channel-1);
   i = read_eeprom(j);
	fine_tune = i &~ 0xC0;
	if(fine_tune == 0x1F)
        tuning_flags = tuning_flags | ENABLE_AFC;  
	else
        tuning_flags = tuning_flags &~ENABLE_AFC;  

#else
		   fine_tune = 31;
        tuning_flags = tuning_flags | ENABLE_AFC;  
#endif

				tuning_state = SETUP_CHANNEL;
				break;

			case SETUP_CHANNEL:
 				if (fast_timers[TUNING_AV_TIMER] != 0)
 					return;                         
 				/* unmute_audio_video();*/

				/* Get possible associated label */
				read_label();	/* label.c */

				set_color_standard();
				set_audio_standard();

				tuning_state = STOP_TUNING;

	/* Enable status display and refresh the current display */
	            display_request_flags |= (STATUS_DISPLAY | REFRESH_DISPLAY );

				fast_timers[TUNING_AV_TIMER] = 50/MS_PER_INTERRUPT;//feman add
				break;

			case STOP_TUNING:
				/* Before doing anything else, wait AGC to stabilize */
				if (fast_timers[TUNING_AV_TIMER] != 0) //feman debug 
				return;                         

				unmute_audio_video(); 
				user_flags = user_flags & ~FORCED_NICAM_FLAG;

				tv_flags = tv_flags &~ INITIAL_SETUP ;

				write_eeprom(EEPROM_LAST_CHANNEL,channel);

				tuning_flags = tuning_flags & ~TUNING_REQUEST;


			break;
		}
	}
}

/*****************************************************************************
INPUTS     : ENABLE_AFC - Do not track IF if AFC not enabled
		     video_status - Check identification bit
OUTPUTS    : ST9 Voltage Synthesis registers
		     see read_AFC
DESCRIPTION: AFC level can be modified by the temperature, so this function
	    	 updates VS so as to keep AFC at the nominal value.
*****************************************************************************/
void monitor_AFC(void)
{
	unsigned char i;                        /* Temporary storage */

	if (tuning_flags & ENABLE_AFC)
	{
		/* Make sure a channel is present before updating VS */

 			read_video_new();
 			i = read_data[0] & 0x08;
			if(i == 0x08)
			{ 			
 				i = read_data[2] & 0x07;
/*				if(i == 2 || i == 3)*/
				if(i == 2 )
					increment_VS ( SLOW_STEP) ;
				if(i == 3 )
					increment_VS ( MEDIUM_STEP) ;
				if(i == 4 )
					decrement_VS ( SLOW_STEP) ;
				if(i == 5 )
						decrement_VS ( MEDIUM_STEP) ;
						
			}
	}
}

/*****************************************************************************
INPUTS     : Band to tune
OUTPUTS    : ST9 IO registers
DESCRIPTION: This function sets IO pins according to the band selected. Make
	     sure a band has been defined (UHF as default in case of).
*****************************************************************************/
void set_band(unsigned char selected_band)
{
	  P3DR = P3DR & ~BAND_MASK;

    switch(selected_band)    
    {
    case VHF_L:    
        P3DR = P3DR | BAND_VL;/* VHF_L Selected*/

    break;
    case VHF_H:
        P3DR = P3DR | BAND_VH; /* VHF_H Selected*/
    break;
    case UHF:
        P3DR = P3DR | BAND_U;  /* UHF SELECTED */
    break;

    default :
        P3DR = P3DR | BAND_VL;
    break;

    }						
}			

/*****************************************************************************
INPUTS     : System to select
OUTPUTS    : ST9 IO registers
	         IF_STANDARD - Set modulation mode (positive/negative)
DESCRIPTION: This function selects system to use. Make sure a system has been
    	     defined (system C as default in case of).
*****************************************************************************/
void set_video_audio_system(unsigned char audio_standard)
{
	unsigned char j;


		if ((AUDIO_system == SYSTEM_BG) || (AUDIO_system == SYSTEM_DK)||(AUDIO_system == SYSTEM_I))
		{
				write_video_ram_data(SAW_FILTER_SWITCH, 0x10);
				j = misc1 & 0x02;
				if( j == 0) ;/* QSS */
//					P4DR = P4DR &~ SAW_SW1;
				else ;
//					P4DR = P4DR | SAW_SW1;
//				P4DR = P4DR &~ SAW_SW2;
		}
		else
		{
				write_video_ram_data(SAW_FILTER_SWITCH, 0x00);
				j = misc1 & 0x02;
				if( j == 0) ;/* QSS */
//					P4DR = P4DR | SAW_SW1;
				else ;
//					P4DR = P4DR & ~SAW_SW1;
//				P4DR = P4DR | SAW_SW2;
				
		}

} 

/*************************************************************************
This function is used to select varoius COLOR Standard

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

void set_color_standard(void)
{
	unsigned char j;

				j = read_channel_info(SETTINGS);
   				system = get_value(j,SYSTEM_MASK);
				
				
  				if (system == SYSTEM_SECAM)
				{
					write_video_ram_data(STANDARD_SELECTION, 0x10);

				}

				if (system == SYSTEM_PAL)
				{
					write_video_ram_data(STANDARD_SELECTION, 0x00);
				}
				if (system == SYSTEM_NTSC_1)
				{
					write_video_ram_data(STANDARD_SELECTION, 0x08);
				}

				if (system == SYSTEM_NTSC_2)
				{
					write_video_ram_data(STANDARD_SELECTION, 0x0A);
				}

				if (system == SYSTEM_AUTO)
				{
					write_video_ram_data(STANDARD_SELECTION, 0x18);
				}

}


/*************************************************************************
This function is used to select varoius SOUND Standard

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

void set_audio_standard(void)
{
	unsigned char j;

				j = read_channel_info(SETTINGS);
   				AUDIO_system = get_value(j,AUDIO_SYSTEM_MASK);
				
				
  				if (AUDIO_system == SYSTEM_BG)
				{
					write_video_ram_data(SOUND_STANDARD, 0x04);
				}

  				if (AUDIO_system == SYSTEM_DK)
				{
					write_video_ram_data(SOUND_STANDARD, 0x00);
				}

  				if (AUDIO_system == SYSTEM_I)
				{
					write_video_ram_data(SOUND_STANDARD, 0x02);
				}

  				if (AUDIO_system == SYSTEM_MN)
				{
					write_video_ram_data(SOUND_STANDARD, 0x06);
				}
				if (!(tuning_flags & AUTOSEARCH_REQUEST))
					set_video_audio_system(AUDIO_system) ;	

}

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


******************************************************************************/
void store_program_info(unsigned char channel)
{
  unsigned char i,k;
	unsigned int j;

	k = P3DR & BAND_MASK;  //FEMAN P4DR -> P3DR

    if(k == BAND_VL)
        k = VHF_L;
    else
        if( k == BAND_VH)
            k = VHF_H;
        else
            k = UHF;
 
	k <<= 6;
	k = k & 0xC0;

	spp(VS_PG);
    asm ("ld %0,R254" : "=r"(i));

   i= i &~ 0xC0;
	i = i | k;
	j = EEPROM_START_CHANNEL_MEMORY + ((channel-1) * 3);

	write_eeprom(j,i);

    spp (VS_PG);
    asm ("ld %0,R255" : "=r"(i));
    j++;
    write_eeprom(j, i);


#ifdef FINE_TUNE_STATUS

	j = EEPROM_START_FINE_TUNE_STATUS + (channel-1);
	i = fine_tune &~ 0xC0;
   write_eeprom(j, i);

#endif

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性生交大片免费看中文| 亚洲综合999| 日韩西西人体444www| 欧美三区免费完整视频在线观看| 国产寡妇亲子伦一区二区| 麻豆成人综合网| 国产成人综合亚洲网站| 春色校园综合激情亚洲| 99久久99久久精品国产片果冻| 成人午夜在线播放| 成人国产精品免费观看视频| 色婷婷狠狠综合| 欧美精品1区2区| 欧美激情自拍偷拍| 亚洲欧美另类久久久精品2019| 亚洲大型综合色站| 韩国女主播成人在线观看| 成人免费毛片嘿嘿连载视频| 91九色最新地址| 精品国内片67194| 中文字幕亚洲欧美在线不卡| 午夜日韩在线电影| 国产精品中文有码| 56国语精品自产拍在线观看| 国产农村妇女精品| 婷婷综合另类小说色区| 成人av免费在线观看| 在线观看91精品国产麻豆| 国产精品久久久久aaaa| 午夜精品成人在线视频| 成人高清免费在线播放| 日韩一级二级三级| 亚洲.国产.中文慕字在线| 成人精品一区二区三区四区 | 亚洲精品一区二区三区四区高清 | 国产永久精品大片wwwapp| 精品污污网站免费看| 亚洲日本乱码在线观看| 成人一区二区视频| 久久久青草青青国产亚洲免观| 亚洲1区2区3区视频| 欧美三区在线视频| 亚洲第一福利一区| 欧美一区二区在线免费观看| 亚洲第一搞黄网站| 91麻豆精品久久久久蜜臀| 亚洲综合色丁香婷婷六月图片| 99国产一区二区三精品乱码| 亚洲狠狠丁香婷婷综合久久久| 欧美最新大片在线看 | 国产午夜精品一区二区三区四区| 日韩精品五月天| 日韩精品最新网址| 国产一区二区美女| 中日韩免费视频中文字幕| 成人久久视频在线观看| 亚洲欧美色图小说| 在线成人av网站| 老司机免费视频一区二区三区| 精品国产123| 成人午夜碰碰视频| 日韩中文字幕一区二区三区| 精品久久久久久无| 91福利资源站| 国产一区二区三区免费观看| 亚洲免费在线观看视频| 欧美一区二区三区的| 国产.欧美.日韩| 蜜桃视频在线观看一区| 最新日韩在线视频| 26uuu亚洲综合色欧美 | 国产女同性恋一区二区| 欧美午夜影院一区| 成人美女视频在线看| 亚洲成人av电影在线| 国产精品久久久久久久久久久免费看| 在线播放亚洲一区| 一本到不卡精品视频在线观看| 韩国成人在线视频| 秋霞电影一区二区| 亚洲mv在线观看| 一区二区三区色| 中文字幕一区二区三区在线观看| 日韩美一区二区三区| 欧美猛男超大videosgay| 色欧美88888久久久久久影院| 国产成人鲁色资源国产91色综| 久久国产精品99精品国产| 视频在线观看国产精品| 亚洲图片欧美色图| 日韩国产欧美在线播放| 亚洲高清中文字幕| 天天色综合天天| 美女一区二区三区在线观看| 美女脱光内衣内裤视频久久网站 | 欧美日韩日日骚| 欧美日韩不卡一区| 日韩视频一区二区在线观看| 91精品国产91热久久久做人人 | 亚洲国产成人av网| 蜜桃av一区二区三区电影| 麻豆久久久久久| 粉嫩13p一区二区三区| 色婷婷久久久综合中文字幕| 在线观看免费成人| 精品久久久久久无| 最新日韩av在线| 美女性感视频久久| 99久久久国产精品| 欧美日本国产一区| 精品电影一区二区| 亚洲日穴在线视频| 麻豆91在线播放免费| 99久久精品一区二区| 91精品国产欧美日韩| 亚洲欧洲国产日韩| 国产麻豆成人传媒免费观看| 欧美性感一类影片在线播放| 国产日韩av一区| 麻豆免费看一区二区三区| 欧美性感一类影片在线播放| 国产亚洲欧洲997久久综合 | 91精品国产高清一区二区三区蜜臀 | 国产拍揄自揄精品视频麻豆| 青娱乐精品视频| 在线视频综合导航| 国产欧美日产一区| 久久99精品久久久久久| 69久久99精品久久久久婷婷| 亚洲午夜精品在线| 91蜜桃在线观看| 中文字幕制服丝袜一区二区三区| 精品一区二区三区视频| 日韩欧美亚洲另类制服综合在线 | 97久久超碰国产精品| 国产亚洲成年网址在线观看| 国内精品嫩模私拍在线| 亚洲欧美日韩小说| 奇米影视一区二区三区| 99麻豆久久久国产精品免费 | 国产一区在线观看麻豆| 日韩午夜精品视频| 精品一区二区三区免费| 国产日韩欧美精品在线| 成人精品免费网站| 亚洲精品国产无天堂网2021 | 亚洲成人一区二区在线观看| 欧美久久久久久久久久| 狠狠色伊人亚洲综合成人| 亚洲精品在线三区| kk眼镜猥琐国模调教系列一区二区| 国产精品国产三级国产aⅴ入口| av不卡免费电影| 麻豆精品一区二区综合av| 国产精品久久久一本精品| 4438成人网| 91蜜桃免费观看视频| 日韩av一二三| 亚洲美女在线国产| 精品精品国产高清a毛片牛牛 | 亚洲日本护士毛茸茸| 欧美日韩一本到| 国产91露脸合集magnet| 首页国产丝袜综合| 亚洲欧美日韩系列| 国产精品美女一区二区| 日韩精品在线一区| 欧美日韩一区国产| 不卡av在线免费观看| 韩国v欧美v日本v亚洲v| 日韩精品电影一区亚洲| 亚洲国产视频a| 亚洲综合色网站| 亚洲视频一二区| 亚洲天堂2016| 亚洲精品欧美在线| 综合分类小说区另类春色亚洲小说欧美| 日韩亚洲欧美在线| 在线不卡中文字幕| 在线播放/欧美激情| 欧美午夜精品免费| 欧美午夜精品一区| 911国产精品| 日韩欧美一区二区久久婷婷| 欧美一区三区四区| 欧美sm美女调教| 久久久精品中文字幕麻豆发布| 久久久久久夜精品精品免费| 久久久精品tv| 日韩毛片精品高清免费| 最新国产精品久久精品| 亚洲三级电影网站| 婷婷综合久久一区二区三区| 美女mm1313爽爽久久久蜜臀| 九一九一国产精品| 99国产精品久久久久久久久久| 91激情五月电影| 日韩一卡二卡三卡国产欧美| 国产欧美一区二区精品性色 | 99久久久国产精品免费蜜臀|