?? define.h
字號(hào):
// --------------------------------------------------------------------------
// Define.h
// --------------------------------------------------------------------------
/*----------------------------------------------------------------------------+
| |
| Type definition |
| |
+----------------------------------------------------------------------------*/
#ifndef __DEFINE_H__
#define __DEFINE_H__
/*
一: 常用數(shù)據(jù)類型
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位數(shù)字)
double 64 8 +-1.176E-38~+-3.40E+38(10位數(shù)字)
一般指針 24 3 儲(chǔ)存空間0~65535
二: 常用存儲(chǔ)類型
data 直接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),訪問速度快(128字節(jié))
bdata 可位尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),允許位與字節(jié)混和訪問(16字節(jié))
idata 間接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),可訪問片內(nèi)全部RAM地址空間(256字節(jié))
pdata 分頁(yè)尋址片外數(shù)據(jù)區(qū)(256字節(jié))由MOVX@R0或@R1訪問
xdata 片外數(shù)據(jù)存儲(chǔ)區(qū)(64K),由MOVX@DPTR訪問
code 代碼存儲(chǔ)區(qū)(64K),由MOVC@DPTR訪問
三: 存儲(chǔ)模式及說(shuō)明
small 參數(shù)及局部變量放入可直接尋址的片內(nèi)存儲(chǔ)類型是DATA,
因?yàn)樵L問十分方便。另外所有對(duì)象,包括棧,都必須潛
入片內(nèi)RAM。棧長(zhǎng)很關(guān)鍵,因?yàn)閷?shí)際棧長(zhǎng)依賴于不同的函
數(shù)嵌套層數(shù)
compact 參數(shù)及局部變量放入分頁(yè)片外存儲(chǔ)區(qū)(最大256字節(jié),默認(rèn)
的存儲(chǔ)類型是pdata),通過寄存器R0和R1(@R0,R1)間接尋址,棧空
間位于8051系統(tǒng)內(nèi)部數(shù)據(jù)存儲(chǔ)中。
large 參數(shù)及局部變量直接放入片外數(shù)據(jù)存儲(chǔ)區(qū)(最大64k,默認(rèn)
存儲(chǔ)類型為xdata)使用數(shù)據(jù)指針DPTR來(lái)進(jìn)行尋址,用此數(shù)據(jù)
指針進(jìn)行訪問效率較低,尤其是對(duì)兩個(gè)或多個(gè)字節(jié)的變量
這種數(shù)據(jù)類型的訪問機(jī)制直接影響代碼的長(zhǎng)度,另一不方便
之處在于這種數(shù)據(jù)指針不能對(duì)稱操作。
四: Keil51自帶的頭文件keil51文檔中的229頁(yè)
1:absacc.h 絕對(duì)存儲(chǔ)器訪問宏
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 // 握手信號(hào)
#define MAX_ALARM_TIMES 18000 // 報(bào)警持續(xù)的最長(zhǎng)時(shí)間
#define MAX_RING_TIMES 6000 // 振鈴所允許的最長(zhǎng)時(shí)間,超過這個(gè)時(shí)間沒有人接聽則關(guān)斷連接,以10ms為單位,6000表示60s
#define MAX_VIEW_TIMES 1000 // 監(jiān)視請(qǐng)求允許的最大時(shí)間,以10ms為單位,1000表示10s
#define MAX_RS485_WAIT_TIMES 200 // RS485超時(shí)重發(fā)等待時(shí)間,以10ms為單位,200表示如果2s以內(nèi)沒有收到應(yīng)答則重發(fā)
#define MAX_DOOR_NUM 256 // 定義最大的門口機(jī)數(shù)量,這個(gè)數(shù)對(duì)應(yīng)了內(nèi)存中各個(gè)門口機(jī)的心跳數(shù)組的大小,最大為512
#define Card_BUF_LENGTH 4 // 定義卡沖區(qū)的長(zhǎng)度
#define KEY_BUF_LENGTH 16 // 定義按鍵緩沖區(qū)的長(zhǎng)度
#define MAX_FRAME_LENGTH 8 // 每一幀數(shù)據(jù)中的有效數(shù)據(jù)的長(zhǎng)度
#define MAX_SYSTEM_PASSWORD_LENGTH 8 // 定義系統(tǒng)管理員密碼的最大長(zhǎng)度
#define RFCARD_LENGTH 4 // 定義射頻卡卡號(hào)的長(zhǎng)度,用字節(jié)來(lái)表示,
#define MAX_RFCARD_NUM_LENGTH 12 // 定義射頻卡的卡號(hào)的最大長(zhǎng)度
#define MAX_USER_NAME_LENGTH 8 // 定義用戶名的長(zhǎng)度最多為8個(gè)字節(jié),即4個(gè)漢字
#define NULL_STRING_LENGTH 128 // "\x00"常量空字符串的最大長(zhǎng)度,用來(lái)初始化I2C存儲(chǔ)器
#define I2C_WRITE_CYCLE_TIME 5 // 兩次讀寫I2C存儲(chǔ)器之間的延時(shí)間隔
/*----------------------------------------------------------------------------+
| End of header file |
+----------------------------------------------------------------------------*/
#endif // __DEFINE_H__
/*------------------------ Nothing Below This Line --------------------------*/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -