📄 vfd_hw.h
字号:
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** Description : VFD Driver Header File ****************/
/*************** ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : Harrison Hsieh ****************/
/**********************************************************************/
BYTE xdata _bVfdKeyScan;
BYTE xdata _bVfdState; // for vfd state machine
#ifdef VFD_SUPPORT
#ifndef _VFD_HW_H_
#define _VFD_HW_H_
#ifndef _SHM_CHK_C_
sbit STROBE_PIN = P1^4;
sbit DATA_PIN = P1^5;
#ifdef BANK_NO
#if (BANK_NO > 4)
sbit CLK_PIN = P1^3;
#else
//sbit CLK_PIN = P1^2;
sbit CLK_PIN = P1^3;
#endif
#else
//sbit CLK_PIN = P1^2;
sbit CLK_PIN = P1^3;
#endif
#endif /* !_SHM_CHK_C_ */
#define QUEUEMARKSIZE 6 //6*8=48 is VFD_MAX_ADDR
BYTE xdata _bVfdQueueMark[QUEUEMARKSIZE]; // for 16311
//BYTE xdata _bVfdUpdateWrIdx; // may replace it in DRAM
BOOL _fgVfdHold;
BOOL _fgVfdFlash;
BYTE xdata _bLedPort;
#ifdef PANEL_LED
BOOL _fgLedChange;
BYTE _bLedState;
BOOL _fgLedOnOff;
#endif
BYTE xdata _bVfdDiscPos;
BYTE xdata _bVfdTimer; //TEMP VFD display time
BYTE xdata _bVfdFlashTimer; //VFD Flash Time
BYTE xdata _bVfdPulseLvl; //VFD Bright deep
// never change
#define VFD_ADDR_LIMIT 50
#define VFD_UNKNOWN_ADDR 0xff
#define VFD_MAX_ADDR 0x1d //48 // for 16311
#define DATA_SET_INC 0x40 // increamental address(to display memory)
#define DATA_SET_FIX 0x44 // fixed address(to display memory
#define DATA_SET_LED 0x41 // write data to led port
#define ADDR_SET 0xC0
#define KEY_SCAN 0x42
//#ifdef VFD_16311
#define SCANSIZE 17//9 //xiao 03-05-08 old is 48
//#else
//#define SCANSIZE 24
//#endif
// may change depends on customer's VFD
#define VFD_DISP_MEM_SIZE VFD_MAX_ADDR //Is 0x1a
#define VFD_SEG_BAK_SIZE MAX_SEG_SEQ_NUM //Is 7
#define VFD_SHADOW_TOTAL_SZ (VFD_DISP_MEM_SIZE * 2) + (VFD_SEG_BAK_SIZE * 2) + 4
#define SI_VFD_TMPBUF_START SI_VFD_SHADOW_START + VFD_DISP_MEM_SIZE // the current VFD display Memery
#define SI_VFD_UPDATE_WRIDX SI_VFD_SEG_ORG + VFD_SEG_BAK_SIZE
#define SI_VFD_PULSEWIDTH SI_VFD_UPDATE_WRIDX + 1
#define SI_VFD_SEG_BAK SI_VFD_TMPBUF_START + VFD_DISP_MEM_SIZE
#define SI_VFD_SEG_ORG SI_VFD_SEG_BAK + VFD_SEG_BAK_SIZE
// hardware related macro
#define vVfdStrobe(fgFlag) { \
STROBE_PIN = fgFlag; \
_nop_(); \
}
#define vVfdClk(fgFlag) { \
CLK_PIN = fgFlag; \
_nop_(); \
}
#define vVfdData(fgFlag) { \
DATA_PIN = fgFlag; \
_nop_(); \
}
#define vVfdCombineBit(bData) DATA_PIN = (bData & 0x1)
// queue/ring buffer related define
#define vVfdSetQueueMark(bAddr) _bVfdQueueMark[(bAddr >> 3)] = (_bVfdQueueMark[(bAddr >> 3)] | (1 << (bAddr % 8)))
#define vVfdClrQueueMark(bAddr) _bVfdQueueMark[(bAddr >> 3)] = (_bVfdQueueMark[(bAddr >> 3)] & (~(1 << (bAddr % 8))))
#define fgVfdQueueMark(bAddr) ((_bVfdQueueMark[(bAddr >> 3)] & (1 << (bAddr % 8))) > 0)
// local function defined here
static void vVfdUpdate(BYTE bTmp) large;
static void vVfdWrite(BYTE bAddr) large;
static vVfdWriteQueue(BYTE bAddr, BYTE bData) large;
static void vVfdUpdateState(void) large; // update into the VFD display memory
static void vVfdSequenceUpdate(BYTE bSize, BYTE *pbData, WORD wSegInfo) large;
static void vVfdLedUpdate(void) large;
static void vVfdKeyScan(BOOL fgPwrDown) large;
static void vVfdRecoverSeg(void) large;
static void vVfdDirectWrite(BYTE bAddr, BYTE bData) large;
static void vVfdFlashState(void) large;
static void vDirectSequenceUpd(BYTE bSize,BYTE *pbData, WORD wSegInfo) large;
//static void vVFDWait(BYTE time) large;
// VFD state
#define VFD_STATE_MEM_UPDATE 0
#define VFD_STATE_LED_UPDATE 1
#define VFD_STATE_KEY_SCAN 2
#ifdef DVD_RECEIVER
#define VFD_STATE_CTL_MODE_SET 3
#endif
#endif
#else
code BYTE _pbVfdDummy[] = {
0
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -