在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); |
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |