wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術學習與研究
當前位置:單片機教程網 >> 基礎教程 >> 瀏覽文章

第十四課 C51函數

作者:佚名   來源:本站原創   點擊數:  更新時間:2007年07月14日   【字體:

上一篇的最后一個例子中有用到函數,其實一直出現在例子中的  main()也算是一個函數,只不過它比較特殊,編譯時以它做為程序的開始段。有了函數 C 語言就有了模塊化的優 點,一般功能較多的程序,會在編寫程序時把每項單獨的功能分成數個子程序模塊,每個子 程序就能用函數來實現。函數還能被反復的調用,因此一些常用的函數能做成函數庫 以供在編寫程序時直接調用,從而更好的實現模塊化的設計,大大提高編程工作的效率。 一.函數定義

通常 C 語言的編譯器會自帶標準的函數庫,這些都是一些常用的函數,Keil uv 中也不 例外。標準函數已由編譯器軟件商編寫定義,使用者直接調用就能了,而無需定義。但是 標準的函數不足以滿足使用者的特殊要求,因此 C 語言允許使用者根據需要編寫特定功能的 函數,要調用它必須要先對其進行定義。定義的模式如下:

函數類型    函數名稱(形式參數表)

函數體

函數類型是說明所定義函數返回值的類型。返回值其實就是一個變量,只要按變量

類型來定義函數類型就行了。如函數不需要返回值函數類型能寫作“void”表示該函數沒 有返回值。注意的是函數體返回值的類型一定要和函數類型一致,不然會造成錯誤。函數名 稱的定義在遵循 C 語言變量命名規則的同時,不能在同一程序中定義同名的函數這將會造成 編譯錯誤(同一程序中是允許有同名變量的,因為變量有全局和局部變量之分)。形式參數 是指調用函數時要傳入到函數體內參與運算的變量,它能有一個、幾個或沒有,當不需要 形式參數也就是無參函數,括號內能為空或寫入“void”表示,但括號不能少。函數體中 能包含有局部變量的定義和程序語句,如函數要返回運算值則要使用 return 語句進行返 回。在函數的{}號中也能什么也不寫,這就成了空函數,在一個程序項目中能寫一些 空函數,在以后的修改和升級中能方便的在這些空函數中進行功能擴充。

二.函數的調用

函數定義好以后,要被其它函數調用了才能被執行。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 函數之前定義的函數,在程序中就能不用寫函數類型說明了。能在一個函 數體調用另一個函數(嵌套調用),但不允許在一個函數定義中定義另一個函數。還要注意 的是函數定義和說明中的“類型、形參表、名稱”等都要相一致。

三.中斷函數 中斷服務函數是編寫單片機應用程序不可缺少的。中斷服務函數只有在中斷源請求響應

中斷時才會被執行,這在處理突發事件和實時控制是十分有效的。例如:電路中一個按鈕, 要求按鈕后 LED 點亮,這個按鈕何時會被按下是不可預知的,為了要捕獲這個按鈕的事件, 通常會有三種方法,一是用循環語句不斷的對按鈕進行查詢,二是用定時中斷在間隔時間內 掃描按鈕,三是用外部中斷服務函數對按鈕進行捕獲。在這個應用中只有單一的按鈕功能, 那么第一種方式就能勝任了,程序也很簡單,但是它會不停的在對按鈕進行查詢浪費了

CPU 的時間。實際應用中一般都會還有其它的功能要求同時實現,這個時候能根據需要選用第 二或第三種方式,第三種方式占用的 CPU 時間最少,只有在有按鈕事件發生時,中斷服務函 數才會被執行,其余的時間則是執行其它的任務。

如果你學習過匯編語言的話,剛開始寫匯編的中斷應用程序時,你一定會為出入堆棧的 問題而困擾過。單片機c語言 語言擴展了函數的定義使它能直接編寫中斷服務函數,你能不必考 慮出入堆棧的問題,從而提高了工作的效率。擴展的關鍵字是 interrupt,它是函數定義時 的一個選項,只要在一個函數定義后面加上這個選項,那么這個函數就變成了中斷服務函數。

在后面還能加上一個選項 using,這個選項是指定選用 51 芯片內部 4 組工作寄存器中的


那個組。開始學習者能不必去做工作寄存器設定,而由編譯器自動選擇,避免產生不必要的錯 誤。定義中斷服務函數時能用如下的形式。

函數類型    函數名  (形式參數)  interrupt  n  [using  n]

interrupt 關鍵字是不可缺少的,由它告訴編譯器該函數是中斷服務函數,并由后面的

n 指明所使用的中斷號。n 的取值范圍為 0-31,但具體的中斷號要取決于芯片的型號,像 AT89c51 實際上就使用 0-4 號中斷。每個中斷號都對應一個中斷向量,具體地址為 8n+3, 中斷源響應后處理器會跳轉到中斷向量所處的地址執行程序,編譯器會在這地址上產生一個 無條件跳轉語句,轉到中斷服務函數所在的地址執行程序。下表是 51 芯片的中斷向量和中 斷號。

中斷號

中斷源

中斷向量

0

外部中斷 0

0003H

1

定時器/計數器 0

000BH

2

外部中斷 1

0013H

3

定時器/計數器 1

001BH

4

串行口

0023H

表 9-1    AT89c51 芯片中斷號和中斷向量

使用中斷服務函數時應注意:中斷函數不能直接調用中斷函數;不能通過形參傳速參數; 在中斷函數中調用其它函數,兩者所使用的寄存器組應相同。限于篇幅其它與函數相關的知 識這里不能一一加以說明,如變量的傳遞、存儲,局部變量、全部變量等,有興趣的朋友可 以訪問筆者的網站 閱讀更多相關文章。

下面是簡單的例子。首先要在前面做好的實驗電路中加多一個按鈕,接在 P3.2(12 引腳外 部中斷 INT0)和地線之間。把編譯好后的程序燒錄到芯片后,當接在 P3.2 引腳的按鈕接下 時,中斷服務函數 Int0Demo 就會被執行,把 P3 當前的狀態反映到 P1,如按鈕接下后 P3.7

(之前有在這腳裝過一按鈕)為低,這個時候 P1.7 上的 LED 就會熄滅。放開 P3.2 上的按鈕后,

P1LED 狀態保持先前按下 P3.2 時 P3 的狀態。

#include <at89x51.h>

unsigned char P3State(void); //函數的說明,中斷函數不用說明

void main(void)

{

IT0 = 0; //設外部中斷 0 為低電平觸發

EX0 = 1; //允許響應外部中斷 0

EA = 1; //總中斷開關

while(1);

}

//外部中斷 0 演示,使用 2 號寄存器組

void Int0Demo(void) interrupt 0 using 2


{

unsigned int Temp; //定義局部變量

P1 = ~P3State(); //調用函數取得 p2 的狀態反相后并賦給 P1

for (Temp=0; Temp<50; Temp++); //延時    這里只是演示局部變量的使用

}

//用于返回 P3 的狀態,演示函數的使用

unsigned char P3State(void)

{

unsigned char Temp;

Temp = P3; //讀取 P3 的引腳狀態并保存在變量 Temp 中

//這樣只有一句語句實在沒必要做成函數,這里只是學習函數的基本使用方法

return Temp;

}

關閉窗口

相關文章

国产情侣免费视频| 77成人影视| 亚洲欧美小说国产图片| 欧美成人黄色网| 日韩欧美精品在线观看视频| 99久久精品久久久久久ai换脸| 亚洲欧美综合v| 亚洲国产另类av| 国产成人在线视频网址| 欧美国产另类| 99re8这里有精品热视频8在线| 中文字幕有码在线视频| 先锋影音资源999| 色哟哟中文字幕| 国产免费观看av| 欧美熟妇精品黑人巨大一二三区| 国产美女网站在线观看| 久久精品magnetxturnbtih| 欧美激情区在线播放| 精品国产不卡一区二区三区| 黄色91在线观看| 欧美国产日韩a欧美在线观看| 日日夜夜免费精品| 久久视频国产| 97视频一区| 婷婷综合六月| 国产在线观看a视频| 小香蕉视频在线| 黄网网址免费| 欧美黑人乱大交ⅹxxxxx| 91久久精品无码一区二区| 九九热精品在线观看| 亚洲av成人无码一二三在线观看| 久久久精品在线视频| 在线视频不卡一区二区三区| 99精品欧美一区二区三区| 日韩美女主播视频| 九九精品在线播放| 亚洲人成在线一二| 欧美成人a视频| 欧美视频一区二区三区四区 | 免费人成视频在线| 中文字幕一二三四区| 污污网站在线观看视频| 黄色一级片在线看| 国产女主播av| 亚洲一区二区三区精品在线观看 | 亚洲天堂男人天堂女人天堂| 91精品国产全国免费观看 | 捆绑变态av一区二区三区| 亚洲视频综合| 欧美影院一区| 91精品在线观看国产| 欧美限制电影| 精品久久久久中文字幕小说| 激情av综合| 亚洲午夜免费| 国产精品毛片视频| 999久久久精品一区二区| 久久伊人国产| av一区在线播放| 99久久久国产精品免费调教网站| 在线人成日本视频| 亚洲女色av| 免费成人动漫| 成人不卡视频| 99综合99| 久久九九热re6这里有精品| 日韩欧美高清一区二区三区| 国产成人视屏| 久久黄色影视| 国产va免费精品观看精品视频| 香蕉久久精品| 色琪琪久久se色| 亚洲天天综合| aa亚洲婷婷| 国产日韩一区二区三区在线| 美女久久网站| 国产综合色视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 成人3d动漫网站| 黑巨人与欧美精品一区 | 欧美日韩亚洲一区| 国产亚洲亚洲| 精品一区二区三区免费视频| 国产成人av电影在线观看| 99久久婷婷国产精品综合| 久久亚洲欧美国产精品乐播| 中文字幕va一区二区三区| 亚洲精品中文在线| 欧美性猛交xxxx富婆| 欧美日韩成人激情| 亚洲黄色在线看| 日韩在线视频免费观看| 久久久噜噜噜久久| 91精品视频网站| 久久综合狠狠综合久久综青草| 一区二区不卡在线视频 午夜欧美不卡'| 欧美交换配乱吟粗大25p| 漂亮人妻被中出中文字幕| 天天操狠狠操夜夜操| 这里只有精品在线观看视频| 天堂网中文在线观看| 国产成人亚洲精品自产在线| 国产999久久久| 欧美另类极品videosbest视 | 中文字幕精品一区二区精| jizz中国女人| 一分钟免费观看视频播放www| 四虎黄色影院| 91社区在线高清| 毛片免费看不卡网站| 亚州精品视频| 亚洲一区二区三区四区五区午夜 | 最近国产精品视频| 影音先锋亚洲电影| 国产91在线|亚洲| 一区二区三区四区五区视频在线观看 | 色综合男人天堂| 成人在线观看视频网站| 天堂√在线观看一区二区| 国产成人黄色片| 欧美一区二区三区成人精品| 国产做受高潮漫动| 色先锋av男人资源先锋影院| 麻豆视频免费网站| 怡红院av在线| 国产精品任我爽爆在线播放| 伊人久久大香线蕉综合热线| 成人免费视频视频在线观看免费 | 99re视频| 韩日视频在线观看| 中文在线永久免费观看| 国产精品一区无码| 欧美乱大交xxxx| 外国精品视频在线观看| 写真福利精品福利在线观看| 久久成人综合| www.亚洲免费av| 一本到高清视频免费精品| 在线色欧美三级视频| 91精品久久久久久久久久入口| 一本久道久久综合| 野战少妇38p| 久久午夜鲁丝片| 在线观看天堂| 黄色网页在线免费看| 麻豆国产欧美一区二区三区r| 天堂在线亚洲视频| 亚洲一二三区视频在线观看| 亚洲一二在线观看| 国产亚洲精品自在久久| 色乱码一区二区三区在线| 免费在线视频观看| 久草视频国产| 国产一二区在线| 97精品视频| 国产欧美一区二区在线观看| 亚洲成年网站在线观看| 亚洲xxxx18| 国产福利精品一区二区三区| 日韩一区二区视频在线| 免费毛片观看| 伊人久久综合一区二区| 欧美日韩一区自拍| 亚洲久本草在线中文字幕| 亚洲日韩第一页| 国产另类自拍| xfplay5566色资源网站| a级片免费视频| 在线国产小视频| 国产精品色在线网站| 国产成人av网站| 欧美成人三级电影在线| 99re在线播放| 国产精品久久久久久亚洲色| av av片在线看| 夜鲁很鲁在线视频| 中文字幕亚洲影视| 欧美韩国日本一区| www国产精品视频| 精品一区二区三区毛片| 日韩a级片在线观看| 性xx无遮挡| 日本一区免费网站| 美女爽到高潮91| 91麻豆精品91久久久久同性| 亚洲综合中文字幕68页| 熟妇高潮一区二区| 久久久久久日本一区99| 肉体视频在线| 久久一区中文字幕| 777午夜精品视频在线播放| 91aaaa| 女人被狂躁c到高潮| 热re久久精品国产99热| 免费在线国产视频| 日韩专区在线视频| 日韩欧美国产一区二区三区| 国产精品视频免费一区| 亚洲午夜精品久久久久久高潮| 美女被草91| 91精品国产一区二区在线观看| 国产精品911| 亚洲欧美日韩区| 97在线免费视频观看| 日本a级c片免费看三区| 有码在线播放| 欧美日韩岛国| 欧美日韩成人综合天天影院| 精品日本一区二区三区| 日本在线一级片| av一级在线| 欧美日韩播放| 婷婷丁香久久五月婷婷| 91探花福利精品国产自产在线| 亚洲一二三四五| 国产精品偷乱一区二区三区| 欧洲美女精品免费观看视频| 99精品视频在线免费观看| 欧美成人免费全部观看天天性色| 国内自拍视频网| 亚欧精品一区二区三区| 日韩成人在线电影| 中文字幕精品在线不卡| 日本免费一区二区三区视频观看| 成人做爰69片免费| 天堂网.www在线资源| 电影一区二区在线观看| 亚洲欧美另类久久久精品2019| 国产精品国产亚洲伊人久久| 干b视频在线观看| 日本按摩中出| 欧美一区二区三区另类| 欧美一区二区国产| 大地资源网在线观看免费官网| 91久久精品国产91性色69| bl视频在线免费观看| 成人黄页在线观看| 97国产精品视频| 波多野吉衣中文字幕| 成人网免费看| 亚洲无线视频| 精品一区二区三区四区在线| 久久婷婷五月综合色国产香蕉| 天天操天天射天天舔| 国产精品久久久久久吹潮| 日韩一区在线看| 国产精品久久久久免费| 亚洲永久精品在线观看| 欧美巨大xxxx做受沙滩| 久久一夜天堂av一区二区三区| 国产精品www| 免费黄色国产视频| 黄网在线免费| 国产综合色在线| 992tv在线成人免费观看| 日本一级免费视频| 一级毛片在线观| 丝袜亚洲另类丝袜在线| 久久久国产精品视频| 中文字幕第3页| x88av蜜桃臀一区二区| 老司机午夜精品视频| 欧美高清视频在线播放| 国产熟妇久久777777| 中文字幕电影在线| 捆绑紧缚一区二区三区视频 | 欧美亚洲综合色| 国产精品日韩三级| 成人影院久久久久久影院| 卡通动漫国产精品| 7777精品伊人久久久大香线蕉超级流畅| 久久久久久久9| 国产精品自产拍在线网站| 99视频精品视频高清免费| 日韩久久精品成人| 久久久久中文字幕亚洲精品| 理论片鲁丝二区爱情网| 美女一区二区三区| 国产精品久久久久久av福利| a v视频在线观看| 亚洲一区二区三区四区| 色综合天天综合在线视频| 亚洲熟妇无码一区二区三区| 影音先锋2020色资源网| 亚洲二区精品| 国内精品小视频| 国产一级久久久| 性欧美超级视频| 一本久久综合亚洲鲁鲁五月天| 男女激情无遮挡| 黄网站在线观看高清免费| 性欧美暴力猛交另类hd| 78m国产成人精品视频| 亚洲欧美在线视频免费| 欧美成人aaa| 欧美视频在线观看一区二区| 看欧美ab黄色大片视频免费| 中文字幕免费中文| 国产曰批免费观看久久久| 91日本在线观看| av中文字幕免费在线观看| 亚洲色图丝袜| 在线观看免费高清视频97| 五月天婷婷丁香网| 91九色国产在线播放| 色88888久久久久久影院按摩| 国产a级片免费观看| bdsm精品捆绑chinese| 91在线播放网址| 亚洲三区视频| 免费a漫导航| 狠狠色丁香久久婷婷综| 国产精品一国产精品最新章节| 呦视频在线一区二区三区| 欧美精品97| 日韩女在线观看| 99久久国产热无码精品免费| 欧美先锋资源| 国模视频一区二区| 丰满熟女人妻一区二区三| 九九综合久久| 欧美高清videos高潮hd| 在线免费黄色av| 五月国产精品| 欧美精品情趣视频| 国产成人麻豆免费观看| 自拍自偷一区二区三区| 粗暴蹂躏中文一区二区三区| 久久久精品福利| 九九精品在线| 2019中文字幕在线观看| 91成人一区二区三区| 91欧美在线| 国产精品久久久久国产a级| 欧美自拍第一页| 国产午夜精品一区二区三区欧美 | 久久精品99久久久久久久久| 国产成人免费观看视频 | 欧美老熟妇乱大交xxxxx| 正在播放日韩精品| 精品久久久久久久一区二区蜜臀| 91麻豆精品国产91久久综合| 久久国产三级| 中文字幕欧美国内| 中文字幕一区二区人妻视频| jlzzjlzz亚洲女人| 国产suv精品一区二区| 香港一级纯黄大片| 日韩国产高清影视| 日韩片电影在线免费观看| 四虎最新地址发布| 中文字幕一区在线| 99re6在线观看| 超碰资源在线| 日韩久久精品成人| 五月天中文字幕| 一区二区自拍| 快播亚洲色图| 久久久久久久久久久久久久久久久久久| 国产欧美日韩另类视频免费观看| 无码aⅴ精品一区二区三区浪潮| 黑人与亚洲人色ⅹvideos| 欧美影视一区二区三区| 国产激情无码一区二区三区| 亚洲深夜福利在线观看| 国产精品丝袜高跟| 人人干狠狠干| 18涩涩午夜精品.www| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 国产+人+亚洲| 在线天堂中文| 成人午夜av在线| 一本久道中文无码字幕av| xxxx在线视频| 自拍视频国产精品| 亚洲精品.www| 国产激情视频一区二区在线观看| 久青草视频在线播放| 91吃瓜网在线观看| 精品成人佐山爱一区二区| 波多野结衣人妻| 美女精品在线观看| 日本一级黄视频| 成人爽a毛片免费啪啪动漫| 一区二区中文字幕| 色窝窝无码一区二区三区| 国产91在线观看丝袜| 日本人视频jizz页码69| 欧美在线va视频| 欧美一级大片在线免费观看| 影音先锋2020色资源网| 亚洲黄色小视频| 懂色av粉嫩av浪潮av| 久久国产亚洲| 日韩不卡av| 欧美日本一道| 日韩在线免费观看视频| 最近中文字幕第一页|