📄 define.h
字号:
// --------------------------------------------------------------------------
// Define.h
// --------------------------------------------------------------------------
/*----------------------------------------------------------------------------+
| |
| Type definition |
| |
+----------------------------------------------------------------------------*/
#ifndef __DEFINE_H__
#define __DEFINE_H__
/*
一: 常用数据类型
data type | length(bit) | length(byte) | data range
bit 1 ... 0,1
signed char 8 1 -128~127
signed int 16 2 -32768~32767
signed long 32 4 -2147483648~2147483647
unsigned char 8 1 0~255
unsigned int 16 2 0~65535
unsigned long 32 4 0~4294967295
float 32 4 +-1.176E-38~+-3.40E+38(6位数字)
double 64 8 +-1.176E-38~+-3.40E+38(10位数字)
一般指针 24 3 储存空间0~65535
二: 常用存储类型
data 直接寻址片内数据存储区,访问速度快(128字节)
bdata 可位寻址片内数据存储区,允许位与字节混和访问(16字节)
idata 间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)
pdata 分页寻址片外数据区(256字节)由MOVX@R0或@R1访问
xdata 片外数据存储区(64K),由MOVX@DPTR访问
code 代码存储区(64K),由MOVC@DPTR访问
三: 存储模式及说明
small 参数及局部变量放入可直接寻址的片内存储类型是DATA,
因为访问十分方便。另外所有对象,包括栈,都必须潜
入片内RAM。栈长很关键,因为实际栈长依赖于不同的函
数嵌套层数
compact 参数及局部变量放入分页片外存储区(最大256字节,默认
的存储类型是pdata),通过寄存器R0和R1(@R0,R1)间接寻址,栈空
间位于8051系统内部数据存储中。
large 参数及局部变量直接放入片外数据存储区(最大64k,默认
存储类型为xdata)使用数据指针DPTR来进行寻址,用此数据
指针进行访问效率较低,尤其是对两个或多个字节的变量
这种数据类型的访问机制直接影响代码的长度,另一不方便
之处在于这种数据指针不能对称操作。
四: Keil51自带的头文件keil51文档中的229页
1:absacc.h 绝对存储器访问宏
1:CBYTE, 2:CWORD, 3:DBYTE, 4:DWORD, 5:FARRAY, 6:FCARRAY, 7:FVAR, 8:FCVAR,
9:PBYTE, 10:PWORD, 11:XBYTE, 12:XWORD
2:assert.h
1:assert
3:ctype.h
1:isalnum, 2:isalpha, 3:iscntrl, 4:isdigit, 5:isgraph, 6:islower, 7:isprint, 8:ispunct,
9:isspace, 10:isupper, 11:isxdigit,12:toascii, 13:toint, 14:tolower, 15:_tolower,16:toupper,
17:_toupper
4:intrins.h
1:_chkfloat, 2:_irol_, 3:_Iror_, 4:_crol_, 5:_iror_, 6:_nop_, 7:_cror_, 8:_Irol_,
9:_testbit_
5:math.h
1:abs, 2:exp 3:modf 4:acos 5:fabs 6:pow 7:asin 8:floor
9:sin 10:atan 11:fmod 12sinh 13:atan2 14:fprestore15:sqrt 16:cabs
17:fpsave 18:tan 19:ceil 20:labs 21:tanh 22:cos 23:log 24:cosh
25:log10
6:setjmp.h
1:jmp_buf 2:setjmp 3:longjmp
7:stdarg.h
1:va_arg 2:va_end 3:va_start 4:va_list
8:stddef.h
1:offsetof
9:stdio.h
1:getchar 2:putchar 3:sscanf 4:_getkey 5:puts 6:ungetchar 7:gets 8:scanf
9:vprintf 10:printf 11:sprintf 12:vsprintf 13:EOD
10:stdlib.h
1:atof 2:init_menpool3:strtod 4atoi 5:malloc 6:strtol 7:atol 8:rand
9:strtoul 10:calloc 11:realloc 12:free 13:srand
11:string.h
1:memccpy, 2:memchr, 3:memcmp, 4:memcpy, 5:memmove 6:memset 7:strcat 8:strchr
9:strcmp 10:strcpy 11:strcspn 12:strlen 13:strncat 14:strncmp 15:strncpy 16:strpbrk
17:strrpos 18:strrchr 19:strrpbrk 20:strrpos 21:strspn
*/
/*----------------------------------------------------------------------------+
| Type Definition & Macro |
+----------------------------------------------------------------------------*/
#ifndef NULL
#define NULL ((void *) 0L) // Stdlib.h and String.h already include NULL
#endif
typedef char * PSTR;
typedef bit bool;
typedef bit BOOL;
typedef short SHORT;
typedef long LONG;
typedef double DOUBLE;
typedef unsigned char UCHAR;
typedef unsigned char byte;
typedef unsigned char BYTE;
typedef unsigned char * PBYTE;
typedef unsigned short USHORT;
typedef unsigned int UINT;
typedef unsigned int word;
typedef unsigned int WORD;
typedef unsigned int dword;
typedef unsigned long DWORD;
typedef unsigned long ULONG;
typedef unsigned long HANDLE;
/*----------------------------------------------------------------------------+
| Constant Definition |
+----------------------------------------------------------------------------*/
#define ON 1
#define OFF 0
#define YES 1
#define NO 0
#define true 1
#define false 1
#define TRUE 1
#define FALSE 0
#define OK 1
#define KO 0
#define ENABLE 1
#define DISABLE 0
#define HIGH 1
#define LOW 0
#define ERR 1
#define NOERR 0
#define ERROR 1
#define NO_ERROR 0
#define bit0 0x01
#define bit1 0x02
#define bit2 0x04
#define bit3 0x08
#define bit4 0x10
#define bit5 0x20
#define bit6 0x40
#define bit7 0x80
#define VIDEO 0x01
#define AUDIO 0x02
#define UNLOCK 0x04
#define ALARM 0x08
#define ALARM2 0x10
#define HANDSHAKE 0x20 // 握手信号
#define MAX_ALARM_TIMES 18000 // 报警持续的最长时间
#define MAX_RING_TIMES 6000 // 振铃所允许的最长时间,超过这个时间没有人接听则关断连接,以10ms为单位,6000表示60s
#define MAX_VIEW_TIMES 1000 // 监视请求允许的最大时间,以10ms为单位,1000表示10s
#define MAX_RS485_WAIT_TIMES 200 // RS485超时重发等待时间,以10ms为单位,200表示如果2s以内没有收到应答则重发
#define MAX_DOOR_NUM 256 // 定义最大的门口机数量,这个数对应了内存中各个门口机的心跳数组的大小,最大为512
#define Card_BUF_LENGTH 4 // 定义卡冲区的长度
#define KEY_BUF_LENGTH 16 // 定义按键缓冲区的长度
#define MAX_FRAME_LENGTH 8 // 每一帧数据中的有效数据的长度
#define MAX_SYSTEM_PASSWORD_LENGTH 8 // 定义系统管理员密码的最大长度
#define RFCARD_LENGTH 4 // 定义射频卡卡号的长度,用字节来表示,
#define MAX_RFCARD_NUM_LENGTH 12 // 定义射频卡的卡号的最大长度
#define MAX_USER_NAME_LENGTH 8 // 定义用户名的长度最多为8个字节,即4个汉字
#define NULL_STRING_LENGTH 128 // "\x00"常量空字符串的最大长度,用来初始化I2C存储器
#define I2C_WRITE_CYCLE_TIME 5 // 两次读写I2C存储器之间的延时间隔
/*----------------------------------------------------------------------------+
| End of header file |
+----------------------------------------------------------------------------*/
#endif // __DEFINE_H__
/*------------------------ Nothing Below This Line --------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -