第9章-單片機(jī)的C語(yǔ)言編程.ppt_第1頁(yè)
第9章-單片機(jī)的C語(yǔ)言編程.ppt_第2頁(yè)
第9章-單片機(jī)的C語(yǔ)言編程.ppt_第3頁(yè)
第9章-單片機(jī)的C語(yǔ)言編程.ppt_第4頁(yè)
第9章-單片機(jī)的C語(yǔ)言編程.ppt_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第9章 單片機(jī)的C語(yǔ)言編程,9.1 C51編程語(yǔ)言簡(jiǎn)介 9.2 C51的數(shù)據(jù)類型 9.3 數(shù)據(jù)的存儲(chǔ)器類型和存儲(chǔ)器模式 9.4 SFR、位變量、存儲(chǔ)器和I/O接口的定義 9.5 C51的函數(shù)和運(yùn)算符 9.6 匯編語(yǔ)言與C51的混合編程 9.7 C語(yǔ)言單片機(jī)程序編寫舉例,9.1 C51編程語(yǔ)言簡(jiǎn)介,9.1.1 C51編程語(yǔ)言 C語(yǔ)言與任何特定的硬件或系統(tǒng)無(wú)關(guān)。 C語(yǔ)言的代碼效率高,可與匯編語(yǔ)言媲美。 既可以實(shí)現(xiàn)高級(jí)語(yǔ)言的模塊化編程,又可以實(shí)現(xiàn)很多底層的操作。 在對(duì)效率或硬件操作要求比較高的地方,一般采用C語(yǔ)言和匯編語(yǔ)言聯(lián)合編程的方法。,C51語(yǔ)言具有的以下優(yōu)點(diǎn): (1) C51自動(dòng)管理存儲(chǔ)器的分

2、配,無(wú)需考慮不同存儲(chǔ)器的尋址和數(shù)據(jù)類型等細(xì)節(jié)。 (2) 程序由函數(shù)構(gòu)成,便于進(jìn)行模塊化程序設(shè)計(jì)。 (3) 子程序庫(kù)豐富,大大減輕了編程的工作量。 (4) 可以與匯編語(yǔ)言交叉編程,使編程更加靈活方便,便于提高程序的性能。,9.1.2 C51的程序結(jié)構(gòu),C51程序的基本結(jié)構(gòu)如下所示,包含五個(gè)部分( ): #include /*預(yù)處理文件*/ #include 全局變量說(shuō)明 /*可被程序中所有函數(shù)引用的變量*/ function1(形參列表); /*函數(shù)1聲明*/ functionN(形參列表); /*函數(shù)N聲明*/,main( ) /*主函數(shù),程序入口*/ 局部變量說(shuō)明 /*只能在本函數(shù)體內(nèi)引用的

3、變量*/ C 執(zhí)行語(yǔ)句 /*包括可能的函數(shù)調(diào)用語(yǔ)句等*/ ,function1(形參列表) /*函數(shù)1*/ 形參說(shuō)明 局部變量說(shuō)明 C 執(zhí)行語(yǔ)句 /*包括可能的函數(shù)調(diào)用語(yǔ)句等*/ functionN(形參列表) /*函數(shù)N*/ 形參說(shuō)明 局部變量說(shuō)明 C 執(zhí)行語(yǔ)句 /*包括可能的函數(shù)調(diào)用語(yǔ)句等*/ ,C51 語(yǔ)言的基本規(guī)則如下: (1) 變量必須先說(shuō)明后引用,所有符號(hào)對(duì)大小寫敏感。 (2) 每條語(yǔ)句必須以分號(hào)“;”結(jié)尾,一行可以寫多條語(yǔ)句,一條語(yǔ)句也可以寫多行。 (3) 注釋用/*/表示,或用/表示(注意/只能注釋一行)。 (4) 花括號(hào)必須成對(duì)出現(xiàn),書寫位置不限。 下面是一段在C51學(xué)習(xí)中經(jīng)

4、常被引用的程序:,#include /AT89X51 頭文件 #include void main() /*這是第一種注釋方式*/ /這是第二種注釋方式 SCON=0 x50; /串行口方式1,允許接收 TMOD=0 x20; /定時(shí)器1定時(shí)方式2 TCON=0 x40; /設(shè)定時(shí)器1開始計(jì)數(shù) TH1=0 xE8; /11.0592MHz1200bps TL1=0 xE8; TI=1; /設(shè)置TI發(fā)送第一個(gè)字符至串口 TR1=1; /啟動(dòng)定時(shí)器 while(1) printf(helloworld! n); /顯示Hello World! ,9.2 C51的數(shù)據(jù)類型,C51 的數(shù)據(jù)分為常量和變

5、量。 常量是在程序的運(yùn)行過(guò)程中不能被改變的量,變量是在程序運(yùn)行過(guò)程中可以被改變的量。 變量由變量名和變量的內(nèi)容構(gòu)成。變量名指出了變量存放的位置,其內(nèi)容就是變量的值。 無(wú)論變量還是常量,其實(shí)都是一個(gè)容器,它們的名字是容器的地址,它們的內(nèi)容是容器的值。 它們?cè)诖鎯?chǔ)器中具體的存儲(chǔ)位置則是由編譯器自動(dòng)進(jìn)行安排的。,9.2.1 C51常量的類型,(1)數(shù)值型常量 對(duì)于數(shù)值型常量可以用const和define來(lái)定義,如 int const a = 10; (2)符號(hào)型常量 對(duì)于符號(hào)型常量,必須用宏定義指令定義,如:#define PI 3.1415926,9.2.2 C51變量的類型,定義一個(gè)變量的格式如

6、下: 存儲(chǔ)種類 數(shù)據(jù)類型 存儲(chǔ)器類型 變量名表 存儲(chǔ)種類可分為兩類四種:自動(dòng)(auto)、外部(extern)、靜態(tài)(static)和寄存器(register),缺省類型為自動(dòng)(auto)。 自動(dòng)和寄存器屬于動(dòng)態(tài)存儲(chǔ)變量;外部和靜態(tài)屬于靜態(tài)存儲(chǔ)變量。,團(tuán)結(jié)協(xié)作、形成凝聚力是教研組建設(shè)的前提。下面是小編整理提供的教研組工作計(jì)劃范文,歡迎閱讀參考!希望大家采納!更多相關(guān)信息請(qǐng)關(guān)注美文網(wǎng)的欄目!篇一一、基本情況:綜合組本學(xué)期共有教師11人,分別擔(dān)任英語(yǔ)、心理、科學(xué)和信息技術(shù)的教學(xué)工作。綜合組工作有其特色和活力,但由于課程綜合性較強(qiáng),所擔(dān)任科目也不一樣,教研組工作的開展仍需各位教師加強(qiáng)團(tuán)隊(duì)合作精神,共

7、同探討。二、指導(dǎo)思想根據(jù)學(xué)校總體工作計(jì)劃的安排和教導(dǎo)室的教研工作安排,認(rèn)真學(xué)習(xí)先進(jìn)的教育思想和新的課程標(biāo)準(zhǔn)、積極實(shí)踐課改理念,全面深化素質(zhì)教育,以更新觀念為前提,以提高師資整體素質(zhì)為核心,緊緊圍繞“課堂教學(xué)”這一主線,結(jié)合本校特點(diǎn),加強(qiáng)教學(xué)研究,不斷解決教學(xué)中的新問(wèn)題,更新教學(xué)觀念,改變教師的教學(xué)行為和學(xué)生的學(xué)習(xí)方式,使我組教學(xué)質(zhì)量穩(wěn)中有升。三、工作重點(diǎn)及要求:1.認(rèn)真做好新課程實(shí)驗(yàn)工作,最大限度地提高課堂教學(xué)效果。2.加強(qiáng)組內(nèi)教研,做好聽課評(píng)課工作,使組內(nèi)教師課堂教學(xué)水平得以提高。認(rèn)真?zhèn)湔n,學(xué)習(xí)各學(xué)科的課程標(biāo)準(zhǔn),加強(qiáng)集體備課,提高備課質(zhì)量,為上課做好準(zhǔn)備。認(rèn)真執(zhí)行學(xué)校的上課、聽課制度,并通過(guò)

8、聽課使本組教師,說(shuō)明: (1) 字符型、整型和長(zhǎng)整型數(shù)據(jù)均分為有符號(hào)型和無(wú)符號(hào)型兩種。有符號(hào)型數(shù)據(jù)以補(bǔ)碼形式在內(nèi)存中存放。 (2) 編譯程序時(shí),編譯器自動(dòng)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。當(dāng)運(yùn)算符兩邊的數(shù)據(jù)類型不同時(shí),編譯器將低級(jí)的數(shù)據(jù)類型轉(zhuǎn)換為較高級(jí)的數(shù)據(jù)類型。運(yùn)算結(jié)果為高級(jí)數(shù)據(jù)類型。 (3)bit、sbit、sfr和sfr16數(shù)據(jù)類型用于8051硬件和C51編譯器,并不是標(biāo)準(zhǔn)C語(yǔ)言的一部分,不能通過(guò)指針進(jìn)行訪問(wèn)。bit、sbit、sfr和sfr16數(shù)據(jù)類型用于訪問(wèn)8051的特殊功能寄存器,例如sfr P0 = 0 x80,表示聲明變量P0,并為其分配特殊功能寄存器地址0 x80。,9.3 數(shù)據(jù)的存儲(chǔ)器類型

9、和存儲(chǔ)器模式,9.3.1 數(shù)據(jù)的存儲(chǔ)器類型,1.DATA區(qū) DATA 區(qū)的尋址是最快的,所以應(yīng)該把經(jīng)常使用的變量放在DATA區(qū),但是空間有限。DATA區(qū)聲明中的存儲(chǔ)類型標(biāo)識(shí)符data,通常指低128B的內(nèi)部數(shù)據(jù)區(qū)存儲(chǔ)的變量,可直接尋址。舉例如下: unsigned char data system_status=0; unsigned int data unit_id2; char data inp_string16; float data outp_value; mytype data new_var;,2.BDATA區(qū) BDATA區(qū)實(shí)際就是DATA區(qū)中的位尋址區(qū),在這個(gè)區(qū)聲明變量就可進(jìn)行位

10、尋址。BDATA區(qū)聲明中的存儲(chǔ)類型標(biāo)識(shí)符為bdata,指內(nèi)部可位尋址的16B存儲(chǔ)區(qū)(20H2FH)可位尋址變量的數(shù)據(jù)類型。 unsigned char bdata status_bute; unsigned int bdata status_word; unsigned long bdata status_dword; sbit stat_flag=status_byte4; if(status_word15) stat_flag=1;,3.IDATA 區(qū) IDATA區(qū)也可存放使用比較頻繁的變量,使用寄存器作為指針進(jìn)行尋址,即在寄存器中設(shè)置8位地址進(jìn)行間接尋址。IDATA區(qū)聲明中的存儲(chǔ)類型標(biāo)識(shí)

11、符為idata,指內(nèi)部的256B的存儲(chǔ)區(qū),但是只能間接尋址,速度比直接尋址慢。舉例如下: unsigned char idata system_status=0; unsigned int idata unit_id2; char idata inp_string16; float idata outp_value;,4.PDATA 區(qū)和XDATA區(qū) PDATA區(qū)和XDATA區(qū)屬于外部存儲(chǔ)區(qū),最多可有64KB,當(dāng)然這些地址不是必須用作存儲(chǔ)區(qū)的。但PDATA區(qū)只有256B,而XDATA區(qū)可達(dá)到65535B。聲明舉例如下: unsigned char xdata system_status=0;

12、unsigned int pdata unit_id2; char xdata inp_string16; float pdata outp_value;,5.CODE區(qū) 程序在存儲(chǔ)區(qū)CODE中的數(shù)據(jù)是不可改變的,跳轉(zhuǎn)向量和狀態(tài)表對(duì)CODE區(qū)的訪問(wèn)和對(duì)XDATA區(qū)的訪問(wèn)時(shí)間是一樣的。程序存儲(chǔ)區(qū)聲明舉例如下: unsigned int code unit_id2=1234; unsigned char code a = 0 x00, 0 x01,0 x02, 0 x03, 0 x04, 0 x05, 0 x06, 0 x07, 0 x08, 0 x09, 0 x10, 0 x11, 0 x12,

13、 0 x13, 0 x14, 0 x15 ;,9.4 SFR、位變量、存儲(chǔ)器和I/O接口的定義,9.4.1 特殊功能寄存器(SFR)的定義 1. sfr sfr用來(lái)定義字節(jié)尋址的特殊功能寄存器,如: sfr P0 = 0 x80;/表示P0口地址為80Hsfr TMOD = 0 x89; /定義定時(shí)器模式寄存器地址 sfr Acc = 0 xc0; /定義累加器地址 sfr SCON = 0 x98; /定義串行通信控制寄存器地址,2.sfr16 sfr16用來(lái)定義16位的特殊功能寄存器,如DPTR通過(guò)名字或地址來(lái)引用特殊功能寄存器,地址必須高于80H。許多新的8051派生系列單片機(jī)用兩個(gè)連續(xù)

14、地址的SFR來(lái)指定16位值,例如8052用地址0 xCC和0 xCD表示定時(shí)/計(jì)數(shù)器2的低和高字節(jié),如: sfr16 T2=0 xCC; /*表示T2 口低地址T2L=0 xCC,高地址T2H=0Xcd*/,3. sbit (1)sbit位變量名SFR寄存器名位位置 sfr PSW = 0 xD0; /聲明PSW為特殊功能寄存器,地址為0 xD0 sbit EA=IE7; /指定IE的第7位為EA,即中斷允許 sbit P0_1=P01; /P0_1 定義為P0 的第1 位 一般可把特殊功能寄存器的聲明放在一個(gè)頭文件中,例如: #include sbit P2_7=P27; /P2_7 定義為

15、P2 的第7 位 sbit acc_0=ACC0; /acc_0 定義為ACC 的第0 位,(2)sbit位變量名位地址 sbit P1_1 = 0 x91; sbit CY = 0 xD7; sbit EA = 0 xAF; (3)sbit 字節(jié)地址位位置 該變量用一個(gè)整常數(shù)作為sbit的基地址,基地址值必須能被8整除。“”后面的表達(dá)式指定位的位置,必須在07之間。例如: sbit OV = 0 xe02; /指定地址為0 xe0的第2位為OV,即溢出標(biāo)志,9.5 C51的函數(shù)和運(yùn)算符,9.5.1 函數(shù) 1.函數(shù)的分類 C 語(yǔ)言的函數(shù)分為庫(kù)函數(shù)和自定義函數(shù)兩種。C 編譯系統(tǒng)提供了一系列的標(biāo)準(zhǔn)

16、函數(shù)。這些函數(shù)包含在若干個(gè)頭文件中。用戶可以根據(jù)需要用#include命令將有關(guān)的頭文件包含在自己的程序中,這樣用戶就可以用調(diào)用函數(shù)的方法使用這些庫(kù)函數(shù)。自定義函數(shù)是用戶根據(jù)需要以函數(shù)的形式自己編寫的程序。 從是否有參數(shù)來(lái)看,函數(shù)分為有參函數(shù)和無(wú)參函數(shù)。有參函數(shù)在調(diào)用時(shí)用實(shí)際參數(shù)代替形式參數(shù)。函數(shù)要將結(jié)果返回調(diào)用函數(shù)。,2.函數(shù)的定義 所有的函數(shù)都是以“”開始,以“”結(jié)束。 (1)有參數(shù)函數(shù)的定義: 返回值類型 函數(shù)名(形式參數(shù)列表) 形式參數(shù)類型說(shuō)明 函數(shù)體語(yǔ)句 return(返回形參名) (2)無(wú)參數(shù)函數(shù)的定義: 返回值類型 函數(shù)名( ) 函數(shù)體語(yǔ)句 如果函數(shù)沒(méi)有返回值,可以將返回值類型設(shè)

17、為void。,3.函數(shù)的調(diào)用 調(diào)用函數(shù)的形式為: 函數(shù)名(實(shí)際參數(shù)列表); 其中實(shí)際參數(shù)必須和形式參數(shù)的數(shù)目相等、類型一致。調(diào)用函數(shù)有3種方式: (1) 函數(shù)調(diào)用語(yǔ)句,把被調(diào)用函數(shù)名作為調(diào)用函數(shù)的一個(gè)語(yǔ)句。 (2) 被調(diào)用函數(shù)作為表達(dá)式的一個(gè)運(yùn)算對(duì)象。 (3) 被調(diào)用函數(shù)作為另一個(gè)函數(shù)的實(shí)際參數(shù)。,9.5.2 運(yùn)算符,1.賦值運(yùn)算符 賦值運(yùn)算符為:(賦值)。它表示將“”右邊的表達(dá)式的值賦給左邊的變量。 2.算術(shù)運(yùn)算符 算術(shù)運(yùn)算符包括:(加或正號(hào))、(減或負(fù)號(hào))、(乘號(hào))、(除號(hào))、(求余)。 算術(shù)運(yùn)算符的優(yōu)先級(jí)順序?yàn)橄瘸顺蠹訙p,先括號(hào)內(nèi)后括號(hào)外。 3.關(guān)系運(yùn)算符 關(guān)系運(yùn)算符包括:(小于)、(

18、大于)、(小于等于)、(大于等于)、(相等)、!(不相等)。 關(guān)系運(yùn)算符的優(yōu)先級(jí)順序?yàn)榍?個(gè)同級(jí)為高,后兩個(gè)同級(jí)為低。,4.邏輯運(yùn)算符 邏輯運(yùn)算符包括: /定義變量a 為int 類型 do /do while 組成循環(huán) for (a=0; a50000; a+); /這是一個(gè)循環(huán) P1_0 = 0; /設(shè)P1.0 口為低電平,點(diǎn)亮LED for (a=0; a50000; a+); /這是一個(gè)循環(huán) P1_0 = 1; /設(shè)P1.0 口為高電平,熄滅LED while(1); ,例9-2 8路跑馬燈。 可以在上面例子的基礎(chǔ)上,依次點(diǎn)亮八個(gè)燈,設(shè)計(jì)出一個(gè)亮滅的花樣來(lái)。電路如圖9-2。,#include /預(yù)處理文件 void main (void) /定義花樣數(shù)據(jù) const unsigned char design32= 0 xFF,0 xFE,0 xFD,0 xFB,0 xF7,0 xE

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論