📄 vfd_simp.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL ****************/
/*************** ****************/
/*************** Description : Vfd Update State ****************/
/*************** Machine ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : Sung-Ching Lin ****************/
/**********************************************************************/
#pragma NOAREGS
#ifndef PC_EMULATION
#include "8032api.h"
#else
#include "emu_api.h"
#endif
#include ".\vfd\vfd.h"
#include VFD_DATA_H
#ifdef DISC_UPDATE_CODE
#if (!defined(PLAYER_NO_VFD) && defined(UPG_VFD_STATUS))
#include "vfd_simp.h"
// *********************************************************************
// NEC 16311/2 command set
// *********************************************************************
#define VFD_MODE 0x02
#define VFD_DUTY_CYCLE 0x8f
#define VFD_ADDRESS_INC 0x40
#define VFD_ADDRESS_FIX 0x44
#define VFD_ADDRESS_MASK 0xc0
#define VFD_READ_KEY 0x42
#define VFD_SW_KEY 0x43
#define VFD_READ_SW 0x43
// *********************************************************************
// VFD Basic Routine
// *********************************************************************
#define VfdClrStb() { VFD_STB = VFD_LOW; VFD_STB = VFD_LOW; }
#define VfdSetStb() { VFD_STB = VFD_HIGH; VFD_STB = VFD_HIGH; }
#define VfdClrClk() { VFD_CLK = VFD_LOW; VFD_CLK = VFD_LOW; }
#define VfdSetClk() { VFD_CLK = VFD_HIGH; VFD_CLK = VFD_HIGH; }
#define VfdClrDat() { VFD_DATA = VFD_LOW; VFD_DATA = VFD_LOW; }
#define VfdSetDat() { VFD_DATA = VFD_HIGH; VFD_DATA = VFD_HIGH; }
// *********************************************************************
// Macros
// *********************************************************************
#define VfdSend(bData) { BYTE i; BYTE bTmp = bData; \
for (i = 0; i < 8; i++) { VfdClrClk(); VFD_DATA = (bTmp & 0x1); bTmp >>= 1; VfdSetClk(); } \
VfdSetDat(); }
#define VfdStbSend(bData) { VfdClrStb(); VfdSend(bData); VfdSetStb(); }
#define VfdUpdateStartFix() \
{ VfdStbSend(VFD_MODE); VfdStbSend(VFD_DUTY_CYCLE); VfdStbSend(VFD_ADDRESS_FIX); }
#define VfdUpdateStartInc() \
{ VfdStbSend(VFD_MODE); VfdStbSend(VFD_ADDRESS_INC); VfdClrStb(); VfdSend(0 | VFD_ADDRESS_MASK); }
#define VfdUpdateByte(bAddr, bData) \
{ VfdClrStb(); VfdSend(bAddr | VFD_ADDRESS_MASK); VfdSend(bData); VfdSetStb(); }
#define VfdDelay() { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }
// *********************************************************************
// VfdClear
// *********************************************************************
#define VfdClear() { BYTE j; for (j = 0; j <= VFD_REFRESH_MAX; j++) { VfdDelay(); VfdSend(0); } VfdSetStb(); VfdStbSend(VFD_DUTY_CYCLE); }
#define VfdSet() { BYTE j; for (j = 0; j <= VFD_REFRESH_MAX; j++) { VfdDelay(); VfdSend(0xff); } VfdSetStb(); VfdStbSend(VFD_DUTY_CYCLE); }
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
void VfdFlashStatus(BYTE bMode)
{
if (bMode == 2)
{
/* clear VFD */
VfdUpdateStartInc();
VfdClear();
}
else
{
VfdUpdateStartFix();
if (bMode == 0)
{
VfdSend0();
}
else if (bMode == 1)
{
VfdSend1();
}
}
}
#else /* dummy */
void VfdFlashStatus(BYTE bMode)
{
return;
}
#endif /* PLAYER_NO_VFD */
#endif // DISC_UPDATE_CODE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -