在KEIL 中,對(duì)于單片機(jī)所使用的頭文件,除了reg51 reg52以外,還有一些從各芯片制商的官網(wǎng)下載與reg51,reg52功能類(lèi)似的頭文件,需了解透外,還要對(duì)各類(lèi)型單片機(jī)均可通用且相當(dāng)有用的的頭文件,做相應(yīng)的了解。因?yàn)椋瑑?nèi)部所包含的函數(shù)與宏定義,可以及大的方便我們編寫(xiě)應(yīng)用程序1字符函數(shù) ctype.h 1 extern bit isalpha(char); 功能:檢查參數(shù)字符是否為英文字母,是則返回1 2 extern bit isalnum(char) 功能:檢查字符是否為英文字母或數(shù)字字符,是則返回1 3 extern bit iscntrl(char) 功能:檢查參數(shù)值是否在0x00~0x1f 之間或等于0x7f,是則返回1 4 extern bit isdigit(char) 功能: 檢查參數(shù)是否為數(shù)字字符,是則返回1 5 extern bit isgraph(char) 功能: 檢查參數(shù)值是否為可打印字符,是則返回1,可打印字符為0x21~0x7e 6 extern bit isprint(char) 功能:除了與isgraph相同之外,還接受空格符0x20 7 extern bit ispunct(char) 功能:不做介紹。 8 extern bit islower(char) 功能:檢查參數(shù)字符的值是否為小寫(xiě)英文字母,是則返回1 9 extern bit isupper(char) 功能:檢查參數(shù)字符的值是否為大寫(xiě)英文字母,是則返回1 10 extern bit isspace(char) 功能:檢查字符是否為下列之一,空格,制表符,回車(chē),換行,垂直制表符和送紙。如果為真則返回1 11 extern bit isxdigit(char) 功能:檢查參數(shù)字符是否為16進(jìn)制數(shù)字字符,是則返回1 12 extern char toint(char) 功能:將ASCII字符0~9 a~f(大小寫(xiě)無(wú)關(guān))轉(zhuǎn)換成對(duì)應(yīng)的16進(jìn)制數(shù)字, 返回值00H~0FH 13 extern char tolower(char) 功能:將大寫(xiě)字符轉(zhuǎn)換成小寫(xiě)形式,如字符變量不在A(yíng)~Z之間,則不作轉(zhuǎn)換而直接返回該字符 14 extern char toupper(char) 功能:將小寫(xiě)字符轉(zhuǎn)換成大寫(xiě)形式,如字符變量不在a~z之間,則不作轉(zhuǎn)換而直接返回該字符 15 define toascii(c) ((c)&0x7f) 功能:該宏將任何整形數(shù)值縮小到有效的ASCII范圍之內(nèi),它將變量和0x7f相與從而去掉第7位以上的所有數(shù)位 16 #define tolower(c) (c-‘A’+’a’) 功能:該宏將字符與常數(shù)0x20 逐位相或 17 #define toupper(c) ((c)-‘a(chǎn)’+’A’) 功能:該宏將字符與常數(shù)0xdf 逐位相與 2數(shù)學(xué)函數(shù) math.h extern int abs (int val); extern char cabs (char val); extern long labs (long val); extern float fabs (float val); 功能:返回絕對(duì)值。上面四個(gè)函數(shù),除了形參和返回值不一樣之外, 其它功能完全相同。 extern float exp (float val); extern float log (float val); extern float log10 (float val); 功能: exp 返回eval log 返回 val 的自然對(duì)數(shù) log10 返回 以10為底,val的對(duì)數(shù) extern float sqrt (float val); 功能: 返回val的正平方根 extern int rand(); extern void srand(int n); 功能: rand返回一個(gè)0到32767之間的偽隨機(jī)數(shù),srand用來(lái)將隨機(jī)數(shù)發(fā)生器初始化成一個(gè)已知的(期望)值。 Keil uVision3中的math.h庫(kù)中,不包含此函數(shù)。 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,的反正切值,其值域?yàn)?π~+π 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); 功能: 向上取整,返回一個(gè)大于val的最小整數(shù)。 extern float floor (float val); 功能: 向下取整,返回一個(gè)小于val的最大整數(shù)。 extern float pow (float x, float y); 功能: 計(jì)算計(jì)算xy的值。當(dāng)(x=0,y<=0)或(x<0.y不是整數(shù))時(shí)會(huì)發(fā)生錯(cuò)誤。 extern void fpsave(struct FPBUF *p) extern void fprestore(struct FPBUF *p) 功能:fpsave 保存浮點(diǎn)了程序的狀態(tài),fprestore恢復(fù)浮點(diǎn)子程序的原始狀態(tài),當(dāng)中斷程序中需要執(zhí)行浮點(diǎn)運(yùn)算時(shí),這兩個(gè)函數(shù)是很有用的。 注: Keil uVision3中的math.h庫(kù)中,不包含此函數(shù)。 3絕對(duì)地址訪(fǎng)問(wèn) 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區(qū) DBYTE 尋址 DATA區(qū) PBYTE 尋址 XDATA(低256)區(qū) XBYTE 尋址 XDATA區(qū) 例: 如下指令在對(duì)外部存儲(chǔ)器區(qū)域訪(fǎng)問(wèn)地址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) 功能:與前面的一個(gè)宏相似,只是它們指定的數(shù)據(jù)類(lèi)型為unsigned int .。 通過(guò)靈活運(yùn)用不同的數(shù)據(jù)類(lèi)型,所有的8051地址空間都是可以進(jìn)行訪(fǎng)問(wèn)。 如 DWORD[0x0004]=0x12F8; 即內(nèi)部數(shù)據(jù)存儲(chǔ)器中(0x08)=0x12; (0x09)=0xF8 4 內(nèi)部函數(shù) 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 循環(huán)右移 n 位。 上三個(gè)函數(shù)的區(qū)別在于,參數(shù)及返回值的類(lèi)型不同 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 循環(huán)左移 n 位。 上三個(gè)函數(shù)的區(qū)別在于,參數(shù)及返回值的類(lèi)型不同 例如: #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.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |