單片機應用系統(tǒng)的設計規(guī)范課件_第1頁
單片機應用系統(tǒng)的設計規(guī)范課件_第2頁
單片機應用系統(tǒng)的設計規(guī)范課件_第3頁
單片機應用系統(tǒng)的設計規(guī)范課件_第4頁
單片機應用系統(tǒng)的設計規(guī)范課件_第5頁
已閱讀5頁,還剩117頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第七章單片機應用系統(tǒng)設計概述與高級語言編程7.1單片機應用系統(tǒng)設計概述

單片機是一種集成電路芯片,采用超大規(guī)模技術把具有數據處理能力的微處理器(CPU),隨機存取數據存儲器(RAM),只讀程序存儲器(ROM),輸入輸出電路(I/O口),可能還包括定時計數器,串行通信口(SCI),等電路集成到一塊單塊芯片上,構成一個最小然而完善的計算機系統(tǒng)。這些系統(tǒng)能在軟件的控制下準確、迅速、高效地完成程序設計者事先規(guī)定的任務。

由此來看,單片機有著微處理器所不具備的功能,它可單獨地完成現代工業(yè)控制所要求的智能化控制功能,這是單片機最大的特征。

單片機控制系統(tǒng)能夠取代以前利用復雜電子線路或數字電路構成的控制系統(tǒng),可以軟件控制來實現,并能夠實現智能化,現在單片機控制范疇無所不在,例如通信產品、家用電器、智能儀器儀表、過程控制和專用控制裝置等等,單片機的應用領域越來越廣泛。第七章單片機應用系統(tǒng)設計概述與高級語言編程7.1單片17.1.1單片機應用系統(tǒng)的分類按照單片機系統(tǒng)擴展與系統(tǒng)配置的狀況,單片機應用系統(tǒng)可分為最小系統(tǒng)、典型應用系統(tǒng)和增強應用系統(tǒng)等。1.最小應用系統(tǒng)

最小應用系統(tǒng)是指能維持單片機運行的最簡配置系統(tǒng)。這種系統(tǒng)結構簡單、成本低廉,常構成一些簡單的控制系統(tǒng),如開關狀態(tài)的輸入/輸出控制、時序控制等。這種應用系統(tǒng)的硬件電路構成很簡單,對于片內有程序存儲器的單片機,只要配上晶振、復位電路和電源就可以構成最小應用系統(tǒng)。而對于片內無程序存儲器的單片機,其最小應用系統(tǒng)除了配置晶振、復位電路和電源外,還需擴展程序存儲器。圖7-1所示是8031的最小系統(tǒng)。最小應用系統(tǒng)的功能完全取決于單片機芯片技術水平。7.1.1單片機應用系統(tǒng)的分類2單片機應用系統(tǒng)的設計規(guī)范課件3AT89C51的最小系統(tǒng)AT89C51的最小系統(tǒng)4ADuC812是一個完全集成的12位數據采集系統(tǒng),在一個芯片內結合了高性能的自校準多通道12位ADC,雙12位DAC和可編程8位微控制器(與8051兼容的指令集)。片內的8K字節(jié)閃速/電擦除存儲器、640字節(jié)片內閃速/電擦除數據存儲器和256字節(jié)的片內數據靜態(tài)存儲器,均由可編程8051兼容內核控制。另外微控制器具有包括看門狗定時器、電源監(jiān)視器和ADCDMA功能,為多處理器接口和I/O擴展提供了32條可編程的I/O線、I2C兼容的SPI和標準UART串行口I/O等。ADuC812單片智能轉換器(MicroConverter?)ADuC812是一個完全集成的12位數據采集系統(tǒng),在一個芯片5ADuC812單片智能轉換器(MicroConverter?)ADuC812單片智能轉換器(MicroConverter62.典型應用系統(tǒng)

典型應用系統(tǒng)是指單片機要完成一般工業(yè)測、控功能所必須具備的硬件結構系統(tǒng)。它包括系統(tǒng)擴展與系統(tǒng)配置兩部分內容。

系統(tǒng)擴展是指在單片機內部程序存儲器(ROM/EPROM)、數據存儲器(RAM)及輸入/輸出(I/O)口等部分不能滿足系統(tǒng)要求時,需在片外擴展的部分。擴展多少,視系統(tǒng)要求而定。

系統(tǒng)配置是指單片機為滿足應用要求所應配置的基本外部設備,如鍵盤、顯示器等。2.典型應用系統(tǒng)7單片機應用系統(tǒng)的設計規(guī)范課件83.增強應用系統(tǒng)

增強應用系統(tǒng)是指包含為了加強典型系統(tǒng)的人機對話、與其他設備通訊和系統(tǒng)測控功能而增設外設與接口的系統(tǒng),如圖7-3所示。3.增強應用系統(tǒng)97.1.2單片機應用系統(tǒng)的構成方式單片機應用系統(tǒng)有三種結構方式。1.專用系統(tǒng)

這種系統(tǒng)的擴展與配置完全是按照應用系統(tǒng)的功能要求設計的。系統(tǒng)硬件只需滿足應用要求,系統(tǒng)中只配備應用軟件(固化在ROM或EPROM中),故系統(tǒng)有最佳配置,系統(tǒng)的軟應件資源能得到最充分的利用。但這種系統(tǒng)無自開發(fā)能力,要有開發(fā)工具的支持。采用這種結構方式,要求有較強的軟硬件開發(fā)基礎。

專用系統(tǒng)主要用在大批量生產的儀器、設備和家用電器等方面作測控用。一般不需要很多按鍵,甚至可以不要。7.1.2單片機應用系統(tǒng)的構成方式單片機應用系統(tǒng)有三種102.模塊化系統(tǒng)

由于單片機應用系統(tǒng)的擴展與配置具有典型性,可把這些典型配置做成用戶系列板(比如主機板、A/D板、D/A板、A/D/A板、I/O板、打印機接口板、通信接口板等),供用戶選擇使用。用戶可根據應用系統(tǒng)的要求,選擇適當的功能模塊組合成自己的測控系統(tǒng)。模塊化結構是大、中型應用系統(tǒng)的發(fā)展方向,它可以大大減少用戶在硬件開發(fā)上投入的力量,且可使硬件開發(fā)周期縮到最短。但目前我國單片機應用系統(tǒng)模塊化產品水平尚不高,軟硬件配套工作還不完善,有待進一步發(fā)展。2.模塊化系統(tǒng)113.單片單板機系統(tǒng)

受通用CPU單板機(如TP801等)的影響,同時也考慮多種應用目的,國內有用單片機來構成單片單板機。這種系統(tǒng)的硬件按典型應用系統(tǒng)配置,并配有監(jiān)控程序,具有自開發(fā)能力。但是,單板機的固定結構形式常使應用系統(tǒng)不能獲得最佳配置(即軟硬件資源不能得到充分利用),產品批量大時,軟、硬件資源浪費較大。但這種系統(tǒng)可以減少研制時的硬件工作量和部分軟件工作量,并且具有二次開發(fā)能力,故可加速應用系統(tǒng)的研制速度,縮短開發(fā)周期,通??捎糜诮虒W系統(tǒng)。3.單片單板機系統(tǒng)127.1.3單片機應用系統(tǒng)設計的基本要求1.對設計者的要求(1)一定的硬件基礎知識。設計者不僅要掌握各種單片機、存儲器(如EPROM、E2PROM、RAM)和I/O接口(如8255、8155、8279及其它功能器件),還要掌握鍵盤、開關、檢測各種輸入量的傳感器、控制用的執(zhí)行裝置以及與單片機和各種儀器進行通信的接口等。(2)一定的軟件設計能力。設計者能根據系統(tǒng)的要求,設計出所需要的程序。比如數據采樣程序、A/D或D/A轉換程序、數碼轉換程序、數字濾波程序、標度變換程序、鍵盤處理程序、顯示及打印程序以及各種控制算法和非線性補償程序等等。7.1.3單片機應用系統(tǒng)設計的基本要求1.對設計者的要13(3)有綜合運用和分析的能力。

設計者要能夠將一個單片機應用系統(tǒng)的復雜設計任務劃分成許多便于實現的組成部分,尤其是對軟件和硬件折衷問題能夠恰當地運用。(4)設計者還要掌握生產過程的工藝性能及被測參數的測量方法以及被控對象的動、靜態(tài)特性等。(3)有綜合運用和分析的能力。142.對單片機應用系統(tǒng)的要求1.可靠性要高

這是對應用系統(tǒng)最重要的一個基本要求。提高應用系統(tǒng)可靠性的常用幾種方法:(1)采用雙機冗余系統(tǒng);(2)采用集散式控制系統(tǒng);(3)提高元器件的可靠性;(4)進行軟硬件濾波;(5)提高印刷電路板的質量,設計電路板時布線及接地要合理;(6)對供電電源采用抗干擾措施;(7)輸入輸出通道采取抗干擾措施。

2.對單片機應用系統(tǒng)的要求1.可靠性要高152.自診斷功能要強

在進行系統(tǒng)整體設計時,一定要考慮系統(tǒng)的故障自動檢測和處理的功能。當系統(tǒng)正常運行時,可定時對各模塊進行自診斷,并對外界出現的異常情況作出快速應變處理。對于出現無法解決的情況,應能及時切換后備裝置投入工作,或及時報警,以提醒人工干預。對于集散控制系統(tǒng),主機除了對各子系統(tǒng)的例行監(jiān)督管理外,還要診斷各子系統(tǒng)是否在正常運轉,當發(fā)現某個系統(tǒng)有故障時,應立即進行處理。2.自診斷功能要強163.操作和維修要方便在系統(tǒng)的硬件和軟件設計時,應考慮操作和維修方便,盡量降低對操作人員的專業(yè)知識的要求,以便于系統(tǒng)的推廣。系統(tǒng)的操作控制開關不能太多、太復雜,操作順序應簡單明了,最好具有一定的容錯性,輸入輸出應用十進制表示,功能符號簡明直觀。結構應規(guī)范化、模塊化,并配有現場故障診斷程序。3.操作和維修要方便174.性能/價格比高一個單片機應用系統(tǒng)能否被廣泛地采用,關鍵在于是否有很高的性能/價格比。硬件軟化是提高系統(tǒng)性能/價格比的實用方法。在系統(tǒng)總體設計時,應盡可能減少硬件成本,能用軟件實現的功能盡量用軟件實現。在不增加成本的基礎上,提高軟件和硬件結構的通用性和可擴充性是十分重要的。

上述四點是設計單片機應用系統(tǒng)時應考慮的基本要求。對不同的應用系統(tǒng)還有許多特定的要求,如精度、速度、體積、重量及監(jiān)視手段等,這些均須根據具體系統(tǒng)的要求而定。4.性能/價格比高187.1.4單片機應用系統(tǒng)硬件設計概述

1.應用系統(tǒng)硬件設計內容一個單片機應用系統(tǒng)的硬件設計包括兩大部分內容:

(1)系統(tǒng)擴展。通過系統(tǒng)擴展,構成一個完善的計算機系統(tǒng),它是單片機應用系統(tǒng)中的核心部分。系統(tǒng)的擴展方法、內容、規(guī)模與所選用的單片機系列以及供應狀態(tài)有關。擴展部分設計包括存儲器擴展和接口擴展。存儲器的擴展指EPROM、EEPROM和RAM的擴展,接口擴展是指8255、8155、8279以及其它功能器件的擴展。

(2)各功能模塊的設計。如信號測量功能模塊、信號控制功能模塊、人機對話功能模塊、通訊功能模塊等,根據系統(tǒng)功能要求配置相應的A/D、D/A、鍵盤、顯示器、打印機等外圍設備。7.1.4單片機應用系統(tǒng)硬件設計概述1.應用系統(tǒng)硬件設192.單片機應用系統(tǒng)硬件設計應遵循的基本原則為使硬件設計具有先進性、合理性,應注意以下一些原則:

(1)盡可能選擇典型電路;尤其是要優(yōu)先選用符合單片機常規(guī)用法的標準化、模塊化的典型電路。這樣可提高設計的成功率和結構的靈活性。(2)系統(tǒng)的擴展及各功能模塊的設計應充分滿足應用系統(tǒng)的功能要求,并留有適當的余地,以便進行二次開發(fā)。2.單片機應用系統(tǒng)硬件設計應遵循的基本原則為使硬件設計具有20(3)硬件設計要結合應用軟件方案一并考慮;

硬件電路結構與軟件方案會產生相互影響,綜合考慮的原則是;能用軟件實現的功能盡可能由軟件來實現,以便簡化硬件電路,但必須注意系統(tǒng)對速度與實時性的要求。(4)應用系統(tǒng)中相關的器件要盡可能做到性能匹配;

例如選用晶振頻率較高時,存儲器的存取時間有限,應該選擇允許存取速度較高的芯片;選擇CMOS芯片單片機構成低功耗系統(tǒng)時,系統(tǒng)中的所有芯片都應該選擇低功耗的產品。

(3)硬件設計要結合應用軟件方案一并考慮;21(5)在電路設計時,要充分考慮應用系統(tǒng)各部分的驅動能力。驅動能力不足時,系統(tǒng)工作不可靠甚至無法工作,而這種不可靠很難通過一般的測試手段來確定。因此,要重視這一問題。(6)可靠性與系統(tǒng)的抗干擾設計應貫穿在應用系統(tǒng)設計的全過程;它包括芯片、器件的選擇,去噪濾波、印刷電路板布線、通道隔離等。(7)設計時要盡可能掌握最新器件與最新技術,并把它們用于設計中。因為電子技術發(fā)展很快,各種新器件層出不窮,各種實用的新技術日新月異,只有時刻跟蹤其發(fā)展動態(tài),才能使設計出的系統(tǒng)具有較先進的綜合性能。(5)在電路設計時,要充分考慮應用系統(tǒng)各部分的驅動能力。227.1.5應用系統(tǒng)的軟件設計1.應用系統(tǒng)軟件的功能

系統(tǒng)中的應用軟件是根據系統(tǒng)功能要求設計的,軟件設計得如何,將決定整個系統(tǒng)的效率和系統(tǒng)性能的優(yōu)劣。一般地講,軟件的功能可分為兩大類:(1)執(zhí)行軟件,它能完成各種實質性的功能。如測量、計算、顯示、打印、輸出控制等。(2)監(jiān)控軟件,它是專門用來協調各執(zhí)行模塊和操作者的關系,起組織調度的作用。7.1.5應用系統(tǒng)的軟件設計1.應用系統(tǒng)軟件的功能232.應用系統(tǒng)軟件設計原則

各種應用系統(tǒng)的功能相差很大,程序編制者風格各異,因此應用軟件的設計因系統(tǒng)而異,因人而不同。但優(yōu)秀的系統(tǒng)軟件還是有其共同的特點和規(guī)律的。在進行程序設計時應注意以下原則:(1)根據軟件功能要求,將軟件分解為幾個相對獨立的任務,并根據這些任務的聯系和時間關系,設計一個合理的軟件結構。(2)培養(yǎng)結構化程序設計風格,各功能程序實行模塊化、子程序化。這樣較便于調試、鏈接,也便于移植、修改。2.應用系統(tǒng)軟件設計原則各種應用系統(tǒng)的功能相差很大,程24(3)建立與選擇正確的數學模型與算法。根據功能要求,描述出各個輸入變量和輸出變量之間的數學關系,這就是建立數學模型。在單片機應用系統(tǒng)中,數學模型的正確程度,是系統(tǒng)性能好壞的決定因素。數學模型是隨系統(tǒng)功能的不同而異的。例如,在測量系統(tǒng)中,從模擬輸入通道得到的溫度、流量、壓力等現場信息與該信號對應的實際值往往存在非線性關系,則需要進行線性處理。為了削弱或消除干擾信號的影響,提高系統(tǒng)精度,常采用算術平均法、中值法等數字濾波方法。(4)應繪制出程序流程圖。這不僅是程序設計的一個重要組成部分,而且是決定成敗的關鍵部分,設計者千萬不可輕視這一步。(3)建立與選擇正確的數學模型與算法。25(5)要合理分配系統(tǒng)資源,

包括ROM、RAM、定時器/計數器、中斷源等,尤其要注意片內RAM的分配。(5)要合理分配系統(tǒng)資源,267.251系列單片機高級語言C51程序設計基礎7.2.1C語言的特點(1)語言簡潔,使用方便靈活

C語言的規(guī)模較小,關鍵字只有32個,9種控制語句。書寫形式比較自由,表示方法簡潔,使用一些簡單的方法就可以構造出相當復雜的語句類型和程序結構。(2)可移植性好

在不同的機器上80%的代碼是相同的。(3)表達能力強、方式靈活。

具有豐富的數據結構類型和運算符。利用C語言提供的運算符可以組成各種表達式,還可以采用多種方法來獲得表達式的值,從而使用戶在程序設計時具有較大的靈活性。7.251系列單片機高級語言C51程序設計基礎7.2.127(4)可以進行結構化程序設計。

C語言是一種結構化程序設計語言,即程序的邏輯結構可以順序、選擇、循環(huán)三種基本結構組成。便于采用自頂向下的、逐步細化的結構化程序設計技術。用C語言編制的程序具有容易理解、便于維護的優(yōu)點。(5)可以進行模塊化程序設計。

C語言是以函數作為程序設計的基本單元的,編譯器提供函數庫供編程者調用,用戶也可以自己編寫特殊需要的函數,每一個函數即相當于一個程序模塊,因此C語言可以很容易地進行模塊化設計。便于多人同時進行集體性開發(fā)。(4)可以進行結構化程序設計。28(6)可以直接操作計算機硬件。

C語言具有直接訪問計算機物理地址的能力,C51編譯器可以直接對51單片機的內部特殊功能寄存器和I/O口進行操作,可以直接訪問片內片外存儲器,還可以進行位操作。(7)生成的目標代碼質量高。

匯編語言程序目標代碼的效率是最高的,對于同一個問題,C語言僅比匯編的低10~20%左右。(6)可以直接操作計算機硬件。29與匯編語言比,采用C51編程的優(yōu)點與匯編語言比,采用C51編程的優(yōu)點30單片機應用系統(tǒng)的設計規(guī)范課件31常用的C51開發(fā)環(huán)境KeilC51常用的C51開發(fā)環(huán)境KeilC5132單片機應用系統(tǒng)的設計規(guī)范課件337.2.2C51對C語言的擴展1.標識符和關鍵字

C語言的標識符是用來表示源程序中某個對象名字的,這些對象可以是函數、變量、常量、數據類型、存儲方式等等。一個標識符由字符串、數字和下劃線組成,開頭必須是字符或下劃線。C51編譯器規(guī)定的標示符長度為255個,但只有前32個有效。C語言對于大小寫敏感。

關鍵字是一類固定名稱和特定含義的特殊標識符,有時又稱保留字。如int、for、do等等。 C51編譯器除了支持ANSIC標準的關鍵字之外,還擴展了如下關鍵字,共13個。7.2.2C51對C語言的擴展1.標識符和關34單片機應用系統(tǒng)的設計規(guī)范課件352.變量的數據類型(1)char字符型用于存放單字節(jié)的數據,分有符號與無符號,默認為有符號,signedchar,-128~127,0~255。(2)int整數型signedint和unsignedint。默認為有符號,長度為雙字節(jié),范圍-32768~32767,0~65535(3)long長整型signedlong和unsignedlong。默認為有符號,長度為四個字節(jié),范圍-2147483648~2147483647,0~4294967295。(4)float浮點型占用四個字節(jié),約10-38~1038。(5)*指針型 指針型數據不同于上述四種基本數據類型,它本身是一種變量,但這個變量中存儲的是量一個數據的地址。指針變量也有數據類型,它的數據類型表示該指針指向地址中數據的類型。使用指針型變量可以方便的對單片機的各部分物理地址進行直接操作。2.變量的數據類型(1)char字符型36(6)bit位標量 C51的一種擴充的數據類型。利用它可以定義一種位標量。但不能定義指針與數組。值域為0、1。(7)sfr特殊功能寄存器 C51的一種擴充的數據類型。利用它可以訪問51系列單片機內部的所有特殊功能寄存器,如定時器方式寄存器TMOD,中斷允許控制寄存器IE等,sfr型數據占用一個字節(jié)的內存單元。值域為0-255。 sfrP0=0x80;/*定義I/O口P0,其地址位80H*/sfr關鍵字后必須是一個名字,名字可以任取,但最好符合一般的習慣,等號后邊必須是常數,而且必須是特殊功能寄存器的地址。80H~FFH。

(6)bit位標量37單片機應用系統(tǒng)的設計規(guī)范課件38(8)sfr1616位特殊功能寄存器 占用兩個字節(jié)的內存單元。值域為0-65535。用于定義16位的寄存器。(9)sbit可尋址位C51的一種擴充的數據類型。利用它可以訪問51單片機內部RAM中的可尋址位或特殊功能寄存器中的可尋址位。使用方法有三種:1.sbit位變量名=位地址;將絕對地址賦予位變量,位地址必須位于80H~FFH之間。例如:sbitOV=0xD2;sbitCY=0xD7; (8)sfr1616位特殊功能寄存器39

2.sbit位變量名=特殊功能寄存器名^位的位置

當可尋址位位于特殊功能寄存器中時可以采用這種方法,“位位置”是一個0~7之間的常數。例如PSW程序狀態(tài)字寄存器

sfrPSW=0xD0; sbitOV=PSW^2;sbitCY=PSW^7;3.sbit位變量名=字節(jié)地址^位的位置以一個常數(字節(jié)地址)作為基地址,該常數必須在80H~FFH之間?!拔晃恢谩笔且粋€0~7之間的常數。例如: sbitOV=0xD0^2; sbitCY=0xD0^7;

403.變量的存儲模式

變量是一種在程序執(zhí)行過程中能不斷變化的量。它有數據類型、存儲類型、存儲器模式、和有效范圍四種屬性。C語言規(guī)定每個變量必須有一個標識符作為變量名,在使用一個變量前,必須先對變量進行定義,指出其數據類型和存儲模式。以便編譯系統(tǒng)為其分配存儲單元。在C51中對變量進行定義的格式如下:[存儲類型]數據類型[存儲器類型]變量名表;變量的存儲模式是指變量的存儲類型與存儲器類型

存儲類型指明變量的存儲區(qū)域,而變量的存儲類型和變量在程序中說明的位置決定了它的作用范圍。存儲類型含義與C語言相同。存儲類型有四種:auto型、extern型、static型、register型,缺省為auto型。 3.變量的存儲模式41C51編譯器還允許說明變量的存儲器類型。C51編譯器完全支持51系列單片機的硬件結構,可以訪問其硬件系統(tǒng)的所有部分。存儲器類型存儲器類型說明data直接訪問內部數據存儲器(128字節(jié)),訪問速度最快bdata可位尋址內部數據存儲器(16字節(jié)),允許位與字節(jié)混合訪問idata間接訪問內部數據存儲器(256字節(jié)),允許訪問全部內部地址pdata分頁訪問外部數據存儲器(256字節(jié)),用MOVX@Ri指令訪問xdata外部數據存儲器(64KB),用MOVX@DPTR指令訪問code程序存儲器(64KB),用MOVC@A+DPTR指令訪問C51編譯器還允許說明變量的存儲器類型。存儲器類型說明da42單片機應用系統(tǒng)的設計規(guī)范課件43單片機應用系統(tǒng)的設計規(guī)范課件44定義變量時如果省略了“存儲器類型”,則按編譯模式SAMLL,COMPACT,LARGE所規(guī)定的默認存儲器類型確定變量的存儲區(qū)域,(#pragma預編譯命令,可以指定函數的默認存儲器模式。)C51編譯器的三種存儲器模式(默認的存儲器類型)對變量的影響如下:1.SMALL

變量被定義在8051單片機的內部數據存儲器中,因此對這種變量的訪問速度最快。另外,所有的對象,包括堆棧,都必須嵌入內部數據存儲器,而堆棧的長度是很重要的,實際棧長取決于不同函數的嵌套深度。2.COMPACT變量被定義在分頁外部數據存儲器中,外部數據段的長度可達256字節(jié)。這時對變量的訪問是通過寄存器間接尋址(MOVX@Ri)進行的,堆棧位于8051單片機內部數據存儲器中。采用這種編譯模式時,變量的高8位地址由P2口確定。3.LARGE變量被定義在外部數據存儲器中(最大可達64K字節(jié)),使用數據指針DPTR來間接訪問變量,訪問數據速度慢,增加程序代碼的長度。定義變量時如果省略了“存儲器類型”,則按編譯模式SAMLL,45存儲器模式決定了缺省變量的存儲空間,而訪問各空間變量的匯編代碼的繁簡程度決定了代碼率的高低。例如:一個整形變量i,如放于內存18H、19H空間,則++i的操作編譯成四條語句:INC0x19MOVA,0x19JNZ0x272DINC0x180x272D:而如果放于外存空間0000H、0001H則++i的操作編譯成九條語句:MOVDPTR,0001MOVXA,@DPTRINCAMOVX@DPTR,AJNz#5MOVOPTR,#0000MOVXA,@DPTRINCAMOVX@DPTR,A存儲器模式決定了缺省變量的存儲空間,而訪問各空間變量的匯編代464.函數的參數和局部變量的存儲器模式一個函數的存儲器模式確定了函數的參數和局部變量在內存中的地址空間,規(guī)則與變量定義一致。在定義一個函數時可以明確制定該函數的存儲器模式,一般的形式如下:

函數類型函數名(形式參數表)[存儲器模式]其中的存儲器模式是選項,未說明時則按該函數編譯時的默認存儲器模式處理。4.函數的參數和局部變量的存儲器模式47例如:#pragmalarge /*默認存儲器模式為LARGE*/intfunc1(inta1,inta2)small /*指定存儲器模式為SMALL*/{ intc; …… ……}intfunc2(intb1,intb2)/*未指定模式,默認存儲器模式為LARGE*/{ intc; …… ……}#pragma預編譯命令,可以指定函數的默認存儲器模式。C51允許采用存儲器的混合模式編程,充分利用單片機中有限的存儲器空間。同時還可以加快程序運行的速度。例如:485.中斷服務函數與寄存器組定義

C51編譯器支持在C語言程序中直接編寫51單片機的中斷服務程序,C51編譯對函數定義進行了擴展,增加了一個關鍵字interrupt,interrupt是函數定義時的一個選項,加上它函數將函數定義成中斷服務函數。

函數類型 函數名(形式參數表)[interruptn][usingn]interrupt后面的n為中斷號,n的取值范圍為0~31,編譯器從8n+3處產生中斷向量。常用的中斷源與中斷向量如表所示。5.中斷服務函數與寄存器組定義49中斷源與中斷向量表中斷源與中斷向量表50C51編譯器還擴展了一個關鍵字using,專門用來選擇單片機的寄存器組,缺省時由編譯器選擇一個寄存器組作為絕對寄存器組訪問。C51編譯器還擴展了一個關鍵字using,專門用來選擇單片機51編寫8051單片機中斷函數時應遵循以下規(guī)則:(l).中斷函數不能進行參數傳遞,如果中斷函數中包含任何參數聲明都將導致編譯出錯。(2).中斷函數沒有返回值,如果企圖定義一個返回值將得到不正確的結果。因此建議在定義中斷函數時將其定義為void類型,以明確說明沒有返回值。(3).在任何情況下都不能直接調用中斷函數,否則會產生編譯錯誤。因為中斷函數的返回是由8051單片機指令RETI完成的,RETI指令影響8051單片機的硬件中斷系統(tǒng)。如果在沒有實際中斷調求的情況。直接調用中斷函數,RETI指令的操作結果會產生一個致命的錯誤。(4).如果中斷函數中用到浮點運算,必須保存浮點寄存器的狀態(tài),當沒有其它程序執(zhí)行浮點運算時可以不保存。(5)如果在中斷函數中調用了其它函數,則被調用函數所使用的寄存器組必須與中斷函數相同。用戶必須保證按要求使用相同的寄存器組。否則會產生不正確的結果,這一點必須引起足夠的注意。如果定義中斷函數時沒有使用using選項,則由編譯器選擇一個寄存器組作絕對寄存器組訪問。編寫8051單片機中斷函數時應遵循以下規(guī)則:52#include<reg51.h>

sbitP1_0=P1^0;

voidtimer0(void)interrupt1using1{/*T0中斷服務程序入口*/

P1_0=!P1_0;

TH0=-(1000/256);

/*計數初值重裝*/

TL0=-(1000%256);

}

voidmain(void)

{

TMOD=0x01;

/*T0工作在定時器方式1*/

P1_0=0;

TH0=-(1000/256);

/*預置計數初值*/

TL0=-(1000%256);

EA=1;

/*CPU開中斷*/

ET0=1;

/*T0開中斷*/

TR0=1;

/*啟動T0*/

do{}while(1);

}#include<reg51.h>

sbitP1_0=536.常用的C51對單片機系統(tǒng)硬件的直接操作方法(1)采用特殊功能寄存器數據類型的方法操作sfrP0=0x80; //定義P0P0=0xFF; //讓P0口輸出0Xffunsignedcharp0status;p0status=P0; //把P0口的狀態(tài)值賦給p0status(2)采用可尋址位數據類型的方法操作sbitP10=P1^0; //在reg51.h中有定義P10=1; //6.常用的C51對單片機系統(tǒng)硬件的直接操作方法(1)采用54(3)采用指針的方法voidpointtest(void){charxdata*xdp,dpval;//定義一個指向XDATA存儲 器空間的指針 xdp=0x0002; //指針賦值,指向XDATA 存儲器地址0002h *xdp=0xAA; //將數據0xAA送往指定的地址 dpval=*xdp; //取0002h中的數據}(3)采用指針的方法55(4)采用預定義宏的方法使用這種方法首先將absacc.h作為頭文件包括在源程序中;absacc.h中定義了下列宏CBYTE 尋址CODE區(qū)DBYTE 尋址DATA區(qū)PBYTE 尋址分頁XDATA區(qū)(采用MOVX@R0指令)XBYTE 尋址XDATA區(qū)(采用MOVX@DPTR指令) 上述宏定義用來對單片機的存儲器空間進行絕對地址訪問,可以做字節(jié)尋址。例如下列語句在外部存儲器區(qū)域訪問地址0x1000xval=XBYTE[0x1000];//把地址0x1000中的內容賦給xval;XBYTE[0x1000]=20;//把20寫入到地址0x1000(4)采用預定義宏的方法56圖7-9AD574與單片機8031的接口電路7.A/D轉換接口及其C51編程圖7-9AD574與單片機8031的接口電路7.A/D57CECSR/C12/8A0功能0****不工作100*0啟動12位A/D轉換100*1啟動8位A/D轉換101+5v*并行12位數據輸出101接地0從20~27管腳輸出高8位數據101接地1從16~19管腳輸出低4位數據AD574的轉換方式和數據輸出格式CECSR/C12/8A0功能0****不工作100*0啟58#include"reg51.h"#include"absacc.h"#defineADCOM XBYTE[0xff7c]//使A0=0,R/C=0,CS=0#defineADLO XBYTE[0xff7f]//使R/C=1,A0=1,CS=0#defineADHI XBYTE[0xff7d]//使R/C=1,0=0,CS=0sbitr=P3^7; //RDsbitw=P3^6; //WDsbitadbusy=P1^0; //STS#include"reg51.h"59unsignedintAD574(void)//{ bitrc; unsignedintLowByte,HiByte; r=0; w=0;

ADCOM=0; do{rc=adbusy;}while(rc==1); HiByte=(unsignedint)(ADHI<<4); LowByte=(unsignedint)((ADLO>>4)&0x0f); return(HiByte+ LowByte);}unsignedintAD574(void)//60演講完畢,謝謝觀看!演講完畢,謝謝觀看!61第七章單片機應用系統(tǒng)設計概述與高級語言編程7.1單片機應用系統(tǒng)設計概述

單片機是一種集成電路芯片,采用超大規(guī)模技術把具有數據處理能力的微處理器(CPU),隨機存取數據存儲器(RAM),只讀程序存儲器(ROM),輸入輸出電路(I/O口),可能還包括定時計數器,串行通信口(SCI),等電路集成到一塊單塊芯片上,構成一個最小然而完善的計算機系統(tǒng)。這些系統(tǒng)能在軟件的控制下準確、迅速、高效地完成程序設計者事先規(guī)定的任務。

由此來看,單片機有著微處理器所不具備的功能,它可單獨地完成現代工業(yè)控制所要求的智能化控制功能,這是單片機最大的特征。

單片機控制系統(tǒng)能夠取代以前利用復雜電子線路或數字電路構成的控制系統(tǒng),可以軟件控制來實現,并能夠實現智能化,現在單片機控制范疇無所不在,例如通信產品、家用電器、智能儀器儀表、過程控制和專用控制裝置等等,單片機的應用領域越來越廣泛。第七章單片機應用系統(tǒng)設計概述與高級語言編程7.1單片627.1.1單片機應用系統(tǒng)的分類按照單片機系統(tǒng)擴展與系統(tǒng)配置的狀況,單片機應用系統(tǒng)可分為最小系統(tǒng)、典型應用系統(tǒng)和增強應用系統(tǒng)等。1.最小應用系統(tǒng)

最小應用系統(tǒng)是指能維持單片機運行的最簡配置系統(tǒng)。這種系統(tǒng)結構簡單、成本低廉,常構成一些簡單的控制系統(tǒng),如開關狀態(tài)的輸入/輸出控制、時序控制等。這種應用系統(tǒng)的硬件電路構成很簡單,對于片內有程序存儲器的單片機,只要配上晶振、復位電路和電源就可以構成最小應用系統(tǒng)。而對于片內無程序存儲器的單片機,其最小應用系統(tǒng)除了配置晶振、復位電路和電源外,還需擴展程序存儲器。圖7-1所示是8031的最小系統(tǒng)。最小應用系統(tǒng)的功能完全取決于單片機芯片技術水平。7.1.1單片機應用系統(tǒng)的分類63單片機應用系統(tǒng)的設計規(guī)范課件64AT89C51的最小系統(tǒng)AT89C51的最小系統(tǒng)65ADuC812是一個完全集成的12位數據采集系統(tǒng),在一個芯片內結合了高性能的自校準多通道12位ADC,雙12位DAC和可編程8位微控制器(與8051兼容的指令集)。片內的8K字節(jié)閃速/電擦除存儲器、640字節(jié)片內閃速/電擦除數據存儲器和256字節(jié)的片內數據靜態(tài)存儲器,均由可編程8051兼容內核控制。另外微控制器具有包括看門狗定時器、電源監(jiān)視器和ADCDMA功能,為多處理器接口和I/O擴展提供了32條可編程的I/O線、I2C兼容的SPI和標準UART串行口I/O等。ADuC812單片智能轉換器(MicroConverter?)ADuC812是一個完全集成的12位數據采集系統(tǒng),在一個芯片66ADuC812單片智能轉換器(MicroConverter?)ADuC812單片智能轉換器(MicroConverter672.典型應用系統(tǒng)

典型應用系統(tǒng)是指單片機要完成一般工業(yè)測、控功能所必須具備的硬件結構系統(tǒng)。它包括系統(tǒng)擴展與系統(tǒng)配置兩部分內容。

系統(tǒng)擴展是指在單片機內部程序存儲器(ROM/EPROM)、數據存儲器(RAM)及輸入/輸出(I/O)口等部分不能滿足系統(tǒng)要求時,需在片外擴展的部分。擴展多少,視系統(tǒng)要求而定。

系統(tǒng)配置是指單片機為滿足應用要求所應配置的基本外部設備,如鍵盤、顯示器等。2.典型應用系統(tǒng)68單片機應用系統(tǒng)的設計規(guī)范課件693.增強應用系統(tǒng)

增強應用系統(tǒng)是指包含為了加強典型系統(tǒng)的人機對話、與其他設備通訊和系統(tǒng)測控功能而增設外設與接口的系統(tǒng),如圖7-3所示。3.增強應用系統(tǒng)707.1.2單片機應用系統(tǒng)的構成方式單片機應用系統(tǒng)有三種結構方式。1.專用系統(tǒng)

這種系統(tǒng)的擴展與配置完全是按照應用系統(tǒng)的功能要求設計的。系統(tǒng)硬件只需滿足應用要求,系統(tǒng)中只配備應用軟件(固化在ROM或EPROM中),故系統(tǒng)有最佳配置,系統(tǒng)的軟應件資源能得到最充分的利用。但這種系統(tǒng)無自開發(fā)能力,要有開發(fā)工具的支持。采用這種結構方式,要求有較強的軟硬件開發(fā)基礎。

專用系統(tǒng)主要用在大批量生產的儀器、設備和家用電器等方面作測控用。一般不需要很多按鍵,甚至可以不要。7.1.2單片機應用系統(tǒng)的構成方式單片機應用系統(tǒng)有三種712.模塊化系統(tǒng)

由于單片機應用系統(tǒng)的擴展與配置具有典型性,可把這些典型配置做成用戶系列板(比如主機板、A/D板、D/A板、A/D/A板、I/O板、打印機接口板、通信接口板等),供用戶選擇使用。用戶可根據應用系統(tǒng)的要求,選擇適當的功能模塊組合成自己的測控系統(tǒng)。模塊化結構是大、中型應用系統(tǒng)的發(fā)展方向,它可以大大減少用戶在硬件開發(fā)上投入的力量,且可使硬件開發(fā)周期縮到最短。但目前我國單片機應用系統(tǒng)模塊化產品水平尚不高,軟硬件配套工作還不完善,有待進一步發(fā)展。2.模塊化系統(tǒng)723.單片單板機系統(tǒng)

受通用CPU單板機(如TP801等)的影響,同時也考慮多種應用目的,國內有用單片機來構成單片單板機。這種系統(tǒng)的硬件按典型應用系統(tǒng)配置,并配有監(jiān)控程序,具有自開發(fā)能力。但是,單板機的固定結構形式常使應用系統(tǒng)不能獲得最佳配置(即軟硬件資源不能得到充分利用),產品批量大時,軟、硬件資源浪費較大。但這種系統(tǒng)可以減少研制時的硬件工作量和部分軟件工作量,并且具有二次開發(fā)能力,故可加速應用系統(tǒng)的研制速度,縮短開發(fā)周期,通??捎糜诮虒W系統(tǒng)。3.單片單板機系統(tǒng)737.1.3單片機應用系統(tǒng)設計的基本要求1.對設計者的要求(1)一定的硬件基礎知識。設計者不僅要掌握各種單片機、存儲器(如EPROM、E2PROM、RAM)和I/O接口(如8255、8155、8279及其它功能器件),還要掌握鍵盤、開關、檢測各種輸入量的傳感器、控制用的執(zhí)行裝置以及與單片機和各種儀器進行通信的接口等。(2)一定的軟件設計能力。設計者能根據系統(tǒng)的要求,設計出所需要的程序。比如數據采樣程序、A/D或D/A轉換程序、數碼轉換程序、數字濾波程序、標度變換程序、鍵盤處理程序、顯示及打印程序以及各種控制算法和非線性補償程序等等。7.1.3單片機應用系統(tǒng)設計的基本要求1.對設計者的要74(3)有綜合運用和分析的能力。

設計者要能夠將一個單片機應用系統(tǒng)的復雜設計任務劃分成許多便于實現的組成部分,尤其是對軟件和硬件折衷問題能夠恰當地運用。(4)設計者還要掌握生產過程的工藝性能及被測參數的測量方法以及被控對象的動、靜態(tài)特性等。(3)有綜合運用和分析的能力。752.對單片機應用系統(tǒng)的要求1.可靠性要高

這是對應用系統(tǒng)最重要的一個基本要求。提高應用系統(tǒng)可靠性的常用幾種方法:(1)采用雙機冗余系統(tǒng);(2)采用集散式控制系統(tǒng);(3)提高元器件的可靠性;(4)進行軟硬件濾波;(5)提高印刷電路板的質量,設計電路板時布線及接地要合理;(6)對供電電源采用抗干擾措施;(7)輸入輸出通道采取抗干擾措施。

2.對單片機應用系統(tǒng)的要求1.可靠性要高762.自診斷功能要強

在進行系統(tǒng)整體設計時,一定要考慮系統(tǒng)的故障自動檢測和處理的功能。當系統(tǒng)正常運行時,可定時對各模塊進行自診斷,并對外界出現的異常情況作出快速應變處理。對于出現無法解決的情況,應能及時切換后備裝置投入工作,或及時報警,以提醒人工干預。對于集散控制系統(tǒng),主機除了對各子系統(tǒng)的例行監(jiān)督管理外,還要診斷各子系統(tǒng)是否在正常運轉,當發(fā)現某個系統(tǒng)有故障時,應立即進行處理。2.自診斷功能要強773.操作和維修要方便在系統(tǒng)的硬件和軟件設計時,應考慮操作和維修方便,盡量降低對操作人員的專業(yè)知識的要求,以便于系統(tǒng)的推廣。系統(tǒng)的操作控制開關不能太多、太復雜,操作順序應簡單明了,最好具有一定的容錯性,輸入輸出應用十進制表示,功能符號簡明直觀。結構應規(guī)范化、模塊化,并配有現場故障診斷程序。3.操作和維修要方便784.性能/價格比高一個單片機應用系統(tǒng)能否被廣泛地采用,關鍵在于是否有很高的性能/價格比。硬件軟化是提高系統(tǒng)性能/價格比的實用方法。在系統(tǒng)總體設計時,應盡可能減少硬件成本,能用軟件實現的功能盡量用軟件實現。在不增加成本的基礎上,提高軟件和硬件結構的通用性和可擴充性是十分重要的。

上述四點是設計單片機應用系統(tǒng)時應考慮的基本要求。對不同的應用系統(tǒng)還有許多特定的要求,如精度、速度、體積、重量及監(jiān)視手段等,這些均須根據具體系統(tǒng)的要求而定。4.性能/價格比高797.1.4單片機應用系統(tǒng)硬件設計概述

1.應用系統(tǒng)硬件設計內容一個單片機應用系統(tǒng)的硬件設計包括兩大部分內容:

(1)系統(tǒng)擴展。通過系統(tǒng)擴展,構成一個完善的計算機系統(tǒng),它是單片機應用系統(tǒng)中的核心部分。系統(tǒng)的擴展方法、內容、規(guī)模與所選用的單片機系列以及供應狀態(tài)有關。擴展部分設計包括存儲器擴展和接口擴展。存儲器的擴展指EPROM、EEPROM和RAM的擴展,接口擴展是指8255、8155、8279以及其它功能器件的擴展。

(2)各功能模塊的設計。如信號測量功能模塊、信號控制功能模塊、人機對話功能模塊、通訊功能模塊等,根據系統(tǒng)功能要求配置相應的A/D、D/A、鍵盤、顯示器、打印機等外圍設備。7.1.4單片機應用系統(tǒng)硬件設計概述1.應用系統(tǒng)硬件設802.單片機應用系統(tǒng)硬件設計應遵循的基本原則為使硬件設計具有先進性、合理性,應注意以下一些原則:

(1)盡可能選擇典型電路;尤其是要優(yōu)先選用符合單片機常規(guī)用法的標準化、模塊化的典型電路。這樣可提高設計的成功率和結構的靈活性。(2)系統(tǒng)的擴展及各功能模塊的設計應充分滿足應用系統(tǒng)的功能要求,并留有適當的余地,以便進行二次開發(fā)。2.單片機應用系統(tǒng)硬件設計應遵循的基本原則為使硬件設計具有81(3)硬件設計要結合應用軟件方案一并考慮;

硬件電路結構與軟件方案會產生相互影響,綜合考慮的原則是;能用軟件實現的功能盡可能由軟件來實現,以便簡化硬件電路,但必須注意系統(tǒng)對速度與實時性的要求。(4)應用系統(tǒng)中相關的器件要盡可能做到性能匹配;

例如選用晶振頻率較高時,存儲器的存取時間有限,應該選擇允許存取速度較高的芯片;選擇CMOS芯片單片機構成低功耗系統(tǒng)時,系統(tǒng)中的所有芯片都應該選擇低功耗的產品。

(3)硬件設計要結合應用軟件方案一并考慮;82(5)在電路設計時,要充分考慮應用系統(tǒng)各部分的驅動能力。驅動能力不足時,系統(tǒng)工作不可靠甚至無法工作,而這種不可靠很難通過一般的測試手段來確定。因此,要重視這一問題。(6)可靠性與系統(tǒng)的抗干擾設計應貫穿在應用系統(tǒng)設計的全過程;它包括芯片、器件的選擇,去噪濾波、印刷電路板布線、通道隔離等。(7)設計時要盡可能掌握最新器件與最新技術,并把它們用于設計中。因為電子技術發(fā)展很快,各種新器件層出不窮,各種實用的新技術日新月異,只有時刻跟蹤其發(fā)展動態(tài),才能使設計出的系統(tǒng)具有較先進的綜合性能。(5)在電路設計時,要充分考慮應用系統(tǒng)各部分的驅動能力。837.1.5應用系統(tǒng)的軟件設計1.應用系統(tǒng)軟件的功能

系統(tǒng)中的應用軟件是根據系統(tǒng)功能要求設計的,軟件設計得如何,將決定整個系統(tǒng)的效率和系統(tǒng)性能的優(yōu)劣。一般地講,軟件的功能可分為兩大類:(1)執(zhí)行軟件,它能完成各種實質性的功能。如測量、計算、顯示、打印、輸出控制等。(2)監(jiān)控軟件,它是專門用來協調各執(zhí)行模塊和操作者的關系,起組織調度的作用。7.1.5應用系統(tǒng)的軟件設計1.應用系統(tǒng)軟件的功能842.應用系統(tǒng)軟件設計原則

各種應用系統(tǒng)的功能相差很大,程序編制者風格各異,因此應用軟件的設計因系統(tǒng)而異,因人而不同。但優(yōu)秀的系統(tǒng)軟件還是有其共同的特點和規(guī)律的。在進行程序設計時應注意以下原則:(1)根據軟件功能要求,將軟件分解為幾個相對獨立的任務,并根據這些任務的聯系和時間關系,設計一個合理的軟件結構。(2)培養(yǎng)結構化程序設計風格,各功能程序實行模塊化、子程序化。這樣較便于調試、鏈接,也便于移植、修改。2.應用系統(tǒng)軟件設計原則各種應用系統(tǒng)的功能相差很大,程85(3)建立與選擇正確的數學模型與算法。根據功能要求,描述出各個輸入變量和輸出變量之間的數學關系,這就是建立數學模型。在單片機應用系統(tǒng)中,數學模型的正確程度,是系統(tǒng)性能好壞的決定因素。數學模型是隨系統(tǒng)功能的不同而異的。例如,在測量系統(tǒng)中,從模擬輸入通道得到的溫度、流量、壓力等現場信息與該信號對應的實際值往往存在非線性關系,則需要進行線性處理。為了削弱或消除干擾信號的影響,提高系統(tǒng)精度,常采用算術平均法、中值法等數字濾波方法。(4)應繪制出程序流程圖。這不僅是程序設計的一個重要組成部分,而且是決定成敗的關鍵部分,設計者千萬不可輕視這一步。(3)建立與選擇正確的數學模型與算法。86(5)要合理分配系統(tǒng)資源,

包括ROM、RAM、定時器/計數器、中斷源等,尤其要注意片內RAM的分配。(5)要合理分配系統(tǒng)資源,877.251系列單片機高級語言C51程序設計基礎7.2.1C語言的特點(1)語言簡潔,使用方便靈活

C語言的規(guī)模較小,關鍵字只有32個,9種控制語句。書寫形式比較自由,表示方法簡潔,使用一些簡單的方法就可以構造出相當復雜的語句類型和程序結構。(2)可移植性好

在不同的機器上80%的代碼是相同的。(3)表達能力強、方式靈活。

具有豐富的數據結構類型和運算符。利用C語言提供的運算符可以組成各種表達式,還可以采用多種方法來獲得表達式的值,從而使用戶在程序設計時具有較大的靈活性。7.251系列單片機高級語言C51程序設計基礎7.2.188(4)可以進行結構化程序設計。

C語言是一種結構化程序設計語言,即程序的邏輯結構可以順序、選擇、循環(huán)三種基本結構組成。便于采用自頂向下的、逐步細化的結構化程序設計技術。用C語言編制的程序具有容易理解、便于維護的優(yōu)點。(5)可以進行模塊化程序設計。

C語言是以函數作為程序設計的基本單元的,編譯器提供函數庫供編程者調用,用戶也可以自己編寫特殊需要的函數,每一個函數即相當于一個程序模塊,因此C語言可以很容易地進行模塊化設計。便于多人同時進行集體性開發(fā)。(4)可以進行結構化程序設計。89(6)可以直接操作計算機硬件。

C語言具有直接訪問計算機物理地址的能力,C51編譯器可以直接對51單片機的內部特殊功能寄存器和I/O口進行操作,可以直接訪問片內片外存儲器,還可以進行位操作。(7)生成的目標代碼質量高。

匯編語言程序目標代碼的效率是最高的,對于同一個問題,C語言僅比匯編的低10~20%左右。(6)可以直接操作計算機硬件。90與匯編語言比,采用C51編程的優(yōu)點與匯編語言比,采用C51編程的優(yōu)點91單片機應用系統(tǒng)的設計規(guī)范課件92常用的C51開發(fā)環(huán)境KeilC51常用的C51開發(fā)環(huán)境KeilC5193單片機應用系統(tǒng)的設計規(guī)范課件947.2.2C51對C語言的擴展1.標識符和關鍵字

C語言的標識符是用來表示源程序中某個對象名字的,這些對象可以是函數、變量、常量、數據類型、存儲方式等等。一個標識符由字符串、數字和下劃線組成,開頭必須是字符或下劃線。C51編譯器規(guī)定的標示符長度為255個,但只有前32個有效。C語言對于大小寫敏感。

關鍵字是一類固定名稱和特定含義的特殊標識符,有時又稱保留字。如int、for、do等等。 C51編譯器除了支持ANSIC標準的關鍵字之外,還擴展了如下關鍵字,共13個。7.2.2C51對C語言的擴展1.標識符和關95單片機應用系統(tǒng)的設計規(guī)范課件962.變量的數據類型(1)char字符型用于存放單字節(jié)的數據,分有符號與無符號,默認為有符號,signedchar,-128~127,0~255。(2)int整數型signedint和unsignedint。默認為有符號,長度為雙字節(jié),范圍-32768~32767,0~65535(3)long長整型signedlong和unsignedlong。默認為有符號,長度為四個字節(jié),范圍-2147483648~2147483647,0~4294967295。(4)float浮點型占用四個字節(jié),約10-38~1038。(5)*指針型 指針型數據不同于上述四種基本數據類型,它本身是一種變量,但這個變量中存儲的是量一個數據的地址。指針變量也有數據類型,它的數據類型表示該指針指向地址中數據的類型。使用指針型變量可以方便的對單片機的各部分物理地址進行直接操作。2.變量的數據類型(1)char字符型97(6)bit位標量 C51的一種擴充的數據類型。利用它可以定義一種位標量。但不能定義指針與數組。值域為0、1。(7)sfr特殊功能寄存器 C51的一種擴充的數據類型。利用它可以訪問51系列單片機內部的所有特殊功能寄存器,如定時器方式寄存器TMOD,中斷允許控制寄存器IE等,sfr型數據占用一個字節(jié)的內存單元。值域為0-255。 sfrP0=0x80;/*定義I/O口P0,其地址位80H*/sfr關鍵字后必須是一個名字,名字可以任取,但最好符合一般的習慣,等號后邊必須是常數,而且必須是特殊功能寄存器的地址。80H~FFH。

(6)bit位標量98單片機應用系統(tǒng)的設計規(guī)范課件99(8)sfr1616位特殊功能寄存器 占用兩個字節(jié)的內存單元。值域為0-65535。用于定義16位的寄存器。(9)sbit可尋址位C51的一種擴充的數據類型。利用它可以訪問51單片機內部RAM中的可尋址位或特殊功能寄存器中的可尋址位。使用方法有三種:1.sbit位變量名=位地址;將絕對地址賦予位變量,位地址必須位于80H~FFH之間。例如:sbitOV=0xD2;sbitCY=0xD7; (8)sfr1616位特殊功能寄存器100

2.sbit位變量名=特殊功能寄存器名^位的位置

當可尋址位位于特殊功能寄存器中時可以采用這種方法,“位位置”是一個0~7之間的常數。例如PSW程序狀態(tài)字寄存器

sfrPSW=0xD0; sbitOV=PSW^2;sbitCY=PSW^7;3.sbit位變量名=字節(jié)地址^位的位置以一個常數(字節(jié)地址)作為基地址,該常數必須在80H~FFH之間?!拔晃恢谩笔且粋€0~7之間的常數。例如: sbitOV=0xD0^2; sbitCY=0xD0^7;

1013.變量的存儲模式

變量是一種在程序執(zhí)行過程中能不斷變化的量。它有數據類型、存儲類型、存儲器模式、和有效范圍四種屬性。C語言規(guī)定每個變量必須有一個標識符作為變量名,在使用一個變量前,必須先對變量進行定義,指出其數據類型和存儲模式。以便編譯系統(tǒng)為其分配存儲單元。在C51中對變量進行定義的格式如下:[存儲類型]數據類型[存儲器類型]變量名表;變量的存儲模式是指變量的存儲類型與存儲器類型

存儲類型指明變量的存儲區(qū)域,而變量的存儲類型和變量在程序中說明的位置決定了它的作用范圍。存儲類型含義與C語言相同。存儲類型有四種:auto型、extern型、static型、register型,缺省為auto型。 3.變量的存儲模式102C51編譯器還允許說明變量的存儲器類型。C51編譯器完全支持51系列單片機的硬件結構,可以訪問其硬件系統(tǒng)的所有部分。存儲器類型存儲器類型說明data直接訪問內部數據存儲器(128字節(jié)),訪問速度最快bdata可位尋址內部數據存儲器(16字節(jié)),允許位與字節(jié)混合訪問idata間接訪問內部數據存儲器(256字節(jié)),允許訪問全部內部地址pdata分頁訪問外部數據存儲器(256字節(jié)),用MOVX@Ri指令訪問xdata外部數據存儲器(64KB),用MOVX@DPTR指令訪問code程序存儲器(64KB),用MOVC@A+DPTR指令訪問C51編譯器還允許說明變量的存儲器類型。存儲器類型說明da103單片機應用系統(tǒng)的設計規(guī)范課件104單片機應用系統(tǒng)的設計規(guī)范課件105定義變量時如果省略了“存儲器類型”,則按編譯模式SAMLL,COMPACT,LARGE所規(guī)定的默認存儲器類型確定變量的存儲區(qū)域,(#pragma預編譯命令,可以指定函數的默認存儲器模式。)C51編譯器的三種存儲器模式(默認的存儲器類型)對變量的影響如下:1.SMALL

變量被定義在8051單片機的內部數據存儲器中,因此對這種變量的訪問速度最快。另外,所有的對象,包括堆棧,都必須嵌入內部數據存儲器,而堆棧的長度是很重要的,實際棧長取決于不同函數的嵌套深度。2.COMPACT變量被定義在分頁外部數據存儲器中,外部數據段的長度可達256字節(jié)。這時對變量的訪問是通過寄存器間接尋址(MOVX@Ri)進行的,堆棧位于8051單片機內部數據存儲器中。采用這種編譯模式時,變量的高8位地址由P2口確定。3.LARGE變量被定義在外部數據存儲器中(最大可達64K字節(jié)),使用數據指針DPTR來間接訪問變量,訪問數據速度慢,增加程序代碼的長度。定義變量時如果省略了“存儲器類型”,則按編譯模式SAMLL,106存儲器模式決定了缺省變量的存儲空間,而訪問各空間變量的匯編代碼的繁簡程度決定了代碼率的高低。例如:一個整形變量i,如放于內存18H、19H空間,則++i的操作編譯成四條語句:INC0x19MOVA,0x19JNZ0x272DINC0x180x272D:而如果放于外存空間0000H、0001H則++i的操作編譯成九條語句:MOVDPTR,0001MOVXA,@DPTRINCAMOVX@DPTR,AJNz#5MOVOPTR,#0000MOVXA,@DPTRINCAMOVX@DPTR,A存儲器模式決定了缺省變量的存儲空間,而訪問各空間變量的匯編代1074.函數的參數和局部變量的存儲器模式一個函數的存儲器模式確定了函數的參數和局部變量在內存中的地址空間,規(guī)則與變量定義一致。在定義一個函數時可以明確制定該函數的存儲器模式,一般的形式如下:

函數類型函數名(形式參數表)[存儲器模式]其中的存儲器模式是選項,未說明時則按該函數編譯時的默認存儲器模式處理。4.函數的參數和局部變量的存儲器模式108例如:#pragmalarge /*默認存儲器模式為LARGE*/intfunc1(inta1,inta2)small /*指定存儲器模式為SMALL*/{ intc; …… ……}intfunc2(intb1,intb2)/*未指定模式,默認存儲器模式為LARGE*/{ intc; …… ……}#pragma預編譯命令,可以指定函數的默認存儲器模式。C51允許采用存儲器的混合模式編程,充分利用單片機中有限的存儲器空間。同時還可以加快程序運行的速度。例如:1095.中斷服務函數與寄存器組定義

C51編譯器支持在C語言程序中直接編寫51單片機的中斷服務程序,C51編譯對函數定義進行了擴展,增加了一個關鍵字interrupt,interrupt是函數定義時的一個選項,加上它函數將函數定義成中斷服務函數。

函數類型 函數名(形式參數表)[interruptn][usingn]interrupt后面的n為中斷號,n的取值范圍為0~31,編譯器從8n+3處產生中斷向量。常用的中斷源與中斷向量如表所示。5.中斷服務函數與寄存器組定義110中斷源與中斷向量表中斷源與中斷向量表111C51編譯器還擴展了一個關鍵字using,專門用來選擇單片機的寄存器組,缺省時由編譯器選擇一個寄存器組作為絕對寄存器組訪問。C51編譯器還擴展了一個關鍵字using,專門用來選擇單片機112編寫8051單片機中斷函數時應遵循以下規(guī)則:(l).中斷函數不能進行參數傳遞,

溫馨提示

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

評論

0/150

提交評論