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

下載本文檔

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

文檔簡(jiǎn)介

第七章單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)概述與高級(jí)語言編程7.1單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)概述

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

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

單片機(jī)控制系統(tǒng)能夠取代以前利用復(fù)雜電子線路或數(shù)字電路構(gòu)成的控制系統(tǒng),可以軟件控制來實(shí)現(xiàn),并能夠?qū)崿F(xiàn)智能化,現(xiàn)在單片機(jī)控制范疇無所不在,例如通信產(chǎn)品、家用電器、智能儀器儀表、過程控制和專用控制裝置等等,單片機(jī)的應(yīng)用領(lǐng)域越來越廣泛。第七章單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)概述與高級(jí)語言編程7.1單片17.1.1單片機(jī)應(yīng)用系統(tǒng)的分類按照單片機(jī)系統(tǒng)擴(kuò)展與系統(tǒng)配置的狀況,單片機(jī)應(yīng)用系統(tǒng)可分為最小系統(tǒng)、典型應(yīng)用系統(tǒng)和增強(qiáng)應(yīng)用系統(tǒng)等。1.最小應(yīng)用系統(tǒng)

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

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

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

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

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

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

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

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

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

設(shè)計(jì)者要能夠?qū)⒁粋€(gè)單片機(jī)應(yīng)用系統(tǒng)的復(fù)雜設(shè)計(jì)任務(wù)劃分成許多便于實(shí)現(xiàn)的組成部分,尤其是對(duì)軟件和硬件折衷問題能夠恰當(dāng)?shù)剡\(yùn)用。(4)設(shè)計(jì)者還要掌握生產(chǎn)過程的工藝性能及被測(cè)參數(shù)的測(cè)量方法以及被控對(duì)象的動(dòng)、靜態(tài)特性等。(3)有綜合運(yùn)用和分析的能力。142.對(duì)單片機(jī)應(yīng)用系統(tǒng)的要求1.可靠性要高

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

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

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

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

1.應(yīng)用系統(tǒng)硬件設(shè)計(jì)內(nèi)容一個(gè)單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)包括兩大部分內(nèi)容:

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

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

(1)盡可能選擇典型電路;尤其是要優(yōu)先選用符合單片機(jī)常規(guī)用法的標(biāo)準(zhǔn)化、模塊化的典型電路。這樣可提高設(shè)計(jì)的成功率和結(jié)構(gòu)的靈活性。(2)系統(tǒng)的擴(kuò)展及各功能模塊的設(shè)計(jì)應(yīng)充分滿足應(yīng)用系統(tǒng)的功能要求,并留有適當(dāng)?shù)挠嗟兀员氵M(jìn)行二次開發(fā)。2.單片機(jī)應(yīng)用系統(tǒng)硬件設(shè)計(jì)應(yīng)遵循的基本原則為使硬件設(shè)計(jì)具有20(3)硬件設(shè)計(jì)要結(jié)合應(yīng)用軟件方案一并考慮;

硬件電路結(jié)構(gòu)與軟件方案會(huì)產(chǎn)生相互影響,綜合考慮的原則是;能用軟件實(shí)現(xiàn)的功能盡可能由軟件來實(shí)現(xiàn),以便簡(jiǎn)化硬件電路,但必須注意系統(tǒng)對(duì)速度與實(shí)時(shí)性的要求。(4)應(yīng)用系統(tǒng)中相關(guān)的器件要盡可能做到性能匹配;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sfrPSW=0xD0; sbitOV=PSW^2;sbitCY=PSW^7;3.sbit位變量名=字節(jié)地址^位的位置以一個(gè)常數(shù)(字節(jié)地址)作為基地址,該常數(shù)必須在80H~FFH之間。“位位置”是一個(gè)0~7之間的常數(shù)。例如: sbitOV=0xD0^2; sbitCY=0xD0^7;

403.變量的存儲(chǔ)模式

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

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

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

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

C51編譯器支持在C語言程序中直接編寫51單片機(jī)的中斷服務(wù)程序,C51編譯對(duì)函數(shù)定義進(jìn)行了擴(kuò)展,增加了一個(gè)關(guān)鍵字interrupt,interrupt是函數(shù)定義時(shí)的一個(gè)選項(xiàng),加上它函數(shù)將函數(shù)定義成中斷服務(wù)函數(shù)。

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

sbitP1_0=P1^0;

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

P1_0=!P1_0;

TH0=-(1000/256);

/*計(jì)數(shù)初值重裝*/

TL0=-(1000%256);

}

voidmain(void)

{

TMOD=0x01;

/*T0工作在定時(shí)器方式1*/

P1_0=0;

TH0=-(1000/256);

/*預(yù)置計(jì)數(shù)初值*/

TL0=-(1000%256);

EA=1;

/*CPU開中斷*/

ET0=1;

/*T0開中斷*/

TR0=1;

/*啟動(dòng)T0*/

do{}while(1);

}#include<reg51.h>

sbitP1_0=536.常用的C51對(duì)單片機(jī)系統(tǒng)硬件的直接操作方法(1)采用特殊功能寄存器數(shù)據(jù)類型的方法操作sfrP0=0x80; //定義P0P0=0xFF; //讓P0口輸出0Xffunsignedcharp0status;p0status=P0; //把P0口的狀態(tài)值賦給p0status(2)采用可尋址位數(shù)據(jù)類型的方法操作sbitP10=P1^0; //在reg51.h中有定義P10=1; //6.常用的C51對(duì)單片機(jī)系統(tǒng)硬件的直接操作方法(1)采用54(3)采用指針的方法voidpointtest(void){charxdata*xdp,dpval;//定義一個(gè)指向XDATA存儲(chǔ) 器空間的指針 xdp=0x0002; //指針賦值,指向XDATA 存儲(chǔ)器地址0002h *xdp=0xAA; //將數(shù)據(jù)0xAA送往指定的地址 dpval=*xdp; //取0002h中的數(shù)據(jù)}(3)采用指針的方法55(4)采用預(yù)定義宏的方法使用這種方法首先將absacc.h作為頭文件包括在源程序中;absacc.h中定義了下列宏CBYTE 尋址CODE區(qū)DBYTE 尋址DATA區(qū)PBYTE 尋址分頁XDATA區(qū)(采用MOVX@R0指令)XBYTE 尋址XDATA區(qū)(采用MOVX@DPTR指令) 上述宏定義用來對(duì)單片機(jī)的存儲(chǔ)器空間進(jìn)行絕對(duì)地址訪問,可以做字節(jié)尋址。例如下列語句在外部存儲(chǔ)器區(qū)域訪問地址0x1000xval=XBYTE[0x1000];//把地址0x1000中的內(nèi)容賦給xval;XBYTE[0x1000]=20;//把20寫入到地址0x1000(4)采用預(yù)定義宏的方法56圖7-9AD574與單片機(jī)8031的接口電路7.A/D轉(zhuǎn)換接口及其C51編程圖7-9AD574與單片機(jī)8031的接口電路7.A/D57CECSR/C12/8A0功能0****不工作100*0啟動(dòng)12位A/D轉(zhuǎn)換100*1啟動(dòng)8位A/D轉(zhuǎn)換101+5v*并行12位數(shù)據(jù)輸出101接地0從20~27管腳輸出高8位數(shù)據(jù)101接地1從16~19管腳輸出低4位數(shù)據(jù)AD574的轉(zhuǎn)換方式和數(shù)據(jù)輸出格式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第七章單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)概述與高級(jí)語言編程7.1單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)概述

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

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

單片機(jī)控制系統(tǒng)能夠取代以前利用復(fù)雜電子線路或數(shù)字電路構(gòu)成的控制系統(tǒng),可以軟件控制來實(shí)現(xiàn),并能夠?qū)崿F(xiàn)智能化,現(xiàn)在單片機(jī)控制范疇無所不在,例如通信產(chǎn)品、家用電器、智能儀器儀表、過程控制和專用控制裝置等等,單片機(jī)的應(yīng)用領(lǐng)域越來越廣泛。第七章單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)概述與高級(jí)語言編程7.1單片627.1.1單片機(jī)應(yīng)用系統(tǒng)的分類按照單片機(jī)系統(tǒng)擴(kuò)展與系統(tǒng)配置的狀況,單片機(jī)應(yīng)用系統(tǒng)可分為最小系統(tǒng)、典型應(yīng)用系統(tǒng)和增強(qiáng)應(yīng)用系統(tǒng)等。1.最小應(yīng)用系統(tǒng)

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

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

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

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

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

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

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

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

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

設(shè)計(jì)者要能夠?qū)⒁粋€(gè)單片機(jī)應(yīng)用系統(tǒng)的復(fù)雜設(shè)計(jì)任務(wù)劃分成許多便于實(shí)現(xiàn)的組成部分,尤其是對(duì)軟件和硬件折衷問題能夠恰當(dāng)?shù)剡\(yùn)用。(4)設(shè)計(jì)者還要掌握生產(chǎn)過程的工藝性能及被測(cè)參數(shù)的測(cè)量方法以及被控對(duì)象的動(dòng)、靜態(tài)特性等。(3)有綜合運(yùn)用和分析的能力。752.對(duì)單片機(jī)應(yīng)用系統(tǒng)的要求1.可靠性要高

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

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

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

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

1.應(yīng)用系統(tǒng)硬件設(shè)計(jì)內(nèi)容一個(gè)單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)包括兩大部分內(nèi)容:

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

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

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

硬件電路結(jié)構(gòu)與軟件方案會(huì)產(chǎn)生相互影響,綜合考慮的原則是;能用軟件實(shí)現(xiàn)的功能盡可能由軟件來實(shí)現(xiàn),以便簡(jiǎn)化硬件電路,但必須注意系統(tǒng)對(duì)速度與實(shí)時(shí)性的要求。(4)應(yīng)用系統(tǒng)中相關(guān)的器件要盡可能做到性能匹配;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1013.變量的存儲(chǔ)模式

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

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

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

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

C51編譯器支持在C語言程序中直接編寫51單片機(jī)的中斷服務(wù)程序,C51編譯對(duì)函數(shù)定義進(jìn)行了擴(kuò)展,增加了一個(gè)關(guān)鍵字interrupt,interrupt是函數(shù)定義時(shí)的一個(gè)選項(xiàng),加上它函數(shù)將函數(shù)定義成中斷服務(wù)函數(shù)。

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論