⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hvpp.h

📁 采用mega16设计的avr单片机编程工具
💻 H
字号:
////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file	HVPP.h
/// @author	Simon Qian(webmaster@SimonQian.com)
/// @date	Last Update on 2008-04-07
/// @brief	headerfile for HVPP.c
/// @par	license
/// 		AVRminiProg is distributed under the terms and conditions of GPLv2, see License.txt
////////////////////////////////////////////////////////////////////////////////////////////////////

#define HVPP_CONN(a,b)							a ## b

#define HVPP_DIRPort(name)						HVPP_CONN(DDR,name)
#define HVPP_PINPort(name)						HVPP_CONN(PIN,name)
#define HVPP_PORTPort(name)						HVPP_CONN(PORT,name)

#define HVPP_CTRL_DIR							HVPP_DIRPort(HVPP_CTRL_PORT_NAME)
#define HVPP_CTRL_PIN							HVPP_PINPort(HVPP_CTRL_PORT_NAME)
#define HVPP_CTRL_PORT							HVPP_PORTPort(HVPP_CTRL_PORT_NAME)

#define HVPP_DATA_DIR							HVPP_DIRPort(HVPP_DATA_PORT_NAME)
#define HVPP_DATA_PIN							HVPP_PINPort(HVPP_DATA_PORT_NAME)
#define HVPP_DATA_PORT							HVPP_PORTPort(HVPP_DATA_PORT_NAME)

#define HVPP_DATA_SetOutput()					(HVPP_DATA_DIR = 0xFF)
#define HVPP_DATA_SetInput()					(HVPP_DATA_DIR = 0)
#define HVPP_DATA_Out(d)						(HVPP_DATA_PORT = (d))
#define HVPP_DATA_In()							(HVPP_DATA_PIN)

#define HVPP_CTRL_SetOutput()					(HVPP_CTRL_DIR = HVPP_CTRL_GetSig(HVPP_CTRLIDX_PAGEL,HVPP_BS_HighByte))
#define HVPP_CTRL_SetInput()					(HVPP_CTRL_DIR = 0)
#define HVPP_CTRL_Out(d)						(HVPP_CTRL_PORT = (d))

// Format of hvControlStack
// Mega48:		0x0E,0x1E,0x0F,0x1F,0x2E,0x3E,0x2F,0x3F,0x4E,0x5E,0x4F,0x5F,0x6E,0x7E,0x6F,0x7F,0x66,0x76,0x67,0x77,0x6A,0x7A,0x6B,0x7B,0xBE,0xFD,0x00,0x01,0x00,0x00,0x00,0x00
// Opt(Offset):	LoadAddr(0)        ,LoadData(4)        ,LoadCommand(8)     ,LoadNone(12)       ,nWR(16)            ,nOE(20)            ,PAGEL(24),    ,Pin Of RDY(27)
// BS:			L   ,H   ,ExtL,ExtH,L   ,H   ,ExtL,ExtH,L   ,H   ,ExtL,ExtH,L   ,H   ,ExtL,ExtH,L   ,H   ,ExtL,ExtH,L   ,H   ,ExtL,ExtH,L   ,H   ,
// HVPP ByteStatus
#define HVPP_BS_LowByte							0
#define HVPP_BS_HighByte						1
#define HVPP_BS_ExtLowByte						2
#define HVPP_BS_ExtHighByte						3

// HVPP operation
#define HVPP_CTRLIDX_LoadAddr					0
#define HVPP_CTRLIDX_LoadData					4
#define HVPP_CTRLIDX_LoadCommand				8
#define HVPP_CTRLIDX_LoadNone					12
#define HVPP_CTRLIDX_nWR						16
#define HVPP_CTRLIDX_nOE						20
#define HVPP_CTRLIDX_PAGEL						24
#define HVPP_CTRLIDX_PinOfRDY					27

#define HVPP_CTRL_GetSig(op,bs)					hvControlStack[(op) + (bs)]

#define HVPP_GetMode()							(HVPP_CTRL_PIN)

#define HVPP_RDY_Get()							(HVPP_GetMode() & (1 << HVPP_CTRL_GetSig(HVPP_CTRLIDX_PinOfRDY,0)))
uint8 HVPP_RDY_Wait(void);

void HVPP_ChangeMode(uint8 mode);

uint8 HVPP_WriteData(uint8 mode,uint8 data);

#define HVPP_LoadCommand(cmd)					HVPP_WriteData(HVPP_CTRL_GetSig(HVPP_CTRLIDX_LoadCommand,HVPP_BS_LowByte),(cmd))

#define HVPP_LoadData(bs,data)					HVPP_WriteData(HVPP_CTRL_GetSig(HVPP_CTRLIDX_LoadData,(bs)),(data))
#define HVPP_LoadDataLowByte(data)				HVPP_LoadData(HVPP_BS_LowByte,(data))
#define HVPP_LoadDataHighByte(data)				HVPP_LoadData(HVPP_BS_HighByte,(data))
#define HVPP_LoadDataExtendedLowByte(data)		HVPP_LoadData(HVPP_BS_ExtLowByte,(data))
#define HVPP_LoadDataExtendedHighByte(data)		HVPP_LoadData(HVPP_BS_ExtHighByte,(data))

#define HVPP_WriteDataLowByte()					HVPP_nWR_NPulse(HVPP_BS_LowByte,0)
#define HVPP_WriteDataHighByte()				HVPP_nWR_NPulse(HVPP_BS_HighByte,0)
#define HVPP_WriteDataExtendedLowByte()			HVPP_nWR_NPulse(HVPP_BS_ExtLowByte,0)
#define HVPP_WriteDataExtendedHighByte()		HVPP_nWR_NPulse(HVPP_BS_ExtHighByte,0)

#define HVPP_LoadAddress(bs,addr)				HVPP_WriteData(HVPP_CTRL_GetSig(HVPP_CTRLIDX_LoadAddr,(bs)),(addr))
#define HVPP_LoadAddressLowByte(addr)			HVPP_LoadAddress(HVPP_BS_LowByte,(addr))
#define HVPP_LoadAddressHighByte(addr)			HVPP_LoadAddress(HVPP_BS_HighByte,(addr))
#define HVPP_LoadAddressExtendedLowByte(addr)	HVPP_LoadAddress(HVPP_BS_ExtLowByte,(addr))
#define HVPP_LoadAddressExtendedHighByte(addr)	HVPP_LoadAddress(HVPP_BS_ExtHighByte,(addr))

#define HVPP_nWR_NPulse(bs,dly)					(HVPP_ChangeMode(HVPP_CTRL_GetSig(HVPP_CTRLIDX_nWR,(bs)))/*,DelayMS(dly)*/,HVPP_ChangeMode(HVPP_CTRL_GetSig(HVPP_CTRLIDX_LoadNone,(bs))))
#ifdef HVPP_SignalDelay_InUS
#define HVPP_XTAL1_PPulse()						(HVPP_XTAL1_Set(),DelayUS(HVPP_SignalDelay_InUS),HVPP_XTAL1_Clr())
#else
#define HVPP_XTAL1_PPulse()						(HVPP_XTAL1_Set(),HVPP_XTAL1_Clr())
#endif
#define HVPP_LatchFlashData()					(HVPP_ChangeMode(HVPP_CTRL_GetSig(HVPP_CTRLIDX_PAGEL,HVPP_BS_HighByte)),HVPP_ChangeMode(HVPP_CTRL_GetSig(HVPP_CTRLIDX_LoadNone,HVPP_BS_HighByte)))
#define HVPP_LatchEEPROMData()					(HVPP_ChangeMode(HVPP_CTRL_GetSig(HVPP_CTRLIDX_PAGEL,HVPP_BS_LowByte)),HVPP_ChangeMode(HVPP_CTRL_GetSig(HVPP_CTRLIDX_LoadNone,HVPP_BS_LowByte)))

#define HVPP_EnableReadData(bs)					(HVPP_DATA_SetInput(),HVPP_ReadDataChangeByte(bs))
#define HVPP_ReadDataChangeByte(bs)				HVPP_ChangeMode(HVPP_CTRL_GetSig(HVPP_CTRLIDX_nOE,(bs)))
#define HVPP_DisableReadData(bs)				HVPP_ChangeMode(HVPP_CTRL_GetSig(HVPP_CTRLIDX_LoadNone,(bs)))
#ifdef HVPP_SignalDelay_InUS
#define HVPP_ReadData()							(DelayUS(HVPP_SignalDelay_InUS),HVPP_DATA_In())
#else
#define HVPP_ReadData()							(HVPP_DATA_In())
#endif


void HVPP_Init(void);
void HVPP_Fini(void);

#define HVPP_Error						1
#define HVPP_Success					0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -