使用#include調用庫函數。
創(chuàng)新互聯擁有十多年成都網站建設工作經驗,為各大企業(yè)提供網站設計、成都做網站服務,對于網頁設計、PC網站建設(電腦版網站建設)、app軟件開發(fā)公司、wap網站建設(手機版網站建設)、程序開發(fā)、網站優(yōu)化(SEO優(yōu)化)、微網站、域名注冊等,憑借多年來在互聯網的打拼,我們在互聯網網站建設行業(yè)積累了很多網站制作、網站設計、網絡營銷經驗,集策劃、開發(fā)、設計、營銷、管理等網站化運作于一體,具備承接各種規(guī)模類型的網站建設項目的能力。
C51語言的編譯器中包含有豐富的庫函數,使用庫函數可以大大簡化用戶程序設計的工作量,提高編程效率。每個庫函數都在相應的頭文件中給出了函數原型聲明,在使用時,必須在源程序的開始處使用預處理命令#include將有關的頭文件包含進來。
C51庫函數中類型的選擇考慮到了8051單片機的結構特性,用戶在自己的應用程序中應盡可能地使用最小的數據類型,以最大限度地發(fā)揮8051單片機的性能,同時可減少應用程序的代碼長度。
單片機c語言編程是基于C語言的單片機編程。單片機的C語言采用C51編譯器(簡稱C51)。由C51產生的目標代碼短,運行速度高,存儲空間小,符合C語言的ANSI標準,生成的代碼遵循Intel目標文件格式,而且可與A51匯編語言PL/M51語言目標代碼混合使用。51單片機支持三種高級語言,即PL/M,C和BASIC。C語言是一種通用的程序設計語言,其代碼率高,數據類型及運算符豐富,并具有良好的程序結構,適用于各種應用的程序設計,是使用較廣的單片機編程語言。
函數定義好以后,要被其它函數調用了才能被執(zhí)行。C
語言的函數是能相互調用的,
但在調用函數前,必須對函數的類型進行說明,就算是標準庫函數也不例外。標準庫函數的
說明會被按功能分別寫在不一樣的頭文件中,使用時只要在文件最前面用#include
預處理語
句引入相應的頭文件。如前面一直有使用的
printf
函數說明就是放在文件名為
stdio.h
的
頭文件中。調用就是指一個函數體中引用另一個已定義的函數來實現所需要的功能,這個時候函
數體稱為主調用函數,函數體中所引用的函數稱為被調用函數。一個函數體中能調用數個
其它的函數,這些被調用的函數同樣也能調用其它函數,也能嵌套調用。筆者本人認為
主函數只是相對于被調用函數而言。在
c51
語言中有一個函數是不能被其它函數所調用的,
它就是
main
主函數。調用函數的一般形式如下:
函數名
(實際參數表)
“函數名”就是指被調用的函數。實際參數表能為零或多個參數,多個參數時要用逗
號隔開,每個參數的類型、位置應與函數定義時所的形式參數一一對應,它的作用就是把參
數傳到被調用函數中的形式參數,如果類型不對應就會產生一些錯誤。調用的函數是無參函
數時不寫參數,但不能省后面的括號。
在以前的一些例子我們也能看不一樣的調用方式:
1.函數語句
如
printf
("Hello
World!n");
這是在
我們的第一個程序中出現的,它以
"Hello
World!n"為參數調用
printf
這個庫函數。在這里函數調用被看作了一條語句。
2.函數參數
“函數參數”這種方式是指被調用函數的返回值當作另一個被調用函數的實際參
數,如
temp=StrToInt(CharB(16));CharB
的返回值作為
StrToInt
函數的實際參數傳遞。
3.函數表達式
而在上一篇的例子中有
temp
=
Count();這樣一句,這個時候函數的調用作為一個運算
對象出現在表達式中,能稱為函數表達式。例子中
Count()返回一個
int
類型的返回
值直接賦值給
temp。注意的是這種調用方式要求被調用的函數能返回一個同類型的值,
不然會出現不可預料的錯誤。
前面說到調用函數前要對被調用的函數進行說明。標準庫函數只要用#include
引入已
寫好說明的頭文件,在程序就能直接調用函數了。如調用的是自定義的函數則要用如下形
式編寫函數類型說明
類型標識符
函數的名稱(形式參數表);
這樣的說明方式是用在被調函數定義和主調函數是在同一文件中。你也能把這些寫到
文件名.h
的文件中用#include
"文件名.h"引入。如果被調函數的定義和主調函數不是在同
一文件中的,則要用如下的方式進行說明,說明被調函數的定義在同一項目的不一樣文件之上,
其實庫函數的頭文件也是如此說明庫函數的,如果說明的函數也能稱為外部函數。
extern
類型標識符
函數的名稱(形式參數表);
函數的定義和說明是完全不一樣的,在編譯的角度上看函數的定義是把函數編譯存放在
ROM
的某一段地址上,而函數說明是告訴編譯器要在程序中使用那些函數并確定函數的地
址。如果在同一文件中被調函數的定義在主調函數之前,這個時候能不用說明函數類型。也就
是說在
main
函數之前定義的函數,在程序中就能不用寫函數類型說明了。能在一個函
數體調用另一個函數(嵌套調用),但不允許在一個函數定義中定義另一個函數。還要注意
的是函數定義和說明中的“類型、形參表、名稱”等都要相一致。
C51的常用庫函數詳解C51語言的編譯器中包含有豐富的庫函數,使用庫函數可以大大簡化用戶程序設計的工作量,提高編程效率。每個庫函數都在相應的頭文件中給出了函數原型聲明,在使用時,必須在源程序的開始處使用預處理命令#include將有關的頭文件包含進來。C51庫函數中類型的選擇考慮到了8051單片機的結構特性,用戶在自己的應用程序中應盡可能地使用最小的數據類型,以最大限度地發(fā)揮8051單片機的性能,同時可減少應用程序的代碼長度。下面將C51的庫函數分類列出并詳細介紹其用法。1 字符函數字符函數的原型聲明包含在頭文件CTYPE.H中。常用的一些字符函數介紹如下。1.1 檢查英文字母函數檢查英文字母函數用于檢查形參字符是否為英文字母,其函數原型如下:bit isalpha(char c);其中,c為待判斷的字符,如果是英文字母則返回1,否則返回0。程序示例如下:1.2 檢查字母數字函數檢查字母數字函數用于檢查形參字符是否為英文字母或數字字符,其函數原型如下:bit isalnum(char c);1.3 檢查控制字符函數檢查控制字符函數用于檢查形參字符是否為控制字符,其函數原型:bit iscntrl (char c);其中,c為待判斷的字符。控制字符其取值范圍為0x00~0xlF之間或等于0x7F,如果是,則返回1,否則返回0。1.4 十進制數字檢查函數十進制數字檢查函數用于檢查形參字符是否為十進制數字,其函數原型如下:bit isdigit (char c);其中,c為待判斷的字符,如果是十進制數字則返回1,否則返回0。1.5 可打印字符檢查函數可打印字符檢查函數用于檢查形參字符是否為可打印字符,其函數原型如下:bit isgraph (char c);其中,c為待判斷的字符??纱蛴∽址娜≈捣秶鸀?x21~0x7C,不包含空格,如果是可打印字符則返回1,否則返回0。
1.6 包含空格的可打印字符檢查函數包含空格的可打印字符檢查函數用于檢查形參字符是否為可打印字符以及空格,其函數原型如下:bit isprint (char c);其中,c為待判斷字符。如果是則返回1,否則返回0。該函數與isgraph的區(qū)別在于包含了空格符,空格符為0x20。1.7 格式字符檢查函數格式字符檢查函數用于檢查形參字符是否為標點、空格或格式字符,其函數原型如下:bit ispunct (char c);其中,c為待判斷字符,如果是則返回1,否則返回0。1.8 小寫英文字母檢查函數小寫英文字母檢查函數用于檢查形參字符是否為小寫英文字母,其函數原型如下:bit islower(char c);其中,c為待判斷字符。如果是小寫英文字母則返回1,否則返回0。1.9 大寫英文字母檢查函數大寫英文字母檢查函數用于檢查形參字符是否為大寫英文字母,其函數原型如下:bit isupper(char c);其中,c為待判斷字符。如果是大寫英文字母則返回1,否則返回0。1.10 控制字符檢查函數控制字符檢查函數用于檢查形參字符是否為控制字符,其函數原型如下:bit isspace (char c);其中,c為待判斷字符。如果是控制字符則返回1,否則返回0??刂谱址ǎ嚎崭瘛⒅票矸?、回車、換行、垂直制表符和送紙,其取值范圍為0x09~0x0d,或為0x20。1.11 十六進制數字檢查函數十六進制數字檢查函數用于檢查形參字符是否為十六進制數字,其函數原型如下:bit isxdigit (char c);其中,c為待判斷字符。如果是16進制數字字符則返回1,否則返回0。1.12 十六進制數字轉換函數十六進制數字檢查函數用于轉換形參字符為十六進制數字,其函數原型如下:char toint (char c);其中,c為待轉換字符。該函數將形參字符0~9、a~f(大小寫無關)轉換為16進制數字。其中,對于字符0~9,返回值為0H~9H,對于ASCII字符a~f(大小寫無關),返回值為0AH~0FH。
¥
5.9
百度文庫VIP限時優(yōu)惠現在開通,立享6億+VIP內容
立即獲取
單片機C語言(C51)的常用庫函數
C51的常用庫函數詳解
C51語言的編譯器中包含有豐富的庫函數,使用庫函數可以大大簡化用戶程序設計的工作量,提高編程效率。每個庫函數都在相應的頭文件中給出了函數原型聲明,在使用時,必須在源程序的開始處使用預處理命令#include將有關的頭文件包含進來。
C51庫函數中類型的選擇考慮到了8051單片機的結構特性,用戶在自己的應用程序中應盡可能地使用最小的數據類型,以最大限度地發(fā)揮8051單片機的性能,同時可減少應用程序的代碼長度。
首先寄存器不需要作為參數傳的,在程序任何地方都可以使用。
如果對于輸入Cxkg1,Cxkg2...覺得麻煩可以有兩種方法:
1. #define Cxkg(x) PDin(x)
在使用時直接if (CFDP == Cxdg(1)),if (CFDP == Cxdg(2))...
2. 函數使用形參,比如:
char Runto1(int Cxkg_val)
{
函數中判斷也用Cxkg_val
}
函數調用時分別用Runto1(Cxkg1),Runto1(Cxkg2)等