📄 datatype.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 + -