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

📄 bit.h

📁 这里有很多我自己做的凌阳单片机源程序
💻 H
字号:
#ifndef	__bit_H__
#define	__bit_H__

/**************************************************************************************/
//位操作,另外,可以对字节操作,每一个单元(单位为16位的字)可以分为高八位和低八位操作;
//使用方法:下面的硬件寄存器都定义为了UNport结构体型的指针变量,使用时只要:
//端口名->bit.bit0就可以操作端口的第0位;
//端口名->byte.bytel就可以操作端口的低八位;
//端口名->port就可以操作整个端口;
//实际上,操作整个端口时可以用另外一个头文件"hardware.h",直接对*端口名操作就可以了;
/***************************************************************************************/

#define	Uint	unsigned int
typedef struct
{
	Uint bit0  : 1;
	Uint bit1  : 1;
	Uint bit2  : 1;
	Uint bit3  : 1;
	Uint bit4  : 1;
	Uint bit5  : 1;
	Uint bit6  : 1;
	Uint bit7  : 1;
	Uint bit8  : 1;
	Uint bit9  : 1;
	Uint bit10 : 1;
	Uint bit11 : 1;
	Uint bit12 : 1;
	Uint bit13 : 1;
	Uint bit14 : 1;
	Uint bit15 : 1;
}Bit;

typedef struct
{
	Uint bytel  : 8;
	Uint byteh  : 8;
}Byte;
	
typedef union
{
	Bit bit;
	Byte byte;
	Uint port;
}UNport;


#define PA    			((volatile UNport *)(0x7000))
#define PA_Buffer		((volatile UNport *)(0x7001))
#define PA_Dir   		((volatile UNport *)(0x7002))
#define PA_Attrib   	((volatile UNport *)(0x7003))
#define	PA_Latch   		((volatile UNport *)(0x7004))
#define	PB    			((volatile UNport *)(0x7005))
#define	PB_Buffer   	((volatile UNport *)(0x7006))
#define	PB_Dir   		((volatile UNport *)(0x7007))
#define	PB_Attrib   	((volatile UNport *)(0x7008))
#define	Poscu  	 		((volatile UNport *)(0x7013))
#define	Ptbu  	 		((volatile UNport *)(0x700e))
#define	Ptbc  	 		((volatile UNport *)(0x700f))
#define	Pt0 	 		((volatile UNport *)(0x700a))
#define	Pt1  	 		((volatile UNport *)(0x700c))
#define	Pt0u  	 		((volatile UNport *)(0x700b))
#define	Pt1u   			((volatile UNport *)(0x700d))
#define	Pintu  			((volatile UNport *)(0x7010))
#define	Pintc  			((volatile UNport *)(0x7011))
#define	Padm  	 		((volatile UNport *)(0x7014))
#define	Padl 	 		((volatile UNport *)(0x702c))
#define	Padu   			((volatile UNport *)(0x7015))
#define	Padmuxu			((volatile UNport *)(0x702b))
#define	Pda0  	 		((volatile UNport *)(0x7017))
#define	Pda1  	 		((volatile UNport *)(0x7016))
#define	Pdau  	 		((volatile UNport *)(0x702a))
#define	Pwdogc 	 		((volatile UNport *)(0x7012))
#define	Pflashu 		((volatile UNport *)(0x7555))

#define	Watchdog_Clear		Pwdogc->port

#define	P0_0		PA->bit.bit0
#define	P0_1		PA->bit.bit1
#define	P0_2		PA->bit.bit2
#define	P0_3		PA->bit.bit3
#define	P0_4		PA->bit.bit4
#define	P0_5		PA->bit.bit5
#define	P0_6		PA->bit.bit6
#define	P0_7		PA->bit.bit7
#define	P0_8		PA->bit.bit8
#define	P0_9		PA->bit.bit9
#define	P0_10		PA->bit.bit10
#define	P0_11		PA->bit.bit11
#define	P0_12		PA->bit.bit12
#define	P0_13		PA->bit.bit13
#define	P0_14		PA->bit.bit14
#define	P0_15		PA->bit.bit15
#define	P1_0		PB->bit.bit0
#define	P1_1		PB->bit.bit1
#define	P1_2		PB->bit.bit2
#define	P1_3		PB->bit.bit3
#define	P1_4		PB->bit.bit4
#define	P1_5		PB->bit.bit5
#define	P1_6		PB->bit.bit6
#define	P1_7		PB->bit.bit7
#define	P1_8		PB->bit.bit8
#define	P1_9		PB->bit.bit9
#define	P1_10		PB->bit.bit10
#define	P1_11		PB->bit.bit11
#define	P1_12		PB->bit.bit12
#define	P1_13		PB->bit.bit13
#define	P1_14		PB->bit.bit14
#define	P1_15		PB->bit.bit15

#define	P0				PA->port
#define	P0_Buffer		PA_Buffer->port
#define	P0_Dir			PA_Dir->port
#define	P0_Attrib		PA_Attrib->port
#define	P0_Latch		PA_Latch->port
#define	P0_Lowbyte			PA->byte.bytel
#define	P0_Highbyte			PA->byte.byteh
#define	P0_Dir_Lowbyte		PA_Dir->byte.bytel
#define	P0_Dir_Highbyte		PA_Dir->byte.byteh
#define	P0_Attrib_Lowbyte	PA_Attrib->byte.bytel
#define	P0_Attrib_Highbyte	PA_Attrib->byte.byteh

#define	P1				PB->port
#define	P1_Buffer		PB_Buffer->port
#define	P1_Dir			PB_Dir->port
#define	P1_Attrib		PB_Attrib->port
#define	P1_Lowbyte			PB->byte.bytel
#define	P1_Highbyte			PB->byte.byteh
#define	P1_Dir_Lowbyte		PB_Dir->byte.bytel
#define	P1_Dir_Highbyte		PB_Dir->byte.byteh
#define	P1_Attrib_Lowbyte	PB_Attrib->byte.bytel
#define	P1_Attrib_Highbyte	PB_Attrib->byte.byteh

#define	OSC_Unit		Poscu->port
#define	Timebase_Unit	Ptbu->port
#define	Timebase_Clear	Ptbc->port
#define	T0				Pt0->port
#define	T1				Pt1->port
#define	T0_Unit			Pt0u->port
#define	T1_Unit			Pt1u->port
#define	INT_Unit		Pintu->port
#define	INT_Clear		Pintc->port
#define	AD_Unit			Padu->port
#define	ADMUX_Unit		Padmuxu->port
#define	AD_Mic			Padm->port
#define	AD_Line			Padl->port
#define	DA_Unit			Pdau->port
#define	DA0				Pda0->port
#define	DA1				Pda1->port
#define	Flash_Unit		Pflashu->port

#define EXT0		PB->bit.bit2
#define EXT1		PB->bit.bit3
#define EXT0_Dir		PB_Dir->bit.bit2
#define EXT1_Dir		PB_Dir->bit.bit3
#define EXT0_Attrib		PB_Attrib->bit.bit2
#define EXT1_Attrib		PB_Attrib->bit.bit3

#define	UART_Unit1		Puartu1->byte.bytel
#define	UART_Unit2		Puartu2->byte.bytel
#define	UART			Puart->byte.bytel
#define UART_Baud_Low		Puartbaudl->byte.bytel
#define UART_Baud_High		Puartbaudh->byte.bytel

#define	SCK_Dir			PB_Dir->bit.bit0
#define	SDA_Dir			PB_Dir->bit.bit1
#define	SCK_Attrib		PB_Attrib->bit.bit0
#define	SDA_Attrib		PB_Attrib->bit.bit1
#define	SCK			P1_0
#define	SDA			P1_1

#define	Rx_Dir			PB_Dir->bit.bit7
#define	Tx_Dir			PB_Dir->bit.bit10
#define	Rx_Attrib		PB_Attrib->bit.bit7
#define	Tx_Attrib		PB_Attrib->bit.bit10
#define	Rx			P1_7
#define	Tx			P1_10

#define Rx_Int_EN		Puartu1->bit.bit7
#define Tx_Int_EN		Puartu1->bit.bit6
#define UART_Reset		Puartu1->bit.bit5
#define Parity			Puartu1->bit.bit3
#define Parity_EN		Puartu1->bit.bit7
#define Rx_EM			Puartu2->bit.bit7
#define Tx_EM			Puartu2->bit.bit6
#define Rx_RDY			Puartu2->bit.bit7
#define Tx_RDY			Puartu2->bit.bit6
#define UART_FE			Puartu2->bit.bit5
#define UART_OE			Puartu2->bit.bit4
#define UART_PE			Puartu2->bit.bit3

#define	AD_Open()		AD_Unit=0x3d

#endif

⌨️ 快捷键说明

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