51單片機實用C語言程序設(shè)計與典型實例

出版時間:2009-7  出版社:中國電力出版社  作者:楊國田,白焰,董玲 編著  頁數(shù):232  
Tag標簽:無  

前言

1980年,英特爾公司推出了后來廣為普及的MCS-51單片機,近30年來,其衍生系列不斷涌現(xiàn),從Atmel加入FLASHROM.,到phillips加入各種外設(shè),再到后來的Cygnal推出C8051F,使得以8051為核心的單片機在各個發(fā)展階段的低端應(yīng)用中始終扮演著一個獨特的角色,其地位不斷提升,資源日漸豐富,歷經(jīng)30年仍在生機勃勃地延續(xù),甚至在SoC時代仍赫然占有一席之地。有資料顯示,8位機始終是嵌入式低端應(yīng)用的主要機型,而且在未來相當長的時間里仍會保持這個勢頭。而8051系列,在8位單片機中形成了一道獨特的風(fēng)景線。歷史最長、常盛不衰、眾星捧月、不斷更新,形成了既具有經(jīng)典性又不乏生命力的一個單片機系列??梢哉f,Intel公司創(chuàng)建了8位機的經(jīng)典系列結(jié)構(gòu)。究其原因,嵌入式系統(tǒng)嵌入到對象體系中,并在對象環(huán)境下運行,與對象領(lǐng)域相關(guān)的操作主要是對外界物理參數(shù)進行采集、處理,對外界對象實現(xiàn)控制,并與操作者進行人機交互等,而這些任務(wù)所要求的響應(yīng)速度有限,且不會隨時間變化。在8位單片機能基本滿足其響應(yīng)速度要求后,數(shù)據(jù)寬度不成為技術(shù)發(fā)展的主要矛盾。因此,8位單片機將穩(wěn)定下來,其技術(shù)發(fā)展方向轉(zhuǎn)為最大限度地滿足對象的采集、控制、可靠性和低功耗等品質(zhì)要求。而對于8051系列,則由于其實施技術(shù)開放政策,使得這個系列歷經(jīng)滄桑而不老。在相當長的歷史時期里,單片機的開發(fā)以匯編語言為主,即使今天,高效的工作程序也大多不能完全擺脫匯編語言,這當然有其原因。而且Borland公司創(chuàng)始人之一,因使用匯編語言撰寫編譯器開發(fā)出TurboPascal(首創(chuàng)In-MemorYCompiler)而震驚全世界的大名鼎鼎的AndersHeilsberg先生用他的傳奇經(jīng)歷也證明了匯編語言可以做大事。Anders先生使用匯編語言創(chuàng)造出了一度是全世界速度最快、品質(zhì)一流的Pascal編譯器,可見匯編語言的威力。但是,在Anders離開了Borland之后,幾乎沒有人能夠修改.Anders的編譯器,足見.Anders先生的匯編語言功力何以出神入化,并非常人所能企及。然而在今天,單片機應(yīng)用系統(tǒng)開發(fā)開始走向大型化、復(fù)雜化,開發(fā)周期要求越來越短,匯編語言被認為枯燥而難以維護和調(diào)試,而C語言成了人們熱捧的開發(fā)語言,尤其近年來C語言幾乎是大學(xué)新生的必修課,這雖然沒有直接降低單片機系統(tǒng)開發(fā)的門檻,但是卻抬高了門檻外的土地。當然,C語言是一種優(yōu)秀的高級語言,它精練,接近硬件,復(fù)雜程度適當,數(shù)據(jù)類型豐富、明確。

內(nèi)容概要

本書主要介紹8051系列單片機的c語言(C51)程序設(shè)計方法、應(yīng)用系統(tǒng)及程序設(shè)計實例,共分為8051系列單片機基礎(chǔ)、c語言基礎(chǔ)、應(yīng)用系統(tǒng)設(shè)計、設(shè)計案例等四個部分。其中第三部分以實例方式介紹應(yīng)用系統(tǒng)設(shè)計的有關(guān)問題。包括人機界面設(shè)計以及常用接口器件的使用等,例如按鈕、矩陣鍵盤、觸摸屏、LCD顯示器、串行A/D(D/A)器件、定時器、RS-232接口等;第四部分主要介紹多個應(yīng)用系統(tǒng)設(shè)計案例,包括紅外遙控系統(tǒng)、射頻遙控系統(tǒng)、電視遙控器、步進電機驅(qū)動系統(tǒng)、PS2/串口鼠標接口系統(tǒng)等。     本書寫作時注意展示C51與匯編語言的內(nèi)在聯(lián)系,這樣有利于對C51的自如運用,同時在案例部分給出系統(tǒng)設(shè)計時的種種考慮,力圖使讀者具有身臨其境的感覺。此外,還詳細介紹有關(guān)元器件參數(shù)計算的方法等,例如總線上拉電阻的阻值、電阻的額定功率核算等。     本書贈送1張光盤,內(nèi)含書中涉及到的所有程序以及相關(guān)的素材文件。     本書可作為從事單片機及嵌入式開發(fā)的技術(shù)人員、51單片機開發(fā)者和初學(xué)者的學(xué)習(xí)參考書,也可作為高等院校相關(guān)專業(yè)研究生和高年級本科生、大學(xué)教師等教材。

書籍目錄

前言第1章 51單片機基礎(chǔ) 1.1 51系列MCU的結(jié)構(gòu)組成 1.2 特殊功能寄存器 1.3 存儲器系統(tǒng)組成及特點 1.4 并行I/O接口 1.5 定時器,計數(shù)器組成及特點 1.6 中斷子系統(tǒng)  1.6.1  中斷請求  1.6.2 中斷響應(yīng)過程 1.7  串行I/O接口(UART)  1.7.1 UART的工作模式  1.7.2 波特率設(shè)置 1.8 系統(tǒng)擴展 1.9 51系列單片機的指令系統(tǒng)  1.9.1 程序設(shè)計模型  1.9.2 尋址方式  1.9.3 指令分類  1.9.4 指令列表第2章 C51基礎(chǔ) 2.1 C語言程序的基本結(jié)構(gòu)  2.1.1 C語言的字符集  2.1.2 C語言詞匯 2.2 數(shù)據(jù)類型和表達式  2.2.1 常量和變量  2.2.2 變量的類型  2.2.3 數(shù)組和指針  2.2.4 字符及字符串的表述  2.2.5 結(jié)構(gòu)、聯(lián)合和位段  2.2.6 自定義數(shù)據(jù)類型 2.3 基本運算  2.3.1 運算符的結(jié)合性與優(yōu)先級  2.3.2 算術(shù)運算符  2.3.3 遞變運算符  2.3.4 關(guān)系與邏輯運算符  2.3.5 位運算符  2.3.6 賦值運算符  2.3.7 逗號運算及其表達式  2.3.8 條件表達式  2.3.9 幾個特殊運算符的說明 2.4 數(shù)據(jù)輸入,輸出及實現(xiàn)  2.4.1 printf()函數(shù)  2.4.2 scanf函數(shù)  2.4.3  頭文件  2.4.4 輸入/輸出與串行接口 2.5 基本語句  2.5.1 基本語句分類  2.5.2 流控制語句 2.6 函數(shù)  2.6.1  函數(shù)的定義與聲明  2.6.2 函數(shù)的參數(shù)和返回值  2.6.3 函數(shù)的調(diào)用  2.6.4 main()函數(shù)  2.6.5 函數(shù)中的變量  2.6.6 變量的存儲類別 2.7 C語言預(yù)處理  2.7.1 宏定義  2.7.2 文件包含  2.7.3 條件編譯  2.7.4 預(yù)處理命令和預(yù)定義宏名匯總表 2.8 C語言程序設(shè)計基礎(chǔ)  2.8.1 算法及其描述  2.8.2 基本程序結(jié)構(gòu) 2.9 C51對ANSI C的擴展與簡化  2.9.1  內(nèi)存區(qū)域  2.9.2 存儲類型與存儲模式  2.9.3 變量或數(shù)據(jù)類型  2.9.4 Keil C51指針  2.9.5 Keil C51函數(shù) 2.10 Keil C51程序設(shè)計  2.10.1 絕對地址訪問  2.10.2 Keil C51與匯編的接口  2.10.3 Keil C51軟件包中的通用文件 2.11 Keil C51庫函數(shù)參考  2.11.1  內(nèi)建庫函數(shù)與普通庫函數(shù)……第3章 應(yīng)用系統(tǒng)設(shè)計第4章 應(yīng)用系統(tǒng)設(shè)計案例參考文獻后記

章節(jié)摘錄

插圖:變量從作用域角度分為全局變量和局部變量,有利于程序的模塊化和函數(shù)之間的相對獨立性。從技術(shù)實現(xiàn)的角度來看,C語言引入了靜態(tài)存儲和動態(tài)存儲兩種方式,即讓變量具有不同的生存期,對于實現(xiàn)全局和局部變量非常有利。(1)靜態(tài)存儲方式:變量在整個程序運行期間占有固定的內(nèi)存地址。(2)動態(tài)存儲方式:程序運行期間根據(jù)需要臨時為變量分配內(nèi)存。在計算機中,整個內(nèi)存除掉操作系統(tǒng)等系統(tǒng)程序占用的空間,剩余的空間均可由用戶程序使用,稱為用戶存儲空間,這部分空間又可細分為三個部分:(1)程序區(qū):用于存儲用戶程序,通常由操作系統(tǒng)加載,在單片機中則是事先固化的。(2)靜態(tài)存儲區(qū):程序加載的同時即已分配的內(nèi)存區(qū),在單片機中則是程序編譯后即已明確分配方案的數(shù)據(jù)存儲區(qū)。(3)動態(tài)存儲區(qū):程序運行時可以隨時申請或釋放的內(nèi)存區(qū)。全局變量全部存放在靜態(tài)存儲區(qū),程序開始執(zhí)行時為其分配內(nèi)存,程序結(jié)束時釋放。但在單片機中則是編譯后確定內(nèi)存地址,一般也不存在釋放問題。在整個程序運行期間,它們占據(jù)的存儲單元固定不變,無需動態(tài)地分配和釋放。但是不能說靜態(tài)存儲區(qū)存放的就一定是全局變量。極個別函數(shù),因位其運行結(jié)果與歷史有關(guān),需要一種局部、但能長期保存的變量,這種局部變量就需要放到靜態(tài)存儲區(qū)。而動態(tài)存儲區(qū)(通常是堆棧)則存放以下數(shù)據(jù):(1)函數(shù)的形參。(2)自動變量(未加stadc聲明的局部變量)。(3)函數(shù)調(diào)用時的現(xiàn)場保護和返回地址。上述三種數(shù)據(jù),在函數(shù)開始調(diào)用時分配(除自動變量外,其余在主調(diào)函數(shù)中即已分配)動態(tài)存儲空間,函數(shù)結(jié)束時釋放(除自動變量外,其余在回到主調(diào)函數(shù)后才徹底釋放)這些空間。在C語言中,每個變量和函數(shù)有兩個屬性:數(shù)據(jù)類型和數(shù)據(jù)的存儲類別.兩者全部說明后才完整地聲明了一個變量,如果不明確說明,則系統(tǒng)自動取缺省值,前面的許多程序?qū)嵗褪侨绱恕?/pre>

后記

作者1988年接觸單片機,從依托.rP801B平臺制作單片機仿真器開始,一直從事單片機、嵌入式系統(tǒng)研發(fā)工作,期間熟悉和使用過多種處理器的匯編語言,例如6502、8098、8048、805l、8086等同時,也使用過多種高級語言,例如C語言、Visual Basic、Visual Foxpro數(shù)據(jù)庫系統(tǒng)、Visual C++等,開發(fā)軟硬件產(chǎn)品數(shù)十種。至今仍在不斷學(xué)習(xí),因為嵌入式系統(tǒng)研發(fā)是一個曰新月異的世界。作者在本書寫作過程中大量參考了來自互聯(lián)網(wǎng)的資料,但因為網(wǎng)站的資料多互相轉(zhuǎn)載,很難搞清楚原始出處,因此,未在參考文獻中列出,在此一并表示感謝,敬請諒解。

編輯推薦

《51單片機實用C語言程序設(shè)計與典型實例》由中國電力出版社出版。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    51單片機實用C語言程序設(shè)計與典型實例 PDF格式下載


用戶評論 (總計2條)

 
 

  •   書借用簡單的實例來讓讀者輕松學(xué)習(xí)單片機 個人覺得還可以 但是書配帶的光盤碎裂的 根本使用不了
  •   很實用,感覺不錯,對初學(xué)者的我來說,幫助很大
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7