《單片機(jī)技術(shù)及應(yīng)用》教案-項目0 C程序基礎(chǔ)知識_第1頁
《單片機(jī)技術(shù)及應(yīng)用》教案-項目0 C程序基礎(chǔ)知識_第2頁
《單片機(jī)技術(shù)及應(yīng)用》教案-項目0 C程序基礎(chǔ)知識_第3頁
《單片機(jī)技術(shù)及應(yīng)用》教案-項目0 C程序基礎(chǔ)知識_第4頁
《單片機(jī)技術(shù)及應(yīng)用》教案-項目0 C程序基礎(chǔ)知識_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

電子教案教學(xué)實(shí)施方案課題名稱單片機(jī)技術(shù)及應(yīng)用實(shí)訓(xùn)部審批任務(wù)名稱項目C程序基礎(chǔ)知識年月日學(xué)時20學(xué)時授課時間授課班級授課教師一、教學(xué)目標(biāo)知識目標(biāo)掌握C程序在51系列單片機(jī)中的應(yīng)用技能目標(biāo)掌握YL-236裝置完成任務(wù)的電路連接及編程方法情感目標(biāo)培養(yǎng)團(tuán)隊合作意識及邏輯意識二、重點(diǎn)難點(diǎn)教學(xué)重點(diǎn)C程序基礎(chǔ)知識教學(xué)難點(diǎn)掌握C程序在51系列單片機(jī)中的應(yīng)用三、學(xué)習(xí)內(nèi)容一、設(shè)計任務(wù)導(dǎo)入單片機(jī)與計算機(jī)是通過什么語言進(jìn)行交流的呢?這些語言是怎么使用的?二、【知識鏈接一】C程序的基礎(chǔ)知識1.C程序的基本結(jié)構(gòu)(1)C程序是由函數(shù)構(gòu)成的。一個C源程序至少且僅包含一個main函數(shù),也可以包含一個main

函數(shù)和若干其他函數(shù)。函數(shù)體的內(nèi)容由一對1括起來,必須成對出現(xiàn)。(2)main為“主函數(shù)”,一個C程序總是從main函數(shù)開始執(zhí)行,而且不論main函數(shù)在整個程序中的位置如何。(3)C程序書寫格式自由,一行內(nèi)可以寫幾條語句,一條語句可以分寫在多行上。(4)每條語句和數(shù)據(jù)聲明的最后必須有一個分號,分號是C語句的必要組成部分,不可缺少。既使程序中最后一條語句也應(yīng)包含分號。2.文件包含“文件包含”是指一個文件將另外一個文件的內(nèi)容全部包含進(jìn)來。其格式為:①#include<文件名稱>②#include“文件名稱"兩者區(qū)別在于“”和<>。<>表示頭文件在編譯器(KeilC51)的安裝目錄下,一般都是編譯器自帶的頭文件;“”表示頭文件在當(dāng)前工程的目錄下,一般都是自己寫的頭文件,編譯器將首先查找當(dāng)前目錄,如果沒找到,則在由菜單選擇項所確定的目錄中查找。任務(wù)2-1-1的程序中,文件a89x52.h在路徑“C:Keil\C51\INC\Atmel”中,是編譯器自帶的頭文件,它主要定義了ATMEL公司的52單片機(jī)內(nèi)部相關(guān)資源名稱,以方便使用。3.Keil

C51單片機(jī)集成開發(fā)環(huán)境Keil

C51是目前使用最廣泛的基于51單片機(jī)內(nèi)核的開發(fā)平臺之一,其編譯器性能較好。4.使用KeilC的關(guān)鍵字sbt來定義位變量第一種方法:sbit

位變量名=位地址值第二種方法:sbit

位變量名=字節(jié)名稱序號第三種方法:sbit位變量名=字節(jié)地址值序號例如:sbit

OV=PSW^2?!局R鏈接二】程序流程圖與程序的構(gòu)成等1.程序流程圖程序流程圖是用一些圖框來表示各種操作,直觀形象,易于理解。美國國家標(biāo)準(zhǔn)化協(xié)會ANSI(American

National

Standard

Institute)規(guī)定的一些常用的流程圖符號如知識鏈接,如圖2-1所示。知識鏈接圖2-12.程序的構(gòu)成程序=數(shù)據(jù)結(jié)構(gòu)+算法①對數(shù)據(jù)的指述,在程序中指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)。②對操作的描述,即操作步驟,也就是算法。3.邏輯運(yùn)算符“!”的作用為邏輯非運(yùn)算符,其作用是將邏輯量或位變量的值取反,即原來為1的,變?yōu)?;原來為0的,變?yōu)??!局R鏈接三】C51的數(shù)據(jù)結(jié)構(gòu)一、常量與變量C語言的基本數(shù)據(jù)類型,按其取值是否可改變分為常量和變量兩種。在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,取值可變的量稱為變量。1.數(shù)值常量數(shù)值常量也稱為常數(shù),例如12.-5.3.’c’、“abc”等。其中12為整型常量,-5.3為浮點(diǎn)型常量,’c’為字符型常量,“abc”為字符串常量。2.符號常量在C語言中,可以用一個標(biāo)識符(標(biāo)識符的定義見下文)來表示一個常量,稱之為符號常量。符號常量在使用之前必須先定義,其一般形式為:“#define標(biāo)識符常量”。其中,#define也是一條預(yù)處理命令,稱為宏定義命令,其功能是把該標(biāo)識符定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該標(biāo)識符的地方均代之以該常量值。二、變量值可以改變的量稱為變量。一個變量應(yīng)該有一個名字,在內(nèi)存中占據(jù)一定的存儲單元,在該存儲單元中存放變量的值。請注意:變量名與變量值的區(qū)別如知識鏈接圖2-2所示。在C語言中,要求對所有用到的變量做強(qiáng)制定義,也就是“先定義,后使用”。在C語言中用來標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名等的有效字符序列稱為標(biāo)識符。簡單地說,標(biāo)識符就是一個名字。知識鏈接圖2-2C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。要注意的是,C語言中大寫字母與小寫字母被認(rèn)為是兩個不同的字符,即Sum與sum是兩個不同的標(biāo)識符。1.整型變量整型變量的基本類型符為int,在int之前可以根據(jù)需要分別加上修飾符。在KeilC中規(guī)定,基本整型數(shù)據(jù)在存儲器中占用2個字節(jié)(即16bit)、長整型占用4個字節(jié)的存儲空間。知識鏈接表2-1列出了各種整型數(shù)據(jù)的有關(guān)數(shù)據(jù)。知識鏈接表2-1整數(shù)類型的有關(guān)數(shù)據(jù)類型關(guān)鍵字位數(shù)數(shù)值范圍基本類型[signed]int16-32768~32767即-215~(215-1)unsignedint160~65535即0~(216-1)長整型[signed]long[int]32-2147483648~2147483647即-231~(231-1)unsignedlong[int]320~4294967295即0~(232-1)2.字符型變量字符型變量的基本類型符為char,其表達(dá)的范圍是-128~+127;字符型變量只有一個修飾符unsigned,即無符號數(shù),而加上了unsigned后,其表達(dá)的范圍變?yōu)?~255。3.浮點(diǎn)型變量在8位單片機(jī)中,盡量不要用浮點(diǎn)型數(shù)據(jù),這里不做介紹。4.KeilC51特有的變量類型(1)位型變量位型變量是使用一個二進(jìn)制位來存放數(shù)據(jù),其值只有“0”和“1”兩種。位型變量的定義和其他數(shù)據(jù)類型一樣,關(guān)鍵字為bit。例如:bita=0;//定義一個位變量,并賦初值為0(2)sfr型變量80C51內(nèi)部有一些特殊功能寄存器(sfr)。為定義、存取這些特殊功能寄存器,C51增加了sfr型數(shù)據(jù),相應(yīng)也增加了sfr、sfrl6和sbit這3個關(guān)鍵字。例如:sfrP0=0x80;//定義8位特殊功能寄存器P0sfr16

DPTR=0x82;//定義16位特殊功能寄存器DPTR三、變量的存儲類型在變量前加一個修飾符可以指定變量的存儲器類型。①data:片內(nèi)RAM低128B,直接尋址訪問,存儲類型默認(rèn)為data。②bata;片內(nèi)RAM中20H~2FH,可以位尋址。③idata;片內(nèi)RAM中256B,間接尋址訪問。④xata:片外RAM中或片外I/O口擴(kuò)展。⑤code;ROM中一般為固定數(shù)據(jù)表格,用MOVC指令查表訪問。例如:unsigned

char

bdata

flag;sbit

FO=flag^0;sbit

Fl=flag^1;【知識鏈接四】C語言函數(shù)的相關(guān)知識一個較大的單片機(jī)應(yīng)用程序一般應(yīng)分為若干個程序模塊,每一個程序模塊用來實(shí)現(xiàn)一個定的功能。所有的高級語言都有子程序這個概念,用子程序?qū)崿F(xiàn)模塊的功能。在C語言中子程序的作用是由函數(shù)來完成的。一個C程序可由一個主函數(shù)和若干個其他函數(shù)構(gòu)成,由一個主函數(shù)調(diào)用其他函數(shù),其他函數(shù)也可以互相調(diào)用。同一個函數(shù)可以被一個或多個函調(diào)用任意多次。任何函數(shù)都是平行的,即在定義函數(shù)時是分別進(jìn)行、互相獨(dú)立的。一個函數(shù)并不從屬于另一個函數(shù),即函數(shù)不能嵌套定義。函數(shù)可以互相調(diào)用,但main函數(shù)不能被其他函數(shù)調(diào)用。一、函數(shù)定義的一般形式函數(shù)定義的一般形式為:類型標(biāo)識符函數(shù)名([形參數(shù)說明表列]){說明部分語句}“類型標(biāo)識符”指定函數(shù)返回值的類型,若無返回值,可用void定義無類型;若有返回值,則指定其數(shù)據(jù)類型。“形式參數(shù)”是該函數(shù)的輸入源數(shù)據(jù),也可為空。二、函數(shù)參數(shù)和函數(shù)的返回值1.形式參數(shù)和實(shí)際參數(shù)在調(diào)用函數(shù)時,若主調(diào)函數(shù)和被調(diào)函數(shù)之間有數(shù)據(jù)傳遞關(guān)系,在定義函數(shù)時函數(shù)名后面括號中的變量名稱為“形式參數(shù)”(下面簡稱形參);在主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面括號中的參數(shù)(也可以是一個表達(dá)式)為“實(shí)際參數(shù)”(下面簡稱實(shí)參)。函數(shù)的形參和實(shí)參具有以下特點(diǎn):(1)形參變量只有在被調(diào)用時才分配內(nèi)存單元,在調(diào)用結(jié)束時,即刻釋放所分配的內(nèi)存單元。形參只在函數(shù)內(nèi)部有效,函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。(2)實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等,無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應(yīng)預(yù)先用賦值、輸入等辦法使實(shí)參獲得確定值。(3)實(shí)參和形參在數(shù)量上、類型上、順序上應(yīng)嚴(yán)格一致,否則會發(fā)生“類型不匹配”的錯誤。(4)函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地傳送給實(shí)參。因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實(shí)參中的值不會變化。2.函數(shù)的返回值有時希望通過函數(shù)調(diào)用能得到一個確定的值,這就是函數(shù)的返回值。例如,在鍵盤程序中,主函數(shù)調(diào)用鍵盤函數(shù)得到一個鍵值,然后根據(jù)不同的鍵值做相應(yīng)的動作。例如:需要說明的是:(1)函數(shù)的返回值是由returm語句獲得的,如果需要帶回函數(shù)值,被調(diào)用函數(shù)中必須包含returm語句;如果不需要帶回函數(shù)值,被調(diào)用函數(shù)中可以不要return語句。(2)returm語句后面的括號可以不要,它后面可以是一個表達(dá)式。(3)函數(shù)返回值的類型和函數(shù)定義中函數(shù)的類型標(biāo)識符應(yīng)保持一致。如果兩者不一致,則以函數(shù)類型標(biāo)識符為準(zhǔn),自動進(jìn)行類型轉(zhuǎn)換。(4)不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為“void”。為了使程序有良好的可讀性并減少出錯,凡不要求返回值的函數(shù)都應(yīng)定義為空類型。三、局部變量和全局變量1.局部變量在一個函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,也就是只有在本函數(shù)內(nèi)才能使用它們,在此函數(shù)以外是不能使用這些變量的,這稱為“局部變量”。局部變量的使用中要注意:(1)主函數(shù)中定義的變量也只在主函數(shù)中有效,不會因?yàn)樵谥骱瘮?shù)中定義而在整個程序中有效。主函數(shù)也不能使用其他函數(shù)中定義的變量。(2)不同函數(shù)可以使用相同名字的變量,它們代表不同的對象,互不干擾。(3)形式參數(shù)也是局部變量。2.全局變量在函數(shù)以外定義的變量稱為外部變量,外部變量是全局變量(也稱為全程變量)。全局變量可以為本文件其他函數(shù)所共用,它的有效范圍是從定義變量的位置開始到本源文件結(jié)束。全局變量的使用中應(yīng)注意:(1)設(shè)置全局變量的作用是增加函數(shù)間數(shù)據(jù)聯(lián)系的渠道。由于同一文件中的所有函數(shù)都能引用全局變量的值,因此如果在一個函數(shù)中改變了全局變量的值,就能影響到其他函數(shù),相當(dāng)于各個函數(shù)間有直接的傳遞渠道。(2)建議不必要時不要使用全局變量。全局變量過多,會降低程序的清晰性。(3)如果在同一源文件中,全局變量和局部變量同名,在局部變量的作用范圍內(nèi),全局變量被“屏蔽”,即它不起作用?!局R鏈接五】C語言的數(shù)組實(shí)際工作中,往往需要對一組數(shù)據(jù)進(jìn)行操作。這一組數(shù)據(jù)之間有一定聯(lián)系,如果采用定義變量的方法,需要定義多個變量,并且難以體現(xiàn)各個變量之間的關(guān)系。這時,需要用到數(shù)組。數(shù)組是有序數(shù)據(jù)的集合。數(shù)組中的每個元素都屬于同一個數(shù)據(jù)類型。用一個統(tǒng)一的數(shù)組名和下標(biāo)來唯一地確定數(shù)組中的元素。一、一維數(shù)組的定義和引用一維數(shù)組的定義方式為:類型說明符數(shù)組名[常量表達(dá)式]例如:chara[10];(1)數(shù)組的類型實(shí)際上是指數(shù)組元素的取值類型。對于同一個數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的。(2)數(shù)組名定名規(guī)則和變量名的相同,遵循標(biāo)識符定名規(guī)則。(3)數(shù)組名不能與其他變量名相同。(4)常量表達(dá)式只能用方括號括起來,不能用圓括號。(5)方括號中的常量表達(dá)式表示數(shù)組元素的個數(shù),如a[5]表示數(shù)組a有5個元素。但是其下標(biāo)從0開始計算。因此5個元素分別為a[0],a[1],a[2],a[3],a[4]。(6)不能在方括號中用變量表示元素的個數(shù),但是可以用符號常數(shù)或常量表達(dá)式。(7)允許在同一個類型說明中,說明多個數(shù)組和多個變量。例如:inta,b,c,d,kl[10],k2[20];二、二維數(shù)組的定義和引用1.二維數(shù)組的定義方式類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]其中,常量表達(dá)式1表示第一維下標(biāo)的長度,常量表達(dá)式2表示第二維下標(biāo)的長度。例:inta[3][4];說明了一個三行四列的數(shù)組,數(shù)組名為a,其下標(biāo)變量的類型為整型。該數(shù)組的下標(biāo)變量共有3×4個,即:a[0][0],a[0][1],a[0][2],a[0][3]a[1][0],a[1][1],a[1][2],a[l][3]a[2][0],a[2][1],a[2][2],a[2][3]在C語言中,二維數(shù)組是按行排列的。2.二維數(shù)組的初始化①分行給二維數(shù)組賦初值。inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};②可以將所有的數(shù)據(jù)寫在一個大括號內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x初值。inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};③可以對部分元素賦初值。inta[3][4]={{1},{5},{9}};

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論