小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Keil C51的庫函數(shù)

 聯(lián)通手機用戶 2019-07-24

轉自:http://www./profession/mcu/mcu51clib.html

Keil C51有豐富的可直接調(diào)用的庫函數(shù),靈活使用庫函數(shù)可使程序代碼簡單、結構清晰,并且易于調(diào)試和維護。每個庫函數(shù)都在相應的頭文件中給出了函數(shù)原型聲明,用戶如果需要使用庫函數(shù),必須在源程序的開始處用預處理命令“#include”將有關的頭文件包含進來。

1. 本征庫函數(shù):

本征庫函數(shù)是指編譯時直接將固定的代碼插入到當前行,而不是用匯編語言中的“ACALL”和“LCALL”指令來實現(xiàn)調(diào)用,從而大大提高了函數(shù)的訪問效率。Keil C51的本征庫函數(shù)有9個,數(shù)量少但非常有用。使用本征庫函數(shù)時,C51源程序中必須包含預處理命令“#include  <intrins.h>”。

函數(shù)名及定義

功能說明

unsigned char _crol_(unsigned char val,unsigned char n)

將字符型數(shù)據(jù)val循環(huán)左移n位,相當于RL命令

unsigned int _irol_(unsigned int val,unsigned char n)

將整型數(shù)據(jù)val循環(huán)左移n位,相當于RL命令

unsigned long _lrol_(unsigned long val,unsigned char n)

將長整型數(shù)據(jù)val循環(huán)左移n位,相當于RL命令

unsigned char _cror_(unsigned char val,unsigned char n)

將字符型數(shù)據(jù)val循環(huán)右移n位,相當于RR命令

unsigned int _iror_(unsigned int val,unsigned char n)

將整型數(shù)據(jù)val循環(huán)右移n位,相當于RR命令

unsigned long _lror_(unsigned long val,unsigned char n)

將長整型數(shù)據(jù)val循環(huán)右移n位,相當于RR命令

bit _testbit_(bit x)

相當于JBC  bit指令

unsigned char _chkfloat_(float ual)

測試并返回浮點數(shù)狀態(tài)

void _nop_(void)

產(chǎn)生一個NOP指令

2. 字符判斷轉換庫函數(shù):

字符判斷轉換庫函數(shù)的原型聲明在頭文件CTYPE.H中定義。

函數(shù)名及定義

功能說明

bit isalpha(char c)

檢查參數(shù)字符是否為英文字母,是則返回1,否則返回0

bit isalnum(char c)

檢查參數(shù)字符是否為英文字母或數(shù)字字符,是則返回1,否則返回0

bit iscntrl(char c)

檢查參數(shù)字符是否為控制字符(值在0x00~0x1f之間或等于0x7f)是則返回1,否則返回0

bit isdigit(char c)

檢查參數(shù)字符是否為十進制數(shù)字0~9,是則返回1,否則返回0

bit isgraph(char c)

檢查參數(shù)字符是否為可打印字符(不包括空格),值域0x21~0x7e,是則返回1,否則返回0

bit isprint(char c)

檢查參數(shù)字符是否為可打印字符(包括空格),值域0x21~0x7e,是則返回1,否則返回0

bit ispunct(char c)

檢查參數(shù)字符是否為標點、空格或格式字符,是則返回1,否則返回0

bit islower(char c)

檢查參數(shù)字符是否為小寫英文字母,是則返回1,否則返回0

bit isupper(char c)

檢查參數(shù)字符是否為大寫英文字母,是則返回1,否則返回0

bit isspace(char c)

檢查參數(shù)字符是否為空格、制表符、回車、換行、垂直制表符和送紙(值為0x09~0x0d,或為0x20),是則返回1,否則返回0

bit isxdigit(char c)

檢查參數(shù)字符是否為十六進制數(shù)字字符,是則返回1,否則返回0

char toint(char c)

將ASCII字符的0~9、a~f(大小寫無關)轉換為十六進制數(shù)字

char tolower(char c)

將大寫字符轉換成小寫形式,如果字符參數(shù)不在A~Z之間,則該函數(shù)不起作用

char _tolower(char c)

將字符參數(shù)c與常數(shù)0x20逐位相或,從而將大寫字符轉換成小寫字符

char toupper(char c)

將小寫字符轉換成大寫形式,如果字符參數(shù)不在a~z之間,則該函數(shù)不起作用

char _toupper(char c)

將字符參數(shù)c與常數(shù)0xdf逐位相與,從而將小寫字符轉換成大寫字符

char toascii(char c)

將任何字符參數(shù)值縮小到有效的ASCII范圍內(nèi),即將c與0x7f相與,去掉第7位以上的位

3. 輸入輸出庫函數(shù):

輸入輸出庫函數(shù)的原型聲明在頭文件STDIO.H中定義,通過8051的串行口工作。如果希望支持其他I/O接口,只需要改動_getkey()和putchar()函數(shù)。庫中所有其他的I/O支持函數(shù)都依賴于這兩個函數(shù)模塊。在使用8051系列單片機的串行口之前,應先對其進行初始化。例如,以2400波特率(12MHz時鐘頻率)初始化串行口的語句如下:

        SCON=0x52;        //SCON置初值

        TMOD=0x20;        //TMOD置初值

        TH1=0xF3;          //T1置初值

        TR1=1;             //啟動T1

函數(shù)名及定義

功能說明

char _getkey(void)

等待從8051串口讀入一個字符并返回讀入的字符,這個函數(shù)是改變整個輸入端口機制時應做修改的唯一一個函數(shù)

char getchar(void)

使用_getkey從串口讀入字符,并將讀入的字符馬上傳給putchar函數(shù)輸出,其他與_getkey函數(shù)相同

char *gets(char *s,int n)

該函數(shù)通過getchar從串口讀入一個長度為n的字符串并存入由s指向的數(shù)組。輸入時一旦檢測到換行符就結束字符輸入。輸入成功時返回傳入的參數(shù)指針,失敗時返回NULL

char ungetchar(char c)

將輸入字符回送到輸入緩沖區(qū),因此下次gets或getchar可用該字符。成功時返回char型值,失敗時返回EOF,不能處理多個字符

char putchar(char c)

通過8051串行口輸出字符,與函數(shù)_getkey一樣,這是改變整個輸出機制所需要修改的唯一一個函數(shù)

int printf(const char *fmstr[,argument]...)

以第一個參數(shù)指向字符串制定的格式通過8051串行口輸出數(shù)值和字符串,返回值為實際輸出的字符數(shù)

int sprintf(char *s,const char *fmstr[,argument]...)

與printf功能相似,但數(shù)據(jù)是通過一個指針s送入內(nèi)存緩沖區(qū),并以ASCII碼的形式存儲

int puts(const char *s)

利用putchar函數(shù)將字符串和換行符寫入串行口,錯誤時返回EOF,否則返回0

int scanf(const char *fmstr[,argument]...)

在格式控制串的控制下,利用getchar函數(shù)從串行口讀入數(shù)據(jù),每遇到一個符合格式控制串fmstr規(guī)定的值,就將它按順序存入由參數(shù)指針argument指向的存儲單元。其中每個參數(shù)都是指針,函數(shù)返回所發(fā)現(xiàn)并轉換的輸入項數(shù),錯誤則返回EOF

int sscanf(char *s,const char *fmstr[,argument]...)

與scanf的輸入方式相似,但字符串的輸入不是通過串行口,而是通過指針s指向的數(shù)據(jù)緩沖區(qū)

void vprintf(const char *s,char *fmstr,char *argptr)

將格式化字符串和數(shù)據(jù)值輸出到由指針s指向的內(nèi)存緩沖區(qū)內(nèi)。類似于sprintf,但接受一個指向變量表的指針,而不是變量表。返回值為實際寫入到輸出字符串中的字符數(shù)

4. 字符串處理庫函數(shù):

字符串處理庫函數(shù)的原型聲明包含在頭文件STRING.H中,字符串函數(shù)通常接收指針串作為輸入值。一個字符串包括兩個或多個字符,字符串的結尾以空字符表示。在函數(shù)memcmp、memcpy、memchr、memccpy、memset和memmove中,字符串的長度由調(diào)用者明確規(guī)定,這些函數(shù)可工作在任何模式。

函數(shù)名及定義

功能說明

void *memchr(void *s1, char val, int len)

順序搜索字符串s1的前l(fā)en個字符,以找出字符val,成功時返回s1中指向val的指針,失敗時返回NULL

char memcmp(void *s1, void *s2, int len)

逐個字符比較串s1和s2的前l(fā)en個字符,成功時返回0,如果串s1大于或小于s2,則相應地返回一個正數(shù)或一個負數(shù)

void *memcpy(void *dest, void *src , int len)

從src所指向的內(nèi)存中復制len個字符到dest中,返回指向dest中最后一個字符的指針。如果src與dest發(fā)生交迭,則結果是不可測的

void *memccpy(void *dest, void *src, char val, int len)

復制src中l(wèi)en個元素到dest中。如果實際復制了len個字符則返回NULL。復制過程在復制完字符val后停止,此時返回指向dest中下一個元素的指針

void *memmove(void *dest, void *src, int len)

它的工作方式于memcpy相同,但復制的區(qū)域可以交迭

void memset(void *s, char val, int len)

用val來填充指針s中的len個單元

void *strcat(char *s1, char *s2)

將串s2復制到s1的尾部。strcat假定s1所定義的地址區(qū)域足以接受兩個串。返回指向s1中的第一個字符的指針

char *strncat( char *s1, char *s2, int n)

復制串s2中n個字符到s1的尾部,如果s2比n短,則只復制s2(包括串結束符)

char strcmp(char *s1, char *s2)

比較串s1和s2,如果相等則返回0;如果s1<s2,則返回一個負數(shù);如果s1>s2,則返回一個正數(shù)

char strncmp(char *s1, char *s2, int n)

比較串s1和s2中的前n個字符。返回值同上

char *strcpy(char *s1, char *s2)

將串s2(包括結束符)復制到s1中,返回指向s1中第一個字符的指針

char *strncpy(char *s1, char *s2, int n)

與strcpy相似,但它只復制n個字符。如果s2的長度小于n,則s1串以0補齊到長度n

int strlen(char *s1)

返回串s1中的字符個數(shù),不包括結尾的空字符

char *strstr(const char *s1, char *s2)

搜索字符串s2中第一次出現(xiàn)在s1中的位置,并返回一個指向第一次出現(xiàn)位置開始處的指針。如果字符串s1中不包括字符串s2,則返回一個空指針

char *strchr(char *s1, char c)

搜索s1串中第一個出現(xiàn)的字符c,如果成功則返回指向該字符的指針,否則返回NULL。被搜索的字符可以是串結束符,此時返回值是指向串結束符的指針

int strpos(char *s1, char c)

與strchr類似,但返回的是字符c在串s1中第一次出現(xiàn)的位置值,沒有找到則返回-1。s1串首字符的位置是0

char *strrchr(char *s1, char c)

搜索s1串中最后一個出現(xiàn)的字符c,如果成功則返回指向該字符的指針,否則返回NULL。被搜索的字符可以是串結束符

int strrpos(char *s1, char c)

與strrchr相似,但返回值是字符c在s1串中最后一次出現(xiàn)的位置值,沒有找到則返回-1

int strspn(char *s1, char *set)

搜索s1串中第一個不包括在set串中的字符,返回值是s1中包括在set里的字符個數(shù)。如果s1中的所有字符都包括在set里面,則返回s1的長度(不包括結束符)。如果set是空串,則返回0

int strcspn(char *s1, char *set)

與strspn相似,但它搜索的是s1串中的第一個包含在set里的字符。

char *strpbrk(char *s1, char *set)

與strspn相似,但返回指向搜索到的字符的指針,而不是個數(shù);如果未找到,則返回NULL

char *strrpbrk(char *s1, char *set)

與strpbrk相似,但它返回s1中指向找到的set字符集中最后一個字符的指針

5. 類型轉換及內(nèi)存分配庫函數(shù):

類型轉換及內(nèi)存分配庫函數(shù)的原型聲明包含在頭文件STDLIB.H中,利用該庫函數(shù)可以完成數(shù)據(jù)類型轉換以及存儲器分配操作。

函數(shù)名及定義

功能說明

float atof(char *s1)

將字符串s1轉換成浮點數(shù)值并返回,輸入串中必須包含與浮點值規(guī)定相符的數(shù)。該函數(shù)在遇到第一個不能構成數(shù)字的字符時,停止對輸入字符串的讀操作

long atoll(char *s1)

將字符串s1轉換成一個長整型數(shù)值并返回,輸入串中必須包含與長整型數(shù)格式相符的字符串。該函數(shù)在遇到第一個不能構成數(shù)字的字符時,停止對輸入字符串的讀操作

int atoi(char *s1)

將字符串s1轉換成整型數(shù)并返回,輸入串中必須包含與整型數(shù)格式相符的字符串。該函數(shù)在遇到第一個不能構成數(shù)字的字符時,停止對輸入字符串讀操作

void *calloc(unsigned int n, unsigned int size)

為n個元素的數(shù)組分配內(nèi)存空間,數(shù)組中每個元素的大小為size,所分配的內(nèi)存區(qū)域用0初始化。返回值為已分配的內(nèi)存單元起始地址,如不成功則返回0

void free(void xdata *p)

釋放指針p所指向的存儲器區(qū)域。如果p為NULL,則該函數(shù)無效,p必須是以前用calloc、malloc或realloc函數(shù)分配的存儲器區(qū)域。調(diào)用free函數(shù)后,被釋放的存儲器區(qū)域就可以參加以后的分配了

void init_mempool(void xdata *p, unsigned int size)

對可被函數(shù)calloc、free、malloc或realloc管理的存儲器區(qū)域進行初始化,指針p表示存儲區(qū)的首地址,size表示存儲區(qū)的大小

void *malloc(unsigned int size)

在內(nèi)存中分配一個size字節(jié)大小的存儲器空間,返回值為一個size大小對象所分配的內(nèi)存指針。如果返回NULL,則無足夠的內(nèi)存空間可用

void *realloc(void xdata *p, unsigned int size)

用于調(diào)整先前分配的存儲器區(qū)域大小。參數(shù)p指示該存儲區(qū)域的起始地址,參數(shù)size表示新分配存儲器區(qū)域的大小。原存儲器區(qū)域的內(nèi)容被復制到新存儲器區(qū)域中。如果新區(qū)域較大,多出的區(qū)域將不作初始化。realloc返回指向新存儲區(qū)的指針,如果返回NULL,則無足夠大的內(nèi)存可用,這時將保持原存儲區(qū)不變。

int rand()

返回一個0~32767之間的偽隨機數(shù),對rand的相繼調(diào)用將產(chǎn)生相同序列的隨機數(shù)

void srand(int n)

用來將隨機數(shù)發(fā)生器初始化成一個已知(或期望)值

unsigned long strtod (const char *s, char **ptr)

將字符串s轉換為一個浮點型數(shù)據(jù)并返回,字符串前面的空格、/、tab符被忽略

long strtol (const char *s, char **ptr, unsigned char base)

將字符串s轉換為一個long型數(shù)據(jù)并返回,字符串前面的空格、/、tab符被忽略

long strtoul (const char *s, char **ptr, unsigned char base)

將字符串s轉換為一個unsigned long型數(shù)據(jù)并返回,溢出時則返回ULONG_MAX。字符串前面的空格、/、tab符被忽略

6. 數(shù)學計算庫函數(shù):

數(shù)學計算庫函數(shù)的原型聲明包含在頭文件MATH.H中。

函數(shù)名及定義

功能說明

int abs(int val)

char cabs(char val)

float fabs(float val)

long labs(long val)

abs計算并返回val的絕對值。如果val為正,則不做改變就返回;如果val為負,則返回相反數(shù)。其余3個函數(shù)除了變量和返回值類型不同之外,其他功能完全相同

float exp(float x)

float log(float x)

float log10(float x)

exp計算并返回浮點數(shù)x的指數(shù)函數(shù)

log計算并返回浮點數(shù)x的自然對數(shù)(以e為底,e=2.718282)

log10計算并返回浮點數(shù)x以10為底的對數(shù)

float sqrt(float x)

計算并返回x的正平方根

float cos(float x)

float sin(float x)

float tan(float x)

cos計算并返回x的余弦值

sin計算并返回x的正弦值

tan計算并返回x的正切值

變量范圍-π/2~+π/2

值在-65535~+65535之間

否則產(chǎn)生NaN錯誤

float acos(float x)

float asin(float x)

float atan(float x)

float atan2(float y, float x)

acos計算并返回x的反余弦值

asin計算并返回x的反正弦值

atan計算并返回x的反正切值,值域為-π/2~+π/2

atan2計算并返回y/x的反正切值,值域為-π~+π

float cosh(float x)

float sinh(float x)

float tanh(float x)

cosh計算并返回x的雙曲余弦值

sinh計算并返回x的雙曲正弦值

tanh計算并返回x的雙曲正切值

float ceil(float x)

計算并返回一個不小于x的最小整數(shù)(作為浮點數(shù))

float floor(float x)

計算并返回一個不大于x的最小整數(shù)(作為浮點數(shù))

float modf(float x, float *ip)

將浮點數(shù)x分成整數(shù)和小數(shù)部分,兩者都含有與x相同的符號,整數(shù)部分放入*ip,小數(shù)部分作為返回值

float pow(float x, float y)

計算并返回xy值,如果x不等于0而y=0,則返回1.當x=0且y<=0或當x<0且y不是整數(shù)時,則返回NaN

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多