在KEIL 中,對于單片機所使用的頭文件,除了reg51 reg52以外,還有一些從各芯片制商的官網下載與reg51,reg52功能類似的頭文件,需了解透外,還要對各類型單片機均可通用且相當有用的的頭文件,做相應的了解。因為,內部所包含的函數與宏定義,可以及大的方便我們編寫應用程序1字符函數 ctype.h
1 extern bit isalpha(char);
功能:檢查參數字符是否為英文字母,是則返回1
2 extern bit isalnum(char)
功能:檢查字符是否為英文字母或數字字符,是則返回1
3 extern bit iscntrl(char)
功能:檢查參數值是否在0x00~0x1f 之間或等于0x7f,是則返回1
4 extern bit isdigit(char)
功能: 檢查參數是否為數字字符,是則返回1
5 extern bit isgraph(char)
功能: 檢查參數值是否為可打印字符,是則返回1,可打印字符為0x21~0x7e
6 extern bit isprint(char)
功能:除了與isgraph相同之外,還接受空格符0x20
7 extern bit ispunct(char)
功能:不做介紹。
8 extern bit islower(char)
功能:檢查參數字符的值是否為小寫英文字母,是則返回1
9 extern bit isupper(char)
功能:檢查參數字符的值是否為大寫英文字母,是則返回1
10 extern bit isspace(char)
功能:檢查字符是否為下列之一,空格,制表符,回車,換行,垂直制表符和送紙。如果為真則返回1
11 extern bit isxdigit(char)
功能:檢查參數字符是否為16進制數字字符,是則返回1
12 extern char toint(char)
功能:將ASCII字符0~9 a~f(大小寫無關)轉換成對應的16進制數字,
返回值00H~0FH
13 extern char tolower(char)
功能:將大寫字符轉換成小寫形式,如字符變量不在A~Z之間,則不作轉換而直接返回該字符
14 extern char toupper(char)
功能:將小寫字符轉換成大寫形式,如字符變量不在a~z之間,則不作轉換而直接返回該字符
15 define toascii(c) ((c)&0x7f)
功能:該宏將任何整形數值縮小到有效的ASCII范圍之內,它將變量和0x7f相與從而去掉第7位以上的所有數位
16 #define tolower(c) (c-‘A’+’a’)
功能:該宏將字符與常數0x20 逐位相或
17 #define toupper(c) ((c)-‘a’+’A’)
功能:該宏將字符與常數0xdf 逐位相與
2數學函數 math.h
extern int abs (int val);
extern char cabs (char val);
extern long labs (long val);
extern float fabs (float val);
功能:返回絕對值。上面四個函數,除了形參和返回值不一樣之外,
其它功能完全相同。
extern float exp (float val);
extern float log (float val);
extern float log10 (float val);
功能: exp 返回eval
log 返回 val 的自然對數
log10 返回 以10為底,val的對數
extern float sqrt (float val);
功能: 返回val的正平方根
extern int rand();
extern void srand(int n);
功能: rand返回一個0到32767之間的偽隨機數,srand用來將隨機數發生器初始化成一個已知的(期望)值。
Keil uVision3中的math.h庫中,不包含此函數。
extern float sin (float val);
extern float cos (float val);
extern float tan (float val);
功能: 返回val的正弦,余弦,正切值。val為弧度 fabs(var) <=65535
extern float asin (float val);
extern float acos (float val);
extern float atan (float val);
extern float atan2 (float y, float x);
功能: asin 返回val的反正弦值。acos 返回val的反余弦值。
atan 返回val的反正切值。
asin atan acos的值域均為 -π/2~+π/2
atan2返回x/y,的反正切值,其值域為-π~+π
extern float sinh (float val);
extern float cosh (float val);
extern float tanh (float val);
功能:cosh返回var的雙曲余弦值,sinh返回var的雙曲正弦值,
tanh返回var的雙曲正切值。
extern float ceil (float val);
功能: 向上取整,返回一個大于val的最小整數。
extern float floor (float val);
功能: 向下取整,返回一個小于val的最大整數。
extern float pow (float x, float y);
功能: 計算計算xy的值。當(x=0,y<=0)或(x<0.y不是整數)時會發生錯誤。
extern void fpsave(struct FPBUF *p)
extern void fprestore(struct FPBUF *p)
功能:fpsave 保存浮點了程序的狀態,fprestore恢復浮點子程序的原始狀態,當中斷程序中需要執行浮點運算時,這兩個函數是很有用的。
注: Keil uVision3中的math.h庫中,不包含此函數。
3絕對地址訪問 absacc.h
#define CBYTE ((unsigned char volatile code *) 0)
#define DBYTE ((unsigned char volatile data *) 0)
#define PBYTE ((unsigned char volatile pdata *) 0)
#define XBYTE ((unsigned char volatile xdata *) 0)
功能:CBYTE 尋址 CODE區
DBYTE 尋址 DATA區
PBYTE 尋址 XDATA(低256)區
XBYTE 尋址 XDATA區
例: 如下指令在對外部存儲器區域訪問地址0x1000
xvar=XBYTE[0x1000];
XBYTE[0x1000]=20;
#define CWORD ((unsigned int volatile code *) 0)
#define DWORD ((unsigned int volatile data *) 0)
#define PWORD ((unsigned int volatile pdata *) 0)
#define XWORD ((unsigned int volatile xdata *) 0)
功能:與前面的一個宏相似,只是它們指定的數據類型為unsigned int .。
通過靈活運用不同的數據類型,所有的8051地址空間都是可以進行訪問。
如
DWORD[0x0004]=0x12F8;
即內部數據存儲器中(0x08)=0x12; (0x09)=0xF8
4 內部函數 intrins.h
extern unsigned char _cror_ (unsigned char var, unsigned char n);
extern unsigned int _iror_ (unsigned int var, unsigned char n);
extern unsigned long _lror_ (unsigned long var, unsigned char n);
功能:將變量var 循環右移 n 位。
上三個函數的區別在于,參數及返回值的類型不同
extern unsigned char _crol_ (unsigned char var, unsigned char n);
extern unsigned int _irol_ (unsigned int var, unsigned char n);
extern unsigned long _lrol_ (unsigned long var, unsigned char n);
功能:將變量var 循環左移 n 位。
上三個函數的區別在于,參數及返回值的類型不同
例如:
#include<intrins.h>
void main()
{
unsigned int y;
y=0x0ff0;
y=_irol_(y,4); //y=0xff00
y=_iror_(y,4); //y=0x0ff0
}
void _nop_(void);