?? pt6311_fp.c
字號:
/* **************************************************************************************
* Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
*
* File: $Workfile: pt6311_fp.c $
*
* Description:
* ============
* Nec Front Panel
*
* Log:
* ====
* $Revision: 1 $
* Last Modified by $Author: Tomasp $ at $Modtime: 1/20/03 3:31p $
****************************************************************************************
* Updates:
****************************************************************************************
* $Log: /SourceCode/I64_Common/I64_Reference/FP/pt6311_fp/pt6311_fp.c $
*
* 1 1/20/03 10:07p Tomasp
*
* 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!
#include "Include\sysdefs.h"
#include "Playcore\Timing\timing.h"
#include "FP\fp_ll.h"
#include "FP\NEC_FP\nec_fp.h"
#include "FP\NEC_FP\nec_io.h"
static BYTE p_keycode[BYTES_USED_TO_SCANKEY];
/****************************************************************************/
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);
delay_us(1);
Set_Fp_CLK(1);
delay_us(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:
//G8_S20 AS DEFAULT
real_grid_value=0; //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
}
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( DISPLAY_MODE| real_grid_value );
delay_us(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;
}
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( DISPLAY_CONTROL | real_dim_value );
delay_us(1);
}
/****************************************************************************/
void VFD_LL_WriteDisplayRAM( BYTE grid, WORD data )
{
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(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
delay_us(1);
VFD_LL_WriteByte( (BYTE) (data & 0x00ff) );
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(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
delay_us(1);
VFD_LL_WriteByte( (BYTE) (data >> 8) );
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
}
/****************************************************************************/
/*
By Jerry CAI
Nov 30, 2002
*/
#ifdef D16311_BT224_VFD
void VFD_LL_WriteDisplayRAM_InDword( BYTE grid, DWORD data )
{
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (grid*3));
delay_us(1);
VFD_LL_WriteByte( (BYTE) (data & 0x00ff) );
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (grid*3+1));
delay_us(1);
VFD_LL_WriteByte( (BYTE) ((data >> 8) & 0x00ff) );
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (grid*3+2));
delay_us(1);
VFD_LL_WriteByte( (BYTE) ((data >> 16) & 0x00ff) );
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
}
#endif
/****************************************************************************/
void VFD_LL_RefreshLED( BYTE led )
{
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_LIGHTS ));
delay_us(1);
VFD_LL_WriteByte( led );
delay_us(1);
Set_Fp_STB(1);
}
BYTE VFD_LL_ReadKeyScan( BYTE*** Key_Code )
{
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
/*
* Note: The wait states are necessary because
* FP needs to have some time between
* writes.
*/
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | READ_KEYSCAN ));
Set_FpDout_To_Input();
delay_us(1);
VFD_LL_ReadByte( p_keycode );
delay_us(1);
VFD_LL_ReadByte( p_keycode+1 );
delay_us(1);
VFD_LL_ReadByte( p_keycode+2 );
Set_FpDout_To_Output();
delay_us(1);
Set_Fp_STB(1);
**Key_Code = p_keycode;
return BYTES_USED_TO_SCANKEY;
}
/****************************************************************************/
void VFD_LL_ReadInputs( BYTE** inputs )
{
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | READ_INPUTS );
delay_us(1);
VFD_LL_ReadByte( *inputs );
delay_us(1);
Set_Fp_STB(1);
}
/****************************************************************************/
static void VFD_LL_WriteByte( BYTE byte )
{
BYTE i;
for( i=0x01; (i<=0x80 && i!=0); i<<=1 ) // Change "&" into "&&" for condition
{
Set_Fp_CLK(0);
Set_Fp_DOUT((byte & i) ? 1:0);
Set_Fp_CLK(1);
}
}
/****************************************************************************/
static void VFD_LL_ReadByte( BYTE *byte )
{
BYTE i;
Set_Fp_CLK(1);
*byte = 0; // Clear byte first
for( i=0; i<7; i++ )
{
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);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -