




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第9章 單片機的C語言編程,9.1 C51編程語言簡介 9.2 C51的數(shù)據(jù)類型 9.3 數(shù)據(jù)的存儲器類型和存儲器模式 9.4 SFR、位變量、存儲器和I/O接口的定義 9.5 C51的函數(shù)和運算符 9.6 匯編語言與C51的混合編程 9.7 C語言單片機程序編寫舉例,9.1 C51編程語言簡介,9.1.1 C51編程語言 C語言與任何特定的硬件或系統(tǒng)無關。 C語言的代碼效率高,可與匯編語言媲美。 既可以實現(xiàn)高級語言的模塊化編程,又可以實現(xiàn)很多底層的操作。 在對效率或硬件操作要求比較高的地方,一般采用C語言和匯編語言聯(lián)合編程的方法。,C51語言具有的以下優(yōu)點: (1) C51自動管理存儲器的分
2、配,無需考慮不同存儲器的尋址和數(shù)據(jù)類型等細節(jié)。 (2) 程序由函數(shù)構成,便于進行模塊化程序設計。 (3) 子程序庫豐富,大大減輕了編程的工作量。 (4) 可以與匯編語言交叉編程,使編程更加靈活方便,便于提高程序的性能。,9.1.2 C51的程序結構,C51程序的基本結構如下所示,包含五個部分( ): #include /*預處理文件*/ #include 全局變量說明 /*可被程序中所有函數(shù)引用的變量*/ function1(形參列表); /*函數(shù)1聲明*/ functionN(形參列表); /*函數(shù)N聲明*/,main( ) /*主函數(shù),程序入口*/ 局部變量說明 /*只能在本函數(shù)體內引用的
3、變量*/ C 執(zhí)行語句 /*包括可能的函數(shù)調用語句等*/ ,function1(形參列表) /*函數(shù)1*/ 形參說明 局部變量說明 C 執(zhí)行語句 /*包括可能的函數(shù)調用語句等*/ functionN(形參列表) /*函數(shù)N*/ 形參說明 局部變量說明 C 執(zhí)行語句 /*包括可能的函數(shù)調用語句等*/ ,C51 語言的基本規(guī)則如下: (1) 變量必須先說明后引用,所有符號對大小寫敏感。 (2) 每條語句必須以分號“;”結尾,一行可以寫多條語句,一條語句也可以寫多行。 (3) 注釋用/*/表示,或用/表示(注意/只能注釋一行)。 (4) 花括號必須成對出現(xiàn),書寫位置不限。 下面是一段在C51學習中經
4、常被引用的程序:,#include /AT89X51 頭文件 #include void main() /*這是第一種注釋方式*/ /這是第二種注釋方式 SCON=0 x50; /串行口方式1,允許接收 TMOD=0 x20; /定時器1定時方式2 TCON=0 x40; /設定時器1開始計數(shù) TH1=0 xE8; /11.0592MHz1200bps TL1=0 xE8; TI=1; /設置TI發(fā)送第一個字符至串口 TR1=1; /啟動定時器 while(1) printf(helloworld! n); /顯示Hello World! ,9.2 C51的數(shù)據(jù)類型,C51 的數(shù)據(jù)分為常量和變
5、量。 常量是在程序的運行過程中不能被改變的量,變量是在程序運行過程中可以被改變的量。 變量由變量名和變量的內容構成。變量名指出了變量存放的位置,其內容就是變量的值。 無論變量還是常量,其實都是一個容器,它們的名字是容器的地址,它們的內容是容器的值。 它們在存儲器中具體的存儲位置則是由編譯器自動進行安排的。,9.2.1 C51常量的類型,(1)數(shù)值型常量 對于數(shù)值型常量可以用const和define來定義,如 int const a = 10; (2)符號型常量 對于符號型常量,必須用宏定義指令定義,如:#define PI 3.1415926,9.2.2 C51變量的類型,定義一個變量的格式如
6、下: 存儲種類 數(shù)據(jù)類型 存儲器類型 變量名表 存儲種類可分為兩類四種:自動(auto)、外部(extern)、靜態(tài)(static)和寄存器(register),缺省類型為自動(auto)。 自動和寄存器屬于動態(tài)存儲變量;外部和靜態(tài)屬于靜態(tài)存儲變量。,團結協(xié)作、形成凝聚力是教研組建設的前提。下面是小編整理提供的教研組工作計劃范文,歡迎閱讀參考!希望大家采納!更多相關信息請關注美文網的欄目!篇一一、基本情況:綜合組本學期共有教師11人,分別擔任英語、心理、科學和信息技術的教學工作。綜合組工作有其特色和活力,但由于課程綜合性較強,所擔任科目也不一樣,教研組工作的開展仍需各位教師加強團隊合作精神,共
7、同探討。二、指導思想根據(jù)學??傮w工作計劃的安排和教導室的教研工作安排,認真學習先進的教育思想和新的課程標準、積極實踐課改理念,全面深化素質教育,以更新觀念為前提,以提高師資整體素質為核心,緊緊圍繞“課堂教學”這一主線,結合本校特點,加強教學研究,不斷解決教學中的新問題,更新教學觀念,改變教師的教學行為和學生的學習方式,使我組教學質量穩(wěn)中有升。三、工作重點及要求:1.認真做好新課程實驗工作,最大限度地提高課堂教學效果。2.加強組內教研,做好聽課評課工作,使組內教師課堂教學水平得以提高。認真?zhèn)湔n,學習各學科的課程標準,加強集體備課,提高備課質量,為上課做好準備。認真執(zhí)行學校的上課、聽課制度,并通過
8、聽課使本組教師,說明: (1) 字符型、整型和長整型數(shù)據(jù)均分為有符號型和無符號型兩種。有符號型數(shù)據(jù)以補碼形式在內存中存放。 (2) 編譯程序時,編譯器自動進行數(shù)據(jù)類型轉換。當運算符兩邊的數(shù)據(jù)類型不同時,編譯器將低級的數(shù)據(jù)類型轉換為較高級的數(shù)據(jù)類型。運算結果為高級數(shù)據(jù)類型。 (3)bit、sbit、sfr和sfr16數(shù)據(jù)類型用于8051硬件和C51編譯器,并不是標準C語言的一部分,不能通過指針進行訪問。bit、sbit、sfr和sfr16數(shù)據(jù)類型用于訪問8051的特殊功能寄存器,例如sfr P0 = 0 x80,表示聲明變量P0,并為其分配特殊功能寄存器地址0 x80。,9.3 數(shù)據(jù)的存儲器類型
9、和存儲器模式,9.3.1 數(shù)據(jù)的存儲器類型,1.DATA區(qū) DATA 區(qū)的尋址是最快的,所以應該把經常使用的變量放在DATA區(qū),但是空間有限。DATA區(qū)聲明中的存儲類型標識符data,通常指低128B的內部數(shù)據(jù)區(qū)存儲的變量,可直接尋址。舉例如下: 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ū)實際就是DATA區(qū)中的位尋址區(qū),在這個區(qū)聲明變量就可進行位
10、尋址。BDATA區(qū)聲明中的存儲類型標識符為bdata,指內部可位尋址的16B存儲區(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ū)也可存放使用比較頻繁的變量,使用寄存器作為指針進行尋址,即在寄存器中設置8位地址進行間接尋址。IDATA區(qū)聲明中的存儲類型標識
11、符為idata,指內部的256B的存儲區(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ū)屬于外部存儲區(qū),最多可有64KB,當然這些地址不是必須用作存儲區(qū)的。但PDATA區(qū)只有256B,而XDATA區(qū)可達到65535B。聲明舉例如下: unsigned char xdata system_status=0;
12、unsigned int pdata unit_id2; char xdata inp_string16; float pdata outp_value;,5.CODE區(qū) 程序在存儲區(qū)CODE中的數(shù)據(jù)是不可改變的,跳轉向量和狀態(tài)表對CODE區(qū)的訪問和對XDATA區(qū)的訪問時間是一樣的。程序存儲區(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、位變量、存儲器和I/O接口的定義,9.4.1 特殊功能寄存器(SFR)的定義 1. sfr sfr用來定義字節(jié)尋址的特殊功能寄存器,如: sfr P0 = 0 x80;/表示P0口地址為80Hsfr TMOD = 0 x89; /定義定時器模式寄存器地址 sfr Acc = 0 xc0; /定義累加器地址 sfr SCON = 0 x98; /定義串行通信控制寄存器地址,2.sfr16 sfr16用來定義16位的特殊功能寄存器,如DPTR通過名字或地址來引用特殊功能寄存器,地址必須高于80H。許多新的8051派生系列單片機用兩個連續(xù)
14、地址的SFR來指定16位值,例如8052用地址0 xCC和0 xCD表示定時/計數(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 位 一般可把特殊功能寄存器的聲明放在一個頭文件中,例如: #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é)地址位位置 該變量用一個整常數(shù)作為sbit的基地址,基地址值必須能被8整除。“”后面的表達式指定位的位置,必須在07之間。例如: sbit OV = 0 xe02; /指定地址為0 xe0的第2位為OV,即溢出標志,9.5 C51的函數(shù)和運算符,9.5.1 函數(shù) 1.函數(shù)的分類 C 語言的函數(shù)分為庫函數(shù)和自定義函數(shù)兩種。C 編譯系統(tǒng)提供了一系列的標準
16、函數(shù)。這些函數(shù)包含在若干個頭文件中。用戶可以根據(jù)需要用#include命令將有關的頭文件包含在自己的程序中,這樣用戶就可以用調用函數(shù)的方法使用這些庫函數(shù)。自定義函數(shù)是用戶根據(jù)需要以函數(shù)的形式自己編寫的程序。 從是否有參數(shù)來看,函數(shù)分為有參函數(shù)和無參函數(shù)。有參函數(shù)在調用時用實際參數(shù)代替形式參數(shù)。函數(shù)要將結果返回調用函數(shù)。,2.函數(shù)的定義 所有的函數(shù)都是以“”開始,以“”結束。 (1)有參數(shù)函數(shù)的定義: 返回值類型 函數(shù)名(形式參數(shù)列表) 形式參數(shù)類型說明 函數(shù)體語句 return(返回形參名) (2)無參數(shù)函數(shù)的定義: 返回值類型 函數(shù)名( ) 函數(shù)體語句 如果函數(shù)沒有返回值,可以將返回值類型設
17、為void。,3.函數(shù)的調用 調用函數(shù)的形式為: 函數(shù)名(實際參數(shù)列表); 其中實際參數(shù)必須和形式參數(shù)的數(shù)目相等、類型一致。調用函數(shù)有3種方式: (1) 函數(shù)調用語句,把被調用函數(shù)名作為調用函數(shù)的一個語句。 (2) 被調用函數(shù)作為表達式的一個運算對象。 (3) 被調用函數(shù)作為另一個函數(shù)的實際參數(shù)。,9.5.2 運算符,1.賦值運算符 賦值運算符為:(賦值)。它表示將“”右邊的表達式的值賦給左邊的變量。 2.算術運算符 算術運算符包括:(加或正號)、(減或負號)、(乘號)、(除號)、(求余)。 算術運算符的優(yōu)先級順序為先乘除后加減,先括號內后括號外。 3.關系運算符 關系運算符包括:(小于)、(
18、大于)、(小于等于)、(大于等于)、(相等)、!(不相等)。 關系運算符的優(yōu)先級順序為前4個同級為高,后兩個同級為低。,4.邏輯運算符 邏輯運算符包括: /定義變量a 為int 類型 do /do while 組成循環(huán) for (a=0; a50000; a+); /這是一個循環(huán) P1_0 = 0; /設P1.0 口為低電平,點亮LED for (a=0; a50000; a+); /這是一個循環(huán) P1_0 = 1; /設P1.0 口為高電平,熄滅LED while(1); ,例9-2 8路跑馬燈。 可以在上面例子的基礎上,依次點亮八個燈,設計出一個亮滅的花樣來。電路如圖9-2。,#include /預處理文件 void main (void) /定義花樣數(shù)據(jù) const unsigned char design32= 0 xFF,0 xFE,0 xFD,0 xFB,0 xF7,0 xE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高中英語語法解析之數(shù)詞知識點一篇就全懂
- 2024-2025學年新教材高中語文 第八單元 詞語積累與詞語解釋教學實錄 部編版必修上冊
- 法律案例分析經濟法常識與試題解析
- 農業(yè)項目投資分析報告
- 13 橋 教學設計-2024-2025學年語文六年級上冊統(tǒng)編版
- 2024-2025學年新教材高中語文 第6單元 觀察與批判 13 林教頭風雪山神廟 裝在套子里的人教學實錄 新人教版必修下冊
- 2024-2025學年高中政治 專題4 1 科技活動:鋒利的雙刃劍教學實錄 新人教版選修6
- 7 開國大典(教學設計)-2024-2025學年統(tǒng)編版語文六年級上冊
- DB3710-T 188-2022 建筑施工企業(yè)全員教育培訓規(guī)程
- 10《清新空氣是個寶》我身邊的空氣好嗎(教學設計)-2023-2024學年道德與法治二年級下冊統(tǒng)編版
- 2025河南中煙許昌卷煙廠招聘10人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年寧波市水務環(huán)境集團有限公司招聘筆試參考題庫含答案解析
- 2020年國際命名化妝品原料INCI英漢對照名稱
- 課題申報參考:中華君子文化融入時代新人培養(yǎng)的價值與路徑研究
- 2025年高考數(shù)學二級結論篇(核心知識背記手冊)-專項訓練
- 2025年天津市事業(yè)單位面向甘南籍畢業(yè)生招聘35人歷年高頻重點提升(共500題)附帶答案詳解
- 廣東省肇慶市2025屆高中畢業(yè)班第二次模擬考試生物學試題(含答案)
- 《腦出血》課件完整版
- 2025版《實驗室緊急噴淋裝置安全操作規(guī)程》
- 議論文及其結構+課件統(tǒng)編版高中語文必修上冊
評論
0/150
提交評論