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

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

?? nec_fp.c

?? ZORAN 962/966 SOURCE CODE,DVD chip
?? C
字號:
/* **************************************************************************************
 *  Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
 *  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
 *
 *  File: $Workfile: nec_fp.c $             
 *
 * Description:
 * ============
 * Nec Front Panel
 * 
 * Log:
 * ====
 * $Revision: 7 $
 * Last Modified by $Author: Billt $ at $Modtime: 04-03-30 11:07 $ 
 ****************************************************************************************
 * Updates:
 ****************************************************************************************
 * $Log: /I76/I76_Customer/I76_Mico/FP/nec_fp/nec_fp.c $
 * 
 * 7     04-03-30 20:47 Billt
 * set output for Dout when needed
 * 
 * 6     03-06-17 18:26 Admin
 * Merge for ExinoII project
 * 
 * 5     03-04-21 19:11 Billt
 * Added FPDATA_USE_ONE_PIN
 * 
 * 4     1/07/03 10:34p Leslie
 * Add SLOW_FP
 * 
 * 3     12/09/02 5:58p Leslie
 * Support D16311_BT224_VFD
 * 
 * 4     23/04/02 9:26 Nirm
 * - Added dependency in "Config.h".
 * 
 * 3     9/01/02 18:35 Nirm
 * Corrected Include-paths.
 * 
 * 2     25/12/01 15:55 Atai
 * Code cleaning
 **************************************************************************************** */
#include "Config.h"		// Global Configuration - do not remove!


#ifndef DIRECT_KEY_SCAN


#include "Include\sysdefs.h"
#include "Playcore\Timing\timing.h"
#include "Devices\FP\fp_ll.h"
#include "Devices\FP\NEC_FP\nec_fp.h"
#include "Devices\FP\NEC_FP\nec_io.h"
#include "Kernel\Ker_API.h"

static BYTE p_keycode[BYTES_USED_TO_SCANKEY];
extern BYTE g_vfd_grid_count;

/****************************************************************************/
void VFD_LL_Init(BYTE grid_count)
{
    BYTE i;

    for (i=0; i<BYTES_USED_TO_SCANKEY; i++)
		p_keycode[i] = 0;

	VFD_LL_SetGrid(grid_count);

    Set_Fp_STB(1);
    Ker_DelayUs(1);
    Set_Fp_CLK(1);
    Ker_DelayUs(1);
}
/****************************************************************************/
void VFD_LL_SetGrid(BYTE grid_count)
{
	BYTE real_grid_value;

	switch (grid_count)
	{
#ifdef UPD_16311
    case 8:
        real_grid_value = G8_S20;
   		break;
	case 9:
        real_grid_value = G9_S19;
		break;
    case 10:
        real_grid_value = G10_S18;
		break;
	case 11:
        real_grid_value = G11_S17;
		break;
	case 12:
        real_grid_value = G12_S16;
		break;
	case 13:
        real_grid_value = G13_S15;
		break;
	case 14:
        real_grid_value = G14_S14;
		break;
	case 15:
        real_grid_value = G15_S13;
		break;
	case 16:
        real_grid_value = G16_S12;
		break;
    default:
        real_grid_value = G14_S14;
		break;

#else
	case 4:
		real_grid_value = G4_S16;
		break;
	case 5:
		real_grid_value = G5_S16;
		break;
	case 6:
		real_grid_value = G6_S16;
		break;
	case 7:
		real_grid_value = G7_S15;
		break;
	case 8:
		real_grid_value = G8_S14;
		break;
	case 9:
		real_grid_value = G9_S13;
		break;
	case 10:
		real_grid_value = G10_S12;
		break;
	case 11:
		real_grid_value = G11_S11;
		break;
	default:
		real_grid_value = G11_S11;
		break;
#endif	//#ifdef UPD_16311	
	}

   
	Ker_DelayUs(1);
	Set_Fp_STB(1);

	Ker_DelayUs(1);
	Set_Fp_STB(0);
  
	Ker_DelayUs(1);
	VFD_LL_WriteByte( DISPLAY_MODE| real_grid_value );

	Ker_DelayUs(1);
}
/****************************************************************************/
void VFD_LL_SetDim(BYTE vfd_dim_level)
{
  BYTE real_dim_value;

  switch (vfd_dim_level)
  {
	case 0:
		real_dim_value = 0;
		break;
	case 1:
		real_dim_value = GON|DIM_2_16;
		break;
	case 2:
		real_dim_value = GON|DIM_4_16;
		break;
	case 3:
		real_dim_value = GON|DIM_10_16;
		break;
	case 4:
		real_dim_value = GON|DIM_11_16;
		break;
	case 5:
		real_dim_value = GON|DIM_12_16;
		break;
	case 6:
		real_dim_value = GON|DIM_13_16;
		break;
	case 7:
		real_dim_value = GON|DIM_14_16;
		break;
	default:
		real_dim_value = GON|DIM_14_16;
		break;
  }

  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);
  
  Ker_DelayUs(1);
  VFD_LL_WriteByte( DISPLAY_CONTROL | real_dim_value );

  Ker_DelayUs(1);

}
/****************************************************************************/
#ifdef D_NEW_VFD 
void VFD_LL_WriteDisplayRAM( BYTE grid, BYTE data )
{
	if (0 == grid)
	{
		Ker_DelayUs(1);
		Set_Fp_STB(1);

		Ker_DelayUs(1);
		Set_Fp_STB(0);
  
		Ker_DelayUs(1);
		VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));

		Ker_DelayUs(1);
		Set_Fp_STB(1);

		Ker_DelayUs(1);
		Set_Fp_STB(0);

		Ker_DelayUs(1);
		VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | 0);
		Ker_DelayUs(1);
	}								
	VFD_LL_WriteByte( data );
  	Ker_DelayUs(1);
  	
#ifdef UPD_16311
  	if (grid == (3*g_vfd_grid_count - 1))
#else
  	if (grid == (2*g_vfd_grid_count - 1))
#endif
  	{
		Set_Fp_STB(1);
		Ker_DelayUs(1);
	}
}

#else

void VFD_LL_WriteDisplayRAM( BYTE grid, WORD data )
{
  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);
  
  Ker_DelayUs(1);
  VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));

  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);

  Ker_DelayUs(1);
// add for support for upd16311
#ifdef UPD_16311
  VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (3*grid));
#else  
  VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | 2*grid);
#endif  // #ifdef UPD_16311
  Ker_DelayUs(1);								
  VFD_LL_WriteByte( (BYTE) (data & 0x00ff) );

  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);

  Ker_DelayUs(1);
  VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));

  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);

  Ker_DelayUs(1);
// add for support for upd16311
#ifdef UPD_16311
  VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (3*grid+1));
#else
  VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | 2*grid+1);
#endif  //#ifdef UPD_16311

  Ker_DelayUs(1);
  VFD_LL_WriteByte( (BYTE) (data >> 8) );

  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
}
#endif

/****************************************************************************/
/*
By Jerry CAI
Nov 30, 2002
*/
#ifdef D16311_BT224_VFD 
void VFD_LL_WriteDisplayRAM_InDword( BYTE grid, DWORD data )
{

	
  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);
  
  Ker_DelayUs(1);
  VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));

  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);

  Ker_DelayUs(1);

  VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (grid*3));

  Ker_DelayUs(1);								
  VFD_LL_WriteByte( (BYTE) (data & 0x00ff) );

  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);

  Ker_DelayUs(1);
  VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));

  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);

  Ker_DelayUs(1);

  VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (grid*3+1));

  Ker_DelayUs(1);
  VFD_LL_WriteByte( (BYTE) ((data >> 8) & 0x00ff) );

  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);



  VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));


  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);

  Ker_DelayUs(1);

  VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (grid*3+2));

  Ker_DelayUs(1);
  VFD_LL_WriteByte( (BYTE) ((data >> 16) & 0x00ff) );

  Ker_DelayUs(1);
  Set_Fp_STB(1);
  Ker_DelayUs(1);

 
}

#endif



/****************************************************************************/
void VFD_LL_RefreshLED( BYTE led )
{
  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);

  Ker_DelayUs(1);
  VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_LIGHTS ));

  Ker_DelayUs(1);
  VFD_LL_WriteByte( led );

  Ker_DelayUs(1);
  Set_Fp_STB(1);

}






BYTE VFD_LL_ReadKeyScan( BYTE*** Key_Code )
{
  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);
  
  /*
   * Note: The wait states are necessary because
   *       FP needs to have some time between
   *       writes.
   */
  
  Ker_DelayUs(1);
  VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | READ_KEYSCAN ));
  
  Set_FpDout_To_Input();

  Ker_DelayUs(1);
  VFD_LL_ReadByte( p_keycode );
  
  Ker_DelayUs(1);
  VFD_LL_ReadByte( p_keycode+1 );
 
  Ker_DelayUs(1);
  VFD_LL_ReadByte( p_keycode+2 );

  Set_FpDout_To_Output();

  Ker_DelayUs(1);
  Set_Fp_STB(1);

  **Key_Code = p_keycode;

  return BYTES_USED_TO_SCANKEY;
}


/****************************************************************************/
void VFD_LL_ReadInputs( BYTE** inputs )
{
  Ker_DelayUs(1);
  Set_Fp_STB(1);

  Ker_DelayUs(1);
  Set_Fp_STB(0);

  Ker_DelayUs(1);
  VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | READ_INPUTS ) );
  
  Set_FpDout_To_Input();

  Ker_DelayUs(1);
  VFD_LL_ReadByte( *inputs );

  Set_FpDout_To_Output();

  Ker_DelayUs(1);
  Set_Fp_STB(1);
}
/****************************************************************************/
static void VFD_LL_WriteByte( BYTE byte )
{
	BYTE i;

//ZCO LC121702   
#ifdef SLOW_FP
      Ker_DelayUs(40);
#endif

	Set_FpDout_To_Output();
	Ker_DelayUs(1);

	for( i=0x01; (i<=0x80 && i!=0); i<<=1 )	 // Change "&" into "&&" for condition
	{
//ZCO LC121702
#ifdef SLOW_FP
      Ker_DelayUs(5);
#endif
      Set_Fp_CLK(0);
	  Set_Fp_DOUT((byte & i) ? 1:0);
      Set_Fp_CLK(1);
    }
//ZCO LC121702
#ifdef SLOW_FP
      Ker_DelayUs(40);
#endif
}
/****************************************************************************/
static void VFD_LL_ReadByte( BYTE *byte )
{
	BYTE i;	

	Set_Fp_CLK(1);
	*byte = 0;   // Clear byte first

//ZCO LC121702
#ifdef SLOW_FP
      Ker_DelayUs(40);
#endif

	for( i=0; i<7; i++ )
    {

//ZCO LC121702
#ifdef SLOW_FP
      Ker_DelayUs(5);
#endif

	  Set_Fp_CLK(0);
      *byte |= ( Get_Fp_DIN() ? 0x80:0 );
      Set_Fp_CLK(1);
      *byte >>= 1;	  
    }

	 Set_Fp_CLK(0);
     *byte |= ( Get_Fp_DIN() ? 0x80:0 );
     Set_Fp_CLK(1);

//ZCO LC121702
#ifdef SLOW_FP
      Ker_DelayUs(40);
#endif
}


#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡视频免费播放| 成人在线综合网| 国产成人三级在线观看| 日本韩国欧美国产| 久久久99精品免费观看不卡| 亚洲人123区| 国产成人丝袜美腿| 日韩美女天天操| 午夜久久久影院| proumb性欧美在线观看| 久久先锋资源网| 日韩在线卡一卡二| 91丨porny丨蝌蚪视频| 国产日韩精品一区| 久久国产精品一区二区| 欧美日韩精品电影| 亚洲制服丝袜一区| 97成人超碰视| 中文字幕视频一区| 成人午夜碰碰视频| 国产欧美精品一区二区色综合| 日本不卡123| 91精品一区二区三区久久久久久 | 亚洲一区二区高清| 91电影在线观看| 亚洲精品第一国产综合野| 成人激情免费视频| 国产精品久久久久久久久晋中 | 狠狠色丁香婷婷综合| 欧美mv和日韩mv的网站| 久久国产夜色精品鲁鲁99| 日韩一区二区电影| 美女尤物国产一区| 精品久久久久久久久久久久久久久| 丝袜美腿亚洲色图| 欧美一区二区三区视频免费| 青娱乐精品在线视频| 制服丝袜中文字幕一区| 日韩av电影免费观看高清完整版 | 日韩极品在线观看| 日韩三级在线观看| 精品一二三四区| 久久日韩粉嫩一区二区三区 | 91福利在线免费观看| 亚洲五码中文字幕| 日韩一区二区三区在线观看| 伦理电影国产精品| 国产视频视频一区| 久久精品在线观看| 性欧美疯狂xxxxbbbb| 日韩三区在线观看| 丁香婷婷综合网| 日韩中文欧美在线| 日韩精彩视频在线观看| 三级一区在线视频先锋 | 最新成人av在线| 亚洲人快播电影网| 一区二区在线观看视频| 亚洲国产欧美一区二区三区丁香婷| 中文字幕制服丝袜一区二区三区| 欧美高清在线一区二区| 一区二区三区中文字幕电影 | 欧日韩精品视频| 欧美疯狂做受xxxx富婆| 日韩免费性生活视频播放| 国产色产综合产在线视频| 亚洲电影一级片| 不卡视频在线看| 中文字幕国产一区| 亚洲高清免费在线| 国产一区二区三区在线观看免费| 国产三区在线成人av| 欧洲另类一二三四区| 青青草成人在线观看| 欧美经典一区二区三区| 欧美日韩精品欧美日韩精品 | 久久一区二区视频| 一区二区在线免费观看| 欧美日韩国产首页| 成人国产精品视频| 亚洲电影视频在线| 欧美军同video69gay| 国产激情视频一区二区三区欧美| 亚洲丝袜制服诱惑| 日韩欧美中文一区| 色婷婷精品久久二区二区蜜臀av| 国产乱淫av一区二区三区 | 色诱亚洲精品久久久久久| 蜜臀av一区二区在线免费观看 | 欧美激情一区二区在线| 91麻豆精品国产91久久久使用方法| 国产成+人+日韩+欧美+亚洲| 青青草国产精品97视觉盛宴| 一级中文字幕一区二区| 国产精品福利一区二区三区| 精品久久人人做人人爽| 91麻豆精品久久久久蜜臀| 欧美日韩中文一区| 色av成人天堂桃色av| heyzo一本久久综合| 国产成人综合在线播放| 韩日av一区二区| 免费成人在线影院| 日本美女一区二区| 亚洲超碰精品一区二区| 一区二区高清视频在线观看| 亚洲卡通欧美制服中文| 国产精品免费丝袜| 国产精品黄色在线观看| 国产欧美日韩视频一区二区| 国产亚洲一区二区三区四区| 精品人在线二区三区| 日韩区在线观看| 这里只有精品免费| 日韩欧美自拍偷拍| 26uuu亚洲婷婷狠狠天堂| 久久女同精品一区二区| 国产亚洲综合在线| 中文字幕制服丝袜一区二区三区| 亚洲欧洲国产专区| 亚洲激情自拍偷拍| 亚洲国产精品一区二区尤物区| 亚洲一卡二卡三卡四卡无卡久久| 亚洲午夜久久久久久久久电影网| 夜色激情一区二区| 日韩激情视频在线观看| 毛片一区二区三区| 国产精品亚洲视频| 9i看片成人免费高清| 色香蕉久久蜜桃| 欧美群妇大交群中文字幕| 日韩一区二区三区电影| 国产无人区一区二区三区| 国产精品久久久久久久久动漫 | 欧美韩日一区二区三区四区| 国产精品欧美极品| 亚洲影视在线播放| 久久精品国产精品亚洲红杏| 国产大陆a不卡| 欧美综合亚洲图片综合区| 欧美一级免费观看| 国产欧美日韩综合精品一区二区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 亚洲精品乱码久久久久久日本蜜臀| 亚洲制服欧美中文字幕中文字幕| 麻豆久久久久久久| 91啪亚洲精品| 欧美一卡二卡在线| 国产精品成人一区二区艾草| 亚洲成a人v欧美综合天堂下载| 精品一区二区成人精品| 91老师国产黑色丝袜在线| 欧美一区二区三区喷汁尤物| 国产精品乱码一区二区三区软件| 亚洲综合男人的天堂| 精久久久久久久久久久| 色悠久久久久综合欧美99| 欧美精品一区二区三区在线| 一区二区在线观看视频| 国产精品影视天天线| 欧美日韩精品综合在线| 国产欧美日韩中文久久| 日韩激情av在线| 在线一区二区视频| 国产日韩欧美a| 经典三级视频一区| 欧美性xxxxx极品少妇| 欧美国产成人精品| 久久av中文字幕片| 欧美日韩另类国产亚洲欧美一级| 国产精品网站在线播放| 青青草视频一区| 欧美精品色一区二区三区| 国产精品萝li| 国产高清不卡二三区| 欧美一区在线视频| 亚洲一区二区三区四区五区黄| caoporn国产精品| 国产亚洲欧美日韩日本| 麻豆精品久久久| 4hu四虎永久在线影院成人| 夜夜夜精品看看| 不卡视频免费播放| 国产精品网站在线| 成人一区二区三区视频在线观看| 日韩精品中文字幕一区二区三区| 亚洲综合丁香婷婷六月香| 97久久精品人人做人人爽50路| 国产日韩av一区| 国产精品一卡二卡| 国产农村妇女毛片精品久久麻豆 | 久久人人97超碰com| 久久国产人妖系列| 精品免费日韩av| 美女视频黄频大全不卡视频在线播放 | 亚洲欧美在线视频| 99在线视频精品| 国产精品福利电影一区二区三区四区| 国产精品69久久久久水密桃| 久久综合九色综合97婷婷|