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

📄 datatype.h

📁 利用89s51去寫結構化keil-C 4x4鍵盤掃描+LCD螢幕顯示 HW01:四則運算+時鍾顯示 HW02:頻率偵測器 ps.鍵盤掃描不是利用延遲作彈跳(推薦)
💻 H
字号:

#ifndef __DATATYPE_H__
#define __DATATYPE_H__

#ifdef DWORD
#undef DWORD
#endif

typedef unsigned char		uchar;
typedef unsigned short	ushort;
typedef unsigned int		uint;
typedef unsigned long		ulong;

#define BIT 				bit 
#define BYTE 				uchar 
#define WORD 				ushort
#define DWORD 			ulong
#define BOOL 				uchar
#define UCHAR				uchar
#define USHORT			ushort
#define UINT 				uint
#define ULONG 			ulong

#define bVAL_BIT0       	0x01
#define bVAL_BIT1       	0x02
#define bVAL_BIT2       	0x04
#define bVAL_BIT3       	0x08
#define bVAL_BIT4       	0x10
#define bVAL_BIT5       	0x20
#define bVAL_BIT6       	0x40
#define bVAL_BIT7       	0x80

#define bNOT_BIT0       	0xfe
#define bNOT_BIT1       	0xfd
#define bNOT_BIT2       	0xfb
#define bNOT_BIT3       	0xf7
#define bNOT_BIT4       	0xef
#define bNOT_BIT5       	0xdf
#define bNOT_BIT6       	0xbf
#define bNOT_BIT7       	0x7f

#define wVAL_BIT00       	0x0001
#define wVAL_BIT01       	0x0002
#define wVAL_BIT02       	0x0004
#define wVAL_BIT03       	0x0008
#define wVAL_BIT04       	0x0010
#define wVAL_BIT05       	0x0020
#define wVAL_BIT06       	0x0040
#define wVAL_BIT07       	0x0080
#define wVAL_BIT08       	0x0100
#define wVAL_BIT09       	0x0200
#define wVAL_BIT10       	0x0400
#define wVAL_BIT11       	0x0800
#define wVAL_BIT12       	0x1000
#define wVAL_BIT13       	0x2000
#define wVAL_BIT14       	0x4000
#define wVAL_BIT15       	0x8000

#define wNOT_BIT00       	0xfffe
#define wNOT_BIT01       	0xfffd
#define wNOT_BIT02       	0xfffb
#define wNOT_BIT03       	0xfff7
#define wNOT_BIT04       	0xffef
#define wNOT_BIT05       	0xffdf
#define wNOT_BIT06       	0xffbf
#define wNOT_BIT07       	0xff7f
#define wNOT_BIT08       	0xfeff
#define wNOT_BIT09       	0xfdff
#define wNOT_BIT10       	0xfbff
#define wNOT_BIT11       	0xf7ff
#define wNOT_BIT12       	0xefff
#define wNOT_BIT13       	0xdfff
#define wNOT_BIT14       	0xbfff
#define wNOT_BIT15       	0x7fff

#define FALSE				0
#define TRUE				1

#ifndef XBYTE
#define XBYTE ((unsigned char volatile xdata *) 0)
#endif

#ifndef CBYTE
#define CBYTE ((unsigned char volatile code *) 0)
#endif

#ifndef XWORD
#define XWORD ((unsigned int volatile xdata *) 0)
#endif

#ifndef CWORD
#define CWORD ((unsigned int volatile code *) 0)
#endif

#define LOBYTE(w)   		((BYTE)(w))
#define HIBYTE(w)   		((BYTE)(((WORD)(w) >> 8) & 0xFF))
#define GETBYTE0(dw)		*(((BYTE *)&(dw)))
#define GETBYTE1(dw)		*(((BYTE *)&(dw)) + 1)
#define GETBYTE2(dw)		*(((BYTE *)&(dw)) + 2)
#define GETBYTE3(dw)		*(((BYTE *)&(dw)) + 3)
#define LOWORD(dw)       	((WORD)(dw))
#define HIWORD(dw)       	((WORD)(((ULONG)(dw) >> 16) & 0xFFFF))
#define MAKEWORD(lb, hb)  	((WORD)(((BYTE)(lb)) | ((WORD)((BYTE)(hb))) << 8))
#define MAKELONG(lw, hw)  	((ULONG)(((WORD)(lw)) | ((ULONG)((WORD)(hw))) << 16))
#define MAKEDWORD(a,b,c,d)	((((DWORD)(a)) << 24) + (((DWORD)(b)) << 16) + (((DWORD)(c)) << 8) + (d))
#define SWAPBYTE(x)			((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))
#define max(a,b)        	(((a) > (b)) ? (a) : (b))
#define min(a,b)        	(((a) < (b)) ? (a) : (b))
	
#define RegGetByte(r)		(*((BYTE volatile xdata*)(r)))
#define RegSetByte(r,d)		(*((BYTE volatile xdata*)(r)) = (d))
#define RegGetWord(r) 		SWAPBYTE(*((WORD volatile xdata*)(r)))
#define RegSetWord(r,d) 	(*((WORD volatile xdata*)(r)) = SWAPBYTE(d))
#define RegSetDword(r,dw) 	RegSetWord(r,LOWORD(dw)); RegSetWord(r+2,HIWORD(dw));
#define RegGetDword(r) 		MAKELONG(RegGetWord(r), RegGetWord(r+2))
#define RegMaskBit(r,m)		RegSetByte((r), (RegGetByte((r)) & (m)))
#define RegSetBit(r,b)		RegSetByte((r), (RegGetByte((r)) | (b)))
#define RegClrBit(r,b)		RegSetByte((r), (RegGetByte((r)) & (~(b))))
#define RegWriteBit(r,b,m)	RegSetByte((r), (RegGetByte((r)) & (~(m)) | (b)))
#define RegGetValue(r)		RegGetByte(r)
#define RegSetValue(r,d)	RegSetByte(r,d)
#define CodeGetByte(r) 		(*((BYTE volatile code*)(r)))
#define CodeGetWord(r) 		SWAPBYTE(*((WORD volatile code*)(r)))
#define CodeGet51Word(r)	*((WORD volatile code*)(r))
#define CodeGet51DWord(r)	*((DWORD volatile code*)(r))

#define INT_ALL_ENABLE		EA=1
#define INT_ALL_DISABLE		EA=0
#define INT_UART_ENABLE	ES=1
#define INT_UART_DISABLE	ES=0
#define INT_EXT0_ENABLE	EX0=1
#define INT_EXT0_DISABLE	EX0=0
#define INT_EXT1_ENABLE	EX1=1
#define INT_EXT1_DISABLE	EX1=0
#define INT_TMR0_ENABLE	ET0=1
#define INT_TMR0_DISABLE	ET0=0
#define INT_TMR1_ENABLE	ET1=1
#define INT_TMR1_DISABLE	ET1=0
//#define INT_TMR2_ENABLE	ET2=1
//#define INT_TMR2_DISABLE	ET2=0
	

typedef union
{
	BYTE	yBD[4];
	DWORD   dwVal;
	struct
	{
		WORD 	wH;
		WORD 	wL;
	} tw;
	struct
	{
		int 	iH;
		int 	iL;
	} ti;
	struct
	{
		BYTE    yX;
		BYTE    yO;
		BYTE    yH;
		BYTE    yL;
	} tb;
} UTDWORD;

typedef union
{
	BYTE  yBD[2];
	WORD  wVal;
	int   iVal;
	struct
	{
		BYTE    yH;
		BYTE    yL;
	} tb;
	struct
	{
		char    chH;
		char    chL;
	} tch;
} UTWORD;

typedef union
{
	BYTE    yVal;
	char	chVal;
	struct
	{
		BYTE nL:4;
		BYTE nH:4;
	} tn;
	struct
	{
		BYTE b0:1;
		BYTE b1:1;
		BYTE b2:1;
		BYTE b3:1;
		BYTE b4:1;
		BYTE b5:1;
		BYTE b6:1;
		BYTE b7:1;
	} tbt;
} UTBYTE;



#endif // __DATATYPE_H__

⌨️ 快捷键说明

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