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

📄 setmacro.h

📁 16位单片机H8的例子源代码
💻 H
字号:
/*
****************************************************************************
					H I T A C H I    P R O P R I E T A R Y

	COPYRIGHT (c)	2001 BY Semiconductor & Integrated Circuits,Hitachi,Ltd.
						---  ALL RIGHTS RESERVED  ---

	File Name	:SetMacro.h
	Working		:macro definition
	Created		:Rev 2001_11_28 {Author : T.Ishikawa}
****************************************************************************
*/

#define	JoinContents



/*	USB register definition	for H8S/2215	*/
#define	INTERRUPT_REGISTER				USBFM.UIFR.LONG

#define	INTERRUPT0_REGISTER				USBFM.UIFR.BYTE.HH
#define	INTERRUPT1_REGISTER				USBFM.UIFR.BYTE.HL
#define	INTERRUPT2_REGISTER				USBFM.UIFR.BYTE.LH
#define	INTERRUPT3_REGISTER				USBFM.UIFR.BYTE.LL

#define	STALL_REGISTER					USBFM.UESTL.BYTE.H
#define	FIFO_CLEAR_REGISTER				USBFM.UFCLR.BYTE.H
#define	READ_TRIGER_REGISTER			USBFM.UTRG.BYTE.H
#define	WRITE_TRIGER_REGISTER			USBFM.UTRG.BYTE.H





/*	each register bit	*/
/*	interrupt flag register	*/
#define	EP0_I_ACK_BITS					0x02000000	/*	EP0i_TS	*/
#define	EP0_I_NACK_BITS					0x04000000	/*	EP0i_TR	*/
#define	EP0_O_ACK_BITS					0x08000000	/*	EP0o_TS	*/
#define	SETUP_TS_BITS					0x01000000	/*	SETUP_TS	*/
#define	EP1_FULL_BIT					0x00040000	/*	EP1_FULL	*/
#define	EP2_EMPTY_BIT					0x00010000	/*	EP2_EMPTY	*/
#define	EP2_TR_BIT						0x00020000	/*	EP2_TR	*/
#define	BRST_BIT						0x80		/*	BRST	*/
#define	VBUS_F_BIT						0x01		/*	VBUS_F	*/
#define	CK48READY_F_BIT					0x80		/*	CK48READY	*/
/*	#define	EP3_ACK_BIT						0x0	EP3_TS	*/
/*	#define	EP3_NACK_BIT					0x10	EP3_TR	*/



/*	FIFO clear register	*/
#define	EP0I_FIFO_CLR_BIT				0x0200	/*	EP0i	*/
#define	EP0O_FIFO_CLR_BIT				0x0400	/*	EP0o	*/
#define	EP1_FIFO_CLR_BIT				0x2000	/*	EP1	*/
#define	EP2_FIFO_CLR_BIT				0x1000	/*	EP2	*/





/*	DoBOTMSClass.c	*/
#define	SET_BULK_IN_INTERRUPT4			USBFM.UIER.LONG &= ~EP2_TR_BIT;	/*	mask EP2_TR interrupt */

#define	SET_BULK_IN_INTERRUPT3			USBFM.UIER.LONG |= EP2_TR_BIT;	/*	enable EP2_TR interrupt */

#define	BOT_IN_EP_STALL_ON				STALL_REGISTER |= EpInfo[SET_BOT_USE_IN_EP].stallEnable;

#define	SET_BOT_USE_OUT_EP				3		/*	Rgister Information Number for BOT Bulk-OUT	*/

#define	SET_BOT_USE_IN_EP				4		/*	Rgister Information Number for BOT Bulk-IN	*/

#define	SET_BOT_CSWCBW_INFO				5		/*	CBW/CSW Information Number for BOT data buffer	*/

#define	SET_BOT_DATA_INFO				6		/*	DATA Information Number for BOT data buffer	*/



/*	DoRequestBOT_StorageClass.c	*/
#define	CLEAR_BULK_FIFO_OF_SOFT_RESET	USBFM.UFCLR.SHORT = (EP1_FIFO_CLR_BIT | EP2_FIFO_CLR_BIT);	/*	clear FIFO	*/

#define	BOT_ALL_EP_STALL_OFF			STALL_REGISTER |= ~(EpInfo[SET_BOT_USE_OUT_EP].stallEnable | EpInfo[SET_BOT_USE_IN_EP].stallEnable);



/*	DoBulk.c	*/
#define	BULK_ITFF_CLEAR					INTERRUPT_REGISTER = ~EP2_TR_BIT;

#define	SET_BULK_IN_INTERRUPT2			USBFM.UIER.LONG &= ~EP2_EMPTY_BIT;	/*	mask EP2_EMPTY interrupt */

#define	SET_BULK_IN_INTERRUPT1			USBFM.UIER.LONG |= EP2_EMPTY_BIT;	/*	enable EP2_EMPTY interrupt */

#define	BULK_OTSF_CLEAR					/*	not necessary	*/

#define	BULK_ITSF_CLEAR					/*	not necessary	*/



/*	DoInterrupt.c	*/
#define	INTERRUPTI_TRANS_FACTOR_CLEAR	/*	INTERRUPT1_REGISTER = ~EP3_ACK_BIT;		clear EP3_TS flag	*/



/*	DoControl.c	*/
#define	CTRL_IN_OTSF_CLEAR				INTERRUPT_REGISTER = ~(EP0_I_ACK_BITS | EP0_I_NACK_BITS | EP0_O_ACK_BITS);	/*	clear EP0 interrupt flag except for SETUP	*/

#define	SETUP_INTF_CLEAR				INTERRUPT_REGISTER = ~SETUP_TS_BITS;	/*	clear SETUP_TS interrupt flag	*/

#define	CTRL_ITSF_CLEAR					INTERRUPT_REGISTER = ~EP0_I_ACK_BITS;	/*	clear EP0i_TS flag	*/

#define	CTRL_OTSF_CLEAR					INTERRUPT_REGISTER = ~EP0_O_ACK_BITS;	/*	clear EP0o_TS flag	*/

#define	CTRL_ITRF_CLEAR					INTERRUPT_REGISTER = ~EP0_I_NACK_BITS;	/*	clear EP0i_TR flag	*/

#define	CTRL_IN_REG_SET					USBFM.UIER.BYTE.HH &= ~0x02;	/*	getting ready Control IN taransfer Data Stage after decodding Setup Command	*/

#define	CTRL_OUT_REG_SET				USBFM.UIER.BYTE.HH |= 0x02;	/*	getting ready Control OUT taransfer Data Stage after decodding Setup Command	*/

#define	GO_DATA_STAGE					READ_TRIGER_REGISTER = 0x01;	/*	change to Data Stage form SETUP 	*/



/*	UsbMain.c	*/
#define	F_CLEAR_BUSRESET				INTERRUPT0_REGISTER = ~BRST_BIT;	/*	clear BRST flag	*/

#define	F_CLEAR_BUSVCC					INTERRUPT3_REGISTER = ~VBUS_F_BIT;	/*	clear VBUSi flag	*/

#define	CLEAR_ALL_FIFO					FIFO_CLEAR_REGISTER = 0x36;	/*	0011 011-	*/	/*	clear EP0,1,2 FIFO	*/

#define	EP_STALL_ALL_OFF				USBFM.UESTL.SHORT = 0x0080;	/*	0000 0--0 1--- -000	*/	/*	desable all EndPoint STALL	*/

/*	set USB interrupt select register	*/
#define	SET_USB_INTERRUPT_SELECT		USBFM.UISR.LONG = 0x00000000;	/*	EXIRQ0	*/

#define	CHECK_CABLE_STATE				if ((deviceSideLVar.INTERRUPT.LONG & 0x00000002) == 0x00000002) {	/*	A case of connecting USB cable 	*/

/*	set USB interrupt and DMA	*/
#define	SET_USB_INTERRUPT				USBFM.UIER.LONG = 0x8F060081;	/*	1-00 1111	*/	/*	enable BRST,SETUPTS,EP0oTS,EP0iTR,EP0iTS	*/\
										USBFM.UDMAR.BYTE = 0x00;	/*	--00 --00	*/	/*	disable EP1,EP2 DMA	*/\
										USBFM.UESTL.BYTE.L |= 0x80;	/*	1--- ----	*/	/*	enable stall clear mode	*/

/*	get interrupt enable flag	*/
#define	GET_INTERRUPT_ENABLE			interruptEnableBitsGVar.INTERRUPT.LONG = USBFM.UIER.LONG;\
										interruptEnableBitsGVar.INTERRUPT.LONG |= 0x0000000A;

#define	GET_INTERRUPT_REGISTER			deviceSideLVar.INTERRUPT.LONG = USBFM.UIFR.LONG;

#define	READ_FINISH						READ_TRIGER_REGISTER = epInfoPtr->getFinish;

#define	WRITE_FINISH					WRITE_TRIGER_REGISTER = epInfoPtr->putEnable;

#define	IRQ_CLEAR						/*	not necessary	*/

#define	RUN_USB_MODULE_1				/*	not necessary	*/

#define	RUN_USB_MODULE_2				USBFM.UCTLR.BYTE &= ~0x02;	/*	---- --0-	*/

#define	RUN_USB_MODULE_3				EpInfo[SET_BOT_USE_OUT_EP].PresentState = WAIT;\
										USBFM.UCTLR.BYTE &= ~0x01;	/*	Disable UDC core reset	*/

/*	Ebable UDC core reset	*/
#define	STOP_USB_MODULE_3		USBFM.UCTLR.BYTE |= 0x01;

#define	F_CLEAR_PLLREADY				INTERRUPT3_REGISTER = ~CK48READY_F_BIT;

#define	SET_USB_EPINFO					USBFM.UEPIR00_0.BYTE = 0x00;	/*	EP0 Control		*/\
										USBFM.UEPIR00_1.BYTE = 0x00;\
										USBFM.UEPIR00_2.BYTE = 0x40;	/*	MaxSize = 64	*/\
										USBFM.UEPIR00_3.BYTE = 0x00;\
										USBFM.UEPIR00_4.BYTE = 0x00;\
										USBFM.UEPIR01_0.BYTE = 0x34;	/*	EP3 Interrupt	*/\
										USBFM.UEPIR01_1.BYTE = 0x1C;\
										USBFM.UEPIR01_2.BYTE = 0x08;	/*	MaxSize = 8	*/\
										USBFM.UEPIR01_3.BYTE = 0x00;\
										USBFM.UEPIR01_4.BYTE = 0x01;\
										USBFM.UEPIR02_0.BYTE = 0x24;	/*	EP2 Bulk-In	*/\
										USBFM.UEPIR02_1.BYTE = 0x14;\
										USBFM.UEPIR02_2.BYTE = 0x40;	/*	MaxSize = 64	*/\
										USBFM.UEPIR02_3.BYTE = 0x00;\
										USBFM.UEPIR02_4.BYTE = 0x02;\
										USBFM.UEPIR03_0.BYTE = 0x14;	/*	EP1 Bulk-Out	*/\
										USBFM.UEPIR03_1.BYTE = 0x10;\
										USBFM.UEPIR03_2.BYTE = 0x40;	/*	MaxSize = 64	*/\
										USBFM.UEPIR03_3.BYTE = 0x00;\
										USBFM.UEPIR03_4.BYTE = 0x03;\
										USBFM.UEPIR04_0.BYTE = 0x04;\
										USBFM.UEPIR04_1.BYTE = 0x1C;\
										USBFM.UEPIR04_2.BYTE = 0x00;\
										USBFM.UEPIR04_3.BYTE = 0x00;\
										USBFM.UEPIR04_4.BYTE = 0x04;\
										USBFM.UEPIR05_0.BYTE = 0x04;\
										USBFM.UEPIR05_1.BYTE = 0x08;\
										USBFM.UEPIR05_2.BYTE = 0x00;\
										USBFM.UEPIR05_3.BYTE = 0x00;\
										USBFM.UEPIR05_4.BYTE = 0x05;\
										USBFM.UEPIR06_0.BYTE = 0x04;\
										USBFM.UEPIR06_1.BYTE = 0x1C;\
										USBFM.UEPIR06_2.BYTE = 0x00;\
										USBFM.UEPIR06_3.BYTE = 0x00;\
										USBFM.UEPIR06_4.BYTE = 0x06;\
										USBFM.UEPIR07_0.BYTE = 0x04;\
										USBFM.UEPIR07_1.BYTE = 0x08;\
										USBFM.UEPIR07_2.BYTE = 0x00;\
										USBFM.UEPIR07_3.BYTE = 0x00;\
										USBFM.UEPIR07_4.BYTE = 0x07;\
										USBFM.UEPIR08_0.BYTE = 0x04;\
										USBFM.UEPIR08_1.BYTE = 0x1C;\
										USBFM.UEPIR08_2.BYTE = 0x00;\
										USBFM.UEPIR08_3.BYTE = 0x00;\
										USBFM.UEPIR08_4.BYTE = 0x08;\
										USBFM.UEPIR09_0.BYTE = 0x04;\
										USBFM.UEPIR09_1.BYTE = 0x08;\
										USBFM.UEPIR09_2.BYTE = 0x00;\
										USBFM.UEPIR09_3.BYTE = 0x00;\
										USBFM.UEPIR09_4.BYTE = 0x09;\
										USBFM.UEPIR10_0.BYTE = 0x04;\
										USBFM.UEPIR10_1.BYTE = 0x1C;\
										USBFM.UEPIR10_2.BYTE = 0x00;\
										USBFM.UEPIR10_3.BYTE = 0x00;\
										USBFM.UEPIR10_4.BYTE = 0x0A;\
										USBFM.UEPIR11_0.BYTE = 0x04;\
										USBFM.UEPIR11_1.BYTE = 0x08;\
										USBFM.UEPIR11_2.BYTE = 0x00;\
										USBFM.UEPIR11_3.BYTE = 0x00;\
										USBFM.UEPIR11_4.BYTE = 0x0B;\
										USBFM.UEPIR12_0.BYTE = 0x04;\
										USBFM.UEPIR12_1.BYTE = 0x1C;\
										USBFM.UEPIR12_2.BYTE = 0x00;\
										USBFM.UEPIR12_3.BYTE = 0x00;\
										USBFM.UEPIR12_4.BYTE = 0x0C;\
										USBFM.UEPIR13_0.BYTE = 0x04;\
										USBFM.UEPIR13_1.BYTE = 0x08;\
										USBFM.UEPIR13_2.BYTE = 0x00;\
										USBFM.UEPIR13_3.BYTE = 0x00;\
										USBFM.UEPIR13_4.BYTE = 0x0D;\
										USBFM.UEPIR14_0.BYTE = 0x04;\
										USBFM.UEPIR14_1.BYTE = 0x1C;\
										USBFM.UEPIR14_2.BYTE = 0x00;\
										USBFM.UEPIR14_3.BYTE = 0x00;\
										USBFM.UEPIR14_4.BYTE = 0x0E;\
										USBFM.UEPIR15_0.BYTE = 0x04;\
										USBFM.UEPIR15_1.BYTE = 0x08;\
										USBFM.UEPIR15_2.BYTE = 0x00;\
										USBFM.UEPIR15_3.BYTE = 0x00;\
										USBFM.UEPIR15_4.BYTE = 0x0F;\
										USBFM.UEPIR16_0.BYTE = 0x04;\
										USBFM.UEPIR16_1.BYTE = 0x1C;\
										USBFM.UEPIR16_2.BYTE = 0x00;\
										USBFM.UEPIR16_3.BYTE = 0x00;\
										USBFM.UEPIR16_4.BYTE = 0x10;\
										USBFM.UEPIR17_0.BYTE = 0x04;\
										USBFM.UEPIR17_1.BYTE = 0x08;\
										USBFM.UEPIR17_2.BYTE = 0x00;\
										USBFM.UEPIR17_3.BYTE = 0x00;\
										USBFM.UEPIR17_4.BYTE = 0x11;\
										USBFM.UEPIR18_0.BYTE = 0x04;\
										USBFM.UEPIR18_1.BYTE = 0x1C;\
										USBFM.UEPIR18_2.BYTE = 0x00;\
										USBFM.UEPIR18_3.BYTE = 0x00;\
										USBFM.UEPIR18_4.BYTE = 0x12;\
										USBFM.UEPIR19_0.BYTE = 0x04;\
										USBFM.UEPIR19_1.BYTE = 0x08;\
										USBFM.UEPIR19_2.BYTE = 0x00;\
										USBFM.UEPIR19_3.BYTE = 0x00;\
										USBFM.UEPIR19_4.BYTE = 0x13;\
										USBFM.UEPIR20_0.BYTE = 0x04;\
										USBFM.UEPIR20_1.BYTE = 0x14;\
										USBFM.UEPIR20_2.BYTE = 0x00;\
										USBFM.UEPIR20_3.BYTE = 0x00;\
										USBFM.UEPIR20_4.BYTE = 0x14;\
										USBFM.UEPIR21_0.BYTE = 0x04;\
										USBFM.UEPIR21_1.BYTE = 0x10;\
										USBFM.UEPIR21_2.BYTE = 0x00;\
										USBFM.UEPIR21_3.BYTE = 0x00;\
										USBFM.UEPIR21_4.BYTE = 0x15;\
										USBFM.UEPIR22_0.BYTE = 0x04;\
										USBFM.UEPIR22_1.BYTE = 0x1C;\
										USBFM.UEPIR22_2.BYTE = 0x00;\
										USBFM.UEPIR22_3.BYTE = 0x00;\
										USBFM.UEPIR22_4.BYTE = 0x16;



/*	StartUp.c	*/
/*	pull up D+	*/
#define	ENABLE_DPLUS_PULLUP				PORT.P3DR.BYTE |= 0x40;		/*	-1-- ----	*/	/*	Pullup function is used to P36 pin(Active High)	*/

/*	disable pull up D+	*/
#define	DISABLE_DPLUS_PULLUP			PORT.P3DR.BYTE &= ~0x40;	/*	-0-- ----	*/	/*	Pullup function is used to P36 pin(Active High)	*/

⌨️ 快捷键说明

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