單片機原理及C51應(yīng)用設(shè)計全套課件電子教案板_第1頁
單片機原理及C51應(yīng)用設(shè)計全套課件電子教案板_第2頁
單片機原理及C51應(yīng)用設(shè)計全套課件電子教案板_第3頁
單片機原理及C51應(yīng)用設(shè)計全套課件電子教案板_第4頁
單片機原理及C51應(yīng)用設(shè)計全套課件電子教案板_第5頁
已閱讀5頁,還剩611頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理及C51應(yīng)用設(shè)計第1章單片機基礎(chǔ)知識概述1.1單片機概述1.2單片機的特點及應(yīng)用領(lǐng)域1.3單片機產(chǎn)品的設(shè)計過程1.4單片機代表性產(chǎn)品1.5單片機學(xué)習(xí)的預(yù)備產(chǎn)品單片機的學(xué)習(xí)方法

硬件準(zhǔn)備

計算機:普通計算機一臺。安裝windos操作系統(tǒng)。 編程器:用于對單片機進行編程。(使用S51芯片可以使用下載線) 實驗板:用來進行單片機開發(fā)設(shè)計實踐,能完成的項目較多為好 仿真器:進行較復(fù)雜設(shè)計時用來調(diào)試單片機。方便實用,但價高。

軟件準(zhǔn)備

集成開發(fā)軟件:偉福軟件WAV6000,Keil等。 仿真軟件:Proetus

1、學(xué)習(xí)條件和學(xué)習(xí)環(huán)境

2、知識準(zhǔn)備

C語言(或其它基礎(chǔ)語言):打好編程基礎(chǔ)。 電子技術(shù):特別是數(shù)字電子技術(shù),是必備的電路基礎(chǔ)。 微機原理:對計算機基礎(chǔ)知識有較好的準(zhǔn)備。

3、初學(xué)者推薦的軟件硬件準(zhǔn)備

計算機一臺、開發(fā)實驗板一塊、ISP下載線一條(可自制)相關(guān)軟件:開發(fā)軟件、仿真軟件、ISP下載軟件等。 工具書:教材一本,較祥細的手冊類書一本。 其它資料:器件資料、應(yīng)用文檔、實例等,主要由網(wǎng)絡(luò)收集。

U盤:128M,用于保存資料(選購)。成績比例分布平時成績:10%實驗成績:20%卷面成績:70%1.1單片機概述

單片微型計算機簡稱單片機,又稱為單片微控制器MCU,嵌入式微控制器。具有體積小、重量輕、成本低、使用簡單、抗干擾能力強、功耗低、開發(fā)靈活等特點。

1.單片機及應(yīng)用分類

單片機是典型的嵌入式微控制器,它是將計算機系統(tǒng)集成在一個芯片上,使其體積更小,更利于集成,單片機相當(dāng)于一臺小型的計算機。單片機將中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM和各種輸入、輸出接口(多種I/0口、中斷系統(tǒng)、定時器/計數(shù)器、AD轉(zhuǎn)換器等)集成到一塊硅片上,從而構(gòu)成了一個小而完整的微型計算機系統(tǒng)。

按照應(yīng)用范圍單片機可分為通用型和專用型。通用型內(nèi)部資源配置具有普遍性,適用范圍廣;而專用型的單片機是專門針對某種特殊用途設(shè)計,穩(wěn)定性較強,價格昂貴,適合于批量生產(chǎn)。

按照內(nèi)部是否采用總線結(jié)構(gòu),可分為總線型和非總線型??偩€型通常設(shè)有地址總線、數(shù)據(jù)總線和控制總線;非總線型單片機內(nèi)部未采用總線結(jié)構(gòu),可以減小單片機的體積。單片機是嵌入式處理芯片的一種,嵌入式處理器可以有很多種,在相應(yīng)的配置需要的外圍設(shè)備,嵌入到其他系統(tǒng)中起控制作用,就構(gòu)成了嵌入式系統(tǒng)。嵌入式系統(tǒng)首先要滿足嵌入系統(tǒng)的物理環(huán)境、電氣干擾、成本等各種要求;其次要滿足所嵌入到的系統(tǒng)的最小軟、硬件的裁剪的要求等;最后要滿足控制要求,符合相應(yīng)的接口方式。

2.單片機和嵌入式系統(tǒng)嵌入式系統(tǒng)按形式上分,可以分為系統(tǒng)級(工控機)、板級(單板、模塊)、芯片級(如微控制器MCU、片上系統(tǒng)SoC)。嵌入式系統(tǒng)主要技術(shù)發(fā)展方向是滿足嵌入式應(yīng)用要求,不斷擴展所嵌入到的系統(tǒng)要求的外圍電路(如ADC、DAC、PWM、日歷時鐘等),精簡系統(tǒng)內(nèi)核、算法,降低功耗和軟硬件成本,提供友好的人際界面,形成滿足于所嵌入到系統(tǒng)要求的應(yīng)用系統(tǒng)。根據(jù)單片機一次處理二進制數(shù)據(jù)的位數(shù),可分為1位單片機、4位單片機、8位單片機、16位單片機和32位單片機。大致可分為四個階段:

(1)第一階段(1976-1978):單片機的探索階段。以Intel公司的8位單片機MCS-48為代表。(2)第二階段(1978-1982):單片機的完善階段。Intel公司推出了MCS

–51。MCS-51設(shè)置了經(jīng)典的8位單片機的總線結(jié)構(gòu),包括8位數(shù)據(jù)總線、16位地址總線、控制總線及具有很多機通信功能的串行通信接口,集成了8位CPU、8位的定時/計數(shù)器,具有較為完善和豐富的指令系統(tǒng)。

3.單片機的發(fā)展史及趨勢(3)第三階段(1982-1990):向微控制器發(fā)展的階段。MCS-

51系列單片機已經(jīng)成為國內(nèi)的主流產(chǎn)品,8位單片機得到了鞏固的發(fā)展,各大廠商競相使用51內(nèi)核,增強了外圍電路功能,強化了智能控制的特征。此階段16位單片機推出并得以應(yīng)用。(4)第四階段(1990—至今):全面發(fā)展階段。隨著單片機在各個領(lǐng)域全面廣泛的應(yīng)用,陸續(xù)出現(xiàn)了運行速度快、功耗較低、運算能力強、可靠性高的8位、16位、32位通用型單片機,以及小型廉價的專用型單片機。

未來的單片機將向著大容量高性能化、小容量低成本化、外圍電路內(nèi)裝化的方向發(fā)展。(1)高集成度、高可靠性。內(nèi)部布線短,采用總線連接,可靠性高,體積小,具有屏蔽電磁干擾的措施,抗干擾能力強的特點。(2)控制功能強。早期的單片機主要用于工業(yè)控制領(lǐng)域,它具備豐富的指令系統(tǒng),便于進行邏輯控制。(3)優(yōu)異的性價比。單片機的高性價比,是單片機推廣應(yīng)用的重要因素,也是各公司競爭的主要策略。(4)系統(tǒng)配置較典型、規(guī)范,易于擴展。(5)低電壓、低功耗。適用于便攜式的產(chǎn)品和家電產(chǎn)品,很多的單片機內(nèi)的工作電壓僅為1.8V~3.6V,而工作電流僅為數(shù)百微安。1.2單片機的特點及應(yīng)用領(lǐng)域1.單片機的特點2.單片機的應(yīng)用領(lǐng)域(1)在消費電子產(chǎn)品中的應(yīng)用消費電子產(chǎn)品主要體現(xiàn)在家用電子產(chǎn)品上,這是單片機的一大主流市場。(2)在醫(yī)療設(shè)備中的應(yīng)用單片機的體積小、功能強、應(yīng)用靈活等特點,如醫(yī)用呼吸機、分析儀、超聲診斷設(shè)備、病床呼叫系統(tǒng)等都有單片機的身影。(3)在工控領(lǐng)域中的應(yīng)用在工業(yè)自動化控制中的數(shù)據(jù)采集和智能控制等方向都采用了單片機技術(shù),比如工廠流水線的智能化管理、智能化電梯、報警系統(tǒng)等。(4)在儀器儀表中的應(yīng)用單片機具有運算能力強,處理速度快,體積小等特點,使得在儀器儀表中得到了越來越多的應(yīng)用。儀器儀表技術(shù)全面的向著數(shù)字化、小型化、智能化和多功能化的方向發(fā)展,功能越來越強大,綜合性更加突出。(5)在軍事領(lǐng)域中的應(yīng)用軍用產(chǎn)品的先進性與否體現(xiàn)了一個國家的綜合實力。無論是飛機、坦克、航母,還是導(dǎo)彈、魚雷制導(dǎo),單片機技術(shù)都在其中發(fā)揮著重要的作用。1.3單片機產(chǎn)品的設(shè)計過程單片機需要用戶根據(jù)具體的功能為單片機配置好必須的外圍電路,再將實現(xiàn)具體功能的程序代碼燒錄到單片機中,最后進行軟硬件聯(lián)調(diào)。1.3.1單片機實驗環(huán)境的搭建單片機技術(shù)是利用軟件去控制硬件,一個完整的單片機實驗環(huán)境包括硬件和軟件兩大部分。單片機具體硬件實驗環(huán)境必要的工具是計算機和實驗板,下面介紹幾種常用的實驗工具及平臺構(gòu)建的方式。1.燒錄器燒錄器是借助計算機對單片機進行擦寫的工具,燒錄器可以支持多種不同品牌、不同型號的單片機。STC單片機燒錄器2.仿真器仿真器可以在產(chǎn)品開發(fā)過程中用來代替單片機進行軟、硬件調(diào)試,對于初學(xué)者來說,仿真器是一個很好的入門工具。它可以很方便、迅速、準(zhǔn)確的找到程序中的錯誤,從而節(jié)省了單片機的開發(fā)周期。WAVE仿真器的外觀3.實驗板通常利用Protel、PowerPCB等繪圖軟件可以制作單片機實驗板,實驗板一般有兩種形式,一種是下載型實驗板;另一種是支持燒錄器或仿真器實驗板。單片機實驗板1.3.2設(shè)計過程及注意事項1.單片機系統(tǒng)的的設(shè)計過程單片機硬件電路單片機硬件電路通常除了單片機必要的系統(tǒng)電路,輸入輸出設(shè)備外,還會根據(jù)設(shè)計需要設(shè)計功能模塊。單片機軟件程序的設(shè)計單片機的軟件程序的編寫是由用戶根據(jù)具體的需要,編寫程序,從而控制單片機各部件一步一步地動作,使系統(tǒng)按照要求執(zhí)行功能。單片機的常用語言包括匯編語言和C語言。單片機應(yīng)用程序的編譯與調(diào)試支持兩種語言的單片機開發(fā)軟件有很多種,其中一款功能強大、易學(xué)易用、界面友好,利于調(diào)試的仿真軟件KeilC51非常流行,支持軟件和硬件仿真。單片機應(yīng)用程序燒寫與脫機檢測通過燒錄器或在線下載的方式,將程序編譯后生成的機器碼文件下載到單片機中。將燒寫好的單片機固定在實驗板電路中,脫離計算機,單片機系統(tǒng)獨立運行,觀察并檢測是否與預(yù)期的功能一致。2.單片機設(shè)計過程中的注意事項單片機系統(tǒng)的設(shè)計主要以模塊化為主,設(shè)計電路比較典型,大大降低了設(shè)計的錯誤率,并可以縮短設(shè)計周期。在設(shè)計電路板的布局中,要注意高頻干擾等問題,電路布局還要盡量的緊湊些,節(jié)約成本。硬件系統(tǒng)設(shè)計過程除了必須的電路外,一般通常都設(shè)計些可以用于擴展的外圍接口,系統(tǒng)板不必改動。在電路設(shè)計過程中,一定要考慮到電路各部分的驅(qū)動或鎖存。一般通??紤]電路的不同驅(qū)動能力和阻抗匹配等問題。MCS-51系列單片機是由Intel公司生產(chǎn)的單片機的總稱,是國內(nèi)市場應(yīng)用的最為廣泛的8位單片機。主要包括8031、8051、8751、8032、8052、8752等品種,其中8051是早期最為典型的單片機產(chǎn)品,目前市場上的51系列單片機都是在其基礎(chǔ)上進行改進的。MCS-51它具有非常典型的內(nèi)部結(jié)構(gòu),并且采用內(nèi)部總線控制,特殊功能寄存器的集中管理,豐富的指令系統(tǒng),這些都為后來的單片機提供一定的技術(shù)保障。1.4

單片機代表性產(chǎn)品1.51系列單片機由于MCS-51單片機應(yīng)用廣泛,INTEL公司將MCS-51內(nèi)核授權(quán)給其他很多公司,很多公司推出了51系列單片機的兼容產(chǎn)品,比如ATMEL、Dallas、STC、華邦公司等都有51單片機系列的兼容產(chǎn)品。目前51系列單片機是指所有兼容INTEL8031指令系統(tǒng)的單片機的統(tǒng)稱。1997年ATMEL公司研發(fā)出精簡指令集的高速8位單片機,簡稱AVR。相對于51系列單片機來說,AVR系列單片機片內(nèi)資源更為豐富,增加了AD轉(zhuǎn)換電路,接口也更為強大,同時具有電壓范圍寬、工作速度快、功耗低、保密性強、價格低等優(yōu)勢,在很多場合可以替代51系列單片機。AVR也可使用ISP在線下載編程方式,程序存儲器擦寫可達10000次以上,AVR單片機是高速嵌入式單片機。2.AVR系列單片機MSP430系列單片機是美國TI公司的一種16位超低功耗、精簡指令集的混合信號處理器。它具有極低的功耗、豐富的片內(nèi)外設(shè)和方便靈活的開發(fā)手段,此系列單片機針對實際應(yīng)用需求,將多個不同功能的模擬電路、數(shù)字電路模塊和微處理器集成在一個芯片上,以實現(xiàn)一片芯片高集成化。該系列單片機大多應(yīng)用于需要電池供電的便攜式儀器儀表中。MSP430系列單片機具有豐富的片上外圍設(shè)備,包括看門狗、模擬比較器、硬件乘法器、ADC、I2C總線直接數(shù)據(jù)存取、PWM等。MSP430系列單片機的這些片內(nèi)外設(shè)為系統(tǒng)的單片機解決方案提供了有利的便利條件。3.MSP430系列單片機PIC單片機系列是美國微芯公司的產(chǎn)品,是當(dāng)前市場份額增長最快的單片機之一,PIC系列單片機廣泛應(yīng)用于工業(yè)控制領(lǐng)域。PIC單片機根據(jù)不同層次的需求推出不同型號的產(chǎn)品,PIC單片機的設(shè)計面向應(yīng)用、面向產(chǎn)品,設(shè)計起點高、技術(shù)領(lǐng)先、性能優(yōu)越、品種齊全、種類繁多。PIC單片機自帶看門狗定時器,可以用來提高程序運行的可靠性。指令讀取實現(xiàn)“流水作業(yè)”,使其運行速度高,并且具有睡眠和低功耗模式等優(yōu)良特點。4.PIC系列單片機凌陽16位單片機是為了控制處理數(shù)據(jù)以及數(shù)字信號處理DSP等領(lǐng)域適時推出的產(chǎn)品,它的CPU內(nèi)核采用凌陽最新推出的μ’nSPTM16位微處理器芯片。其中SPCE061A是應(yīng)用非常普遍的凌陽16位單片機,61板是凌陽單片機SPCE061A精簡、開發(fā)、仿真實驗板的簡稱,是“凌陽大學(xué)計劃”。它的體積小,采用電池供電,方便隨身攜帶,特別適合在野外作業(yè)等領(lǐng)域中應(yīng)用。支持語音識別,語音產(chǎn)生。凌陽推出了很多工業(yè)級高性能單片機,可廣泛應(yīng)用于家電、工業(yè)控制、電機變頻調(diào)速、軟啟動、變頻電源、逆變電源、UPS電源、車載GPS定位系統(tǒng)等產(chǎn)品。5.凌陽16位單片機1.5單片機學(xué)習(xí)的預(yù)備知識1.有符號數(shù)、無符號數(shù)數(shù)值型數(shù)據(jù)主要分為兩種形式:有符號數(shù)和無符號數(shù)。計算機或單片機中的數(shù)據(jù)用二進制表示,數(shù)的符號也只能用0/1表示。有符號數(shù)的最高有效位(MBS)為數(shù)的符號位,正數(shù)用0表示,負數(shù)用1表示,其余的數(shù)位表示該數(shù)的數(shù)值。無符號數(shù)表示的數(shù)是非負數(shù),所有的二進制數(shù)碼都表示數(shù)值,沒有符號位。2.原碼、反碼和補碼

有符號數(shù)常用補碼、原碼和反碼表示。用不同方式表示有符號數(shù)時,所得到的機器數(shù)可能不一樣,但是真值應(yīng)該是相同的。原碼是符號數(shù),即最高位為符號位,其余位表示數(shù)值的大小。規(guī)定正數(shù)的反碼是其原碼,負數(shù)的反碼是對其原碼逐位取反,但符號位除外。對于補碼來說,正數(shù)的補碼與其原碼相同;負數(shù)的補碼是在其反碼加1。

3.單片機常用編碼(1)二—十進制編碼(BCD碼)盡管十進制數(shù)可以轉(zhuǎn)換成二進制數(shù),但不便于識讀。用四位二進制數(shù)表示十進制數(shù)的編碼方式,稱為二—十進制編碼,即BCD碼。其中最常用的是8421BCD碼。(2)ASCⅡ碼ASCII是基于拉丁字母的一套電腦編碼系統(tǒng),是現(xiàn)今最通用的單字節(jié)編碼系統(tǒng)。ASCII碼使用7位二進制數(shù)編碼來表示所有的大寫和小寫字母,數(shù)字0~9、標(biāo)點符號,以及在美式英語中使用的特殊控制字符,最高位用于奇偶校驗。第2章單片機硬件結(jié)構(gòu)及工作原理2.1單片機的片內(nèi)結(jié)構(gòu)2.2單片機的封裝與引腳2.3AT89S51單片機的CPU2.4AT89S51單片機的最小系統(tǒng)2.5片內(nèi)存儲器結(jié)構(gòu)一、ATAT89S51單片機內(nèi)部基本組成§2.1單片機的片內(nèi)結(jié)構(gòu)圖2.1ATAT89S51單片機內(nèi)部基本組成1、中央處理器CPU2、內(nèi)部RAM3、內(nèi)部ROM4、中斷系統(tǒng)5、定時計數(shù)器6、串行口7、并行口8、SFR8位CPU,包括運算器和控制器兩大部分,具有運算控制功能,且有面向控制的處理功能,不僅可以處理字節(jié)數(shù)據(jù),還可以處理位變量,即可實現(xiàn)按位操作。89S51單片機共256個單元,用戶使用前128個,用于存放數(shù)據(jù)(可讀寫),后128個單元被特殊功能寄存器占用,即26個SFR(specialfunctionregister),片外最多可以擴展64KB。片內(nèi)4K,用于存放程序、原始數(shù)據(jù)和表格,片外最多可以擴展到64KB。AT89S51單片機內(nèi)部使用FLASH作為ROM使用,提高了程序存儲的靈活性,并支持更多次數(shù)的擦寫。5個中斷源(其中外部中斷2個,定時計數(shù)器中斷2個,串行中斷1個),2個優(yōu)先級。2個16位可編程定時器/計數(shù)器,具有4種工作方式,對內(nèi)部時鐘定時,對外部事件計數(shù)。1個全雙工異步串行口,具有4種工作方式用來進行串行通信、多機連接。4個8位的并行I/O口。共26個,用于CPU對片內(nèi)各功能部件進行管理、控制、監(jiān)視,即,片內(nèi)各功能部件的控制、狀態(tài)寄存器,是特殊功能的RAM區(qū)。§2.1單片機的片內(nèi)結(jié)構(gòu)單片機一般采用的雙列直插的DIP40封裝形式,也存在貼片形式的PLCC44和PQFP44封裝形式,用于對尺寸要求較高的產(chǎn)品中。封裝形式如2.2所示?!?.2.1常用IC的封裝形式§2.2單片機的封裝與引腳DIP(DualIn-linePackage)

雙列直插式封裝PQFPPQFP(PlasticQuadFlatPackage)

塑料四方扁平封裝DIP封裝形式一般應(yīng)用在開發(fā)板,要求芯片能夠方便取下更換的場合,也應(yīng)用在對尺寸要求不高的消費類產(chǎn)品中,對于初學(xué)者比較適合用DIP封裝形式的芯片。PLCC44封裝形式,也是應(yīng)用于方便更換芯片的場合,這種封裝配以芯片座使用,這種封裝形式是芯片的管腳是向內(nèi)彎曲的,屬于表貼封裝,更適合波峰焊機焊接的場合,它與DIP封裝相比,體積小了很多。PQFP44封裝適合于大批量生產(chǎn)且對產(chǎn)品尺寸要求較小的消費類產(chǎn)片中。這種封裝形式不適合經(jīng)常更換芯片,它采用的是粘帖的方式焊接在電路板上,對焊接工藝要求較高。這三種封裝形式,PQFP形式的體積是最小的?!?.2單片機的封裝與引腳1、單片機引腳封裝§2.2.2AT89S51單片機的引腳及功能§2.2單片機的封裝與引腳圖2.3AT89S51單片機的引腳2、引腳功能介紹(40引腳)(1)電源引腳,Vcc(40腳)接+5V,Vss(20腳)接地,單片機工作電源。(2)時鐘引腳,XTAL1、XTAL2,提供單片機時鐘控制信號,接晶振。(3)控制引腳A、RST(9腳)復(fù)位信號輸入端,高電平有效。(持續(xù)時間大于2個機器周期)在單片機正常工作時,此引腳應(yīng)為≤0.5V的低電平。B、ALE/PROG(30腳)高電平時,輸出地址鎖存允許信號(可檢測51的好壞)低電平時,片內(nèi)EPROM寫信號脈沖,編程脈沖輸入端。C、PSEN(29腳)輸出脈沖負跳沿作為外部ROM的選通信號,可檢測單片機上電后,CPU能否正常與外部ROM讀取指令。D、EA/Vpp(31腳)EA接高電平時,PC訪問內(nèi)部ROM,PC>0FFFH,自動訪問外部ROM;接低電平時,不管是否有內(nèi)部ROM,PC直接訪問外部ROM。Vpp編程電壓,12V;8031應(yīng)用時EA=0,因為其無ROM(4)I/O口引腳P0口:雙向8位三態(tài)I/O口,口輸出位置是OD門,片內(nèi)無上拉電阻,地址總線(低8位)、數(shù)據(jù)總線復(fù)用,帯載能力強,可驅(qū)動8個LS型TTL;P1、P2、P3口:8位準(zhǔn)雙向I/O口,各口片內(nèi)有上拉電阻,帯載能力差,可驅(qū)動4個LS型TTL,作為輸入時,要向該口先寫1。P2:做地址總線高8位P3:雙功能復(fù)用§2.2單片機的封裝與引腳1、功能主要用來對操作數(shù)進行算術(shù)、邏輯運算和位操作。2、組成主要包括ALU、累加器A、位處理器C、程序狀態(tài)字寄存器PSW、BCD碼修正電路等。(1)算術(shù)邏輯運算單元ALU8位變量:與、或、異或、循環(huán)、求補、清零,加減乘除;1位變量:置位,清零,轉(zhuǎn)移,求補,與、或、非。(2)累加器A8位,Acc,向ALU輸入數(shù)據(jù),即存放操作數(shù),存放ALU運算結(jié)果,向CPU傳送數(shù)據(jù)、中轉(zhuǎn)。其進位標(biāo)志Cy,位處理器(位累加器)。(3)PSW8位,地址:D0H,位于SFR區(qū)表2.1PSW的位說明各位定義為:(從高到低)CY:進、借位標(biāo)志。有進、借位時CY=1,否則CY=0;可硬件或軟件置1或清0;AC:輔助進位、借位標(biāo)志;BCD運算時,低4位向高4位有進、借位,硬件控制;F0:用戶標(biāo)志位,由用戶自己定義;RS1、RS0:當(dāng)前工作寄存器組選擇位;OV:溢出標(biāo)志位。有溢出時OV=1,否則OV=0;P:奇偶標(biāo)志位。ACC中結(jié)果有奇數(shù)個1時P=1,否則,P=0。§2.3AT89S51單片機的CPU§2.3.1

運算器§2.3AT89S51單片機的CPU§2.3.2控制器1.功能識別指令,根據(jù)指令性質(zhì)控制單片機各功能部件,執(zhí)行指令。2.組成包括程序計數(shù)器PC、指令寄存器IR、指令譯碼器、條件轉(zhuǎn)移邏輯電路及定時與控制邏輯。程序計數(shù)器PC為不可讀不可寫的16位特殊功能寄存器,用來存放下一條要執(zhí)行的指令在程序存儲器中的地址,其位數(shù)決定了單片機對ROM可直接尋址的范圍,16位,216=64K?!?.3AT89S51單片機的CPU§2.3.3

指令執(zhí)行的基本過程單片機執(zhí)行程序的過程,實際上就是執(zhí)行我們所編制程序的過程。即逐條指令的過程。計算機每執(zhí)行一條指令都可分為三個階段進行。即取指令-----分析指令-----執(zhí)行指令。取指令的任務(wù)是:根據(jù)程序計數(shù)器PC中的值從程序存儲器讀出現(xiàn)行指令,送到指令寄存器。分析指令階段的任務(wù)是:將指令寄存器中的指令操作碼取出后進行譯碼,分析其指令性質(zhì)。如指令要求操作數(shù),則尋找操作數(shù)地址。執(zhí)行程序的過程實際上就是逐條指令地重復(fù)上述操作過程,直至遇到停機指令可循環(huán)等待指令?!?.3AT89S51單片機的CPU§2.3.3

指令執(zhí)行的基本過程一般計算機進行工作時,首先要通過外部設(shè)備把程序和數(shù)據(jù)通過輸入接口電路和數(shù)據(jù)總線送入到存儲器,然后逐條取出執(zhí)行。但單片機中的程序一般事先我們都已通過寫入器固化在片內(nèi)或片外程序存儲器中。因而一開機即可執(zhí)行指令。開機時,程序計算器PC變?yōu)?000H。然后單片機在時序電路作用下自動進入執(zhí)行程序過程。§2.3AT89S51單片機的CPU§2.3.3

指令執(zhí)行的基本過程當(dāng)單片機開始運行時,首先是進入取指階段,其次序是:1、程序計數(shù)器的內(nèi)容(這時是0000H)送到地址寄存器;2、程序計數(shù)器的內(nèi)容自動加1(變?yōu)?001H);3、地址寄存器的內(nèi)容(0000H)通過內(nèi)部地址總線送到存儲器,存儲器中地址譯碼電路使地址為0000H的單元被選中;4、CPU使讀控制線有效;5、在讀命令控制下被選中存儲器單元的內(nèi)容(此時應(yīng)為74H)送到內(nèi)部數(shù)據(jù)總線上,因為是取指階段,所以該內(nèi)容通過數(shù)據(jù)總線被送到指令寄存器。至此,取指階段完成,進入譯碼分析和執(zhí)行指令階段。§2.4AT89S51單片機的最小系統(tǒng)§2.4.1

復(fù)位電路1、復(fù)位的目的

使單片機或系統(tǒng)中其它部件處于某種確定的初始狀態(tài)。2、復(fù)位電路

圖2.4上電復(fù)位電路圖2.5按鍵復(fù)位和上電復(fù)位原理§2.4AT89S51單片機的最小系統(tǒng)3、單片機復(fù)位后的狀態(tài)復(fù)位后:

PC=0000H,所以程序從0000H地址單元開始執(zhí)行;

RAM為隨機值;

P0-P3=FFH,端口定義為輸入;

SP=07H,第一個入棧內(nèi)容將寫入08H單元;

IP、IE和PCON的有效位為0;

PSW=00H,當(dāng)前工作寄存器為0組;其余的SFR均為00H。§2.4AT89S51單片機的最小系統(tǒng)§2.4.2時鐘電路與時序一、時鐘電路時鐘電路用于產(chǎn)生51單片機工作時必需的時鐘控制信號,其內(nèi)部的振蕩電路是一個高增益反相放大器,引線XTAL1、XTAL2分別是放大器的輸入和輸出端。單片機內(nèi)部雖然有振蕩電路,因為有些功能器件無法集成到芯片里,要形成時鐘,還須外部附加電路。時鐘頻率直接影響單片機速度,時鐘電路質(zhì)量直接影響系統(tǒng)的穩(wěn)定性。時鐘電路的設(shè)計有兩種方式。

§2.4AT89S51單片機的最小系統(tǒng)§2.4.2時鐘電路與時序一、時鐘電路1、內(nèi)部時鐘方式利用芯片內(nèi)部振蕩電路。外接晶振及電容構(gòu)成并聯(lián)諧振電路,晶振可選在3MHz~33MHz之間;電容大小會影響振蕩器頻率的高低、振蕩器的穩(wěn)定性、起振的速度、溫度穩(wěn)定性等。一般電容值選在20pF~100pF之間,典型值為30pF左右(對應(yīng)12MHz晶振)。

圖2.6內(nèi)部時鐘方式原理§2.4AT89S51單片機的最小系統(tǒng)§2.4.2時鐘電路與時序一、時鐘電路2、外部時鐘方式利用外部振蕩器信號源直接接入XTAL1或XTAL2。通常XTAL1接地,XTAL2接時鐘,由于XTAL2邏輯電平不是TTL,故建議外接一個4.7K~10K的上拉電阻。

圖2.7外部時鐘方式原理§2.4AT89S51單片機的最小系統(tǒng)§2.4.2時鐘電路與時序二、時序單片機執(zhí)行指令是在CPU控制器的時序控制電路的控制下進行的,各種時序均與時鐘周期有關(guān)。1、時鐘周期是單片機基本時間單位。若時鐘晶振振蕩頻率為fosc,時鐘周期Tosc=1/fosc2、機器周期CPU完成一次基本操作所需要的時間稱為機器周期。Tcy=12/fosc

§2.4AT89S51單片機的最小系統(tǒng)§2.4.2時鐘電路與時序

單片機常把指令的執(zhí)行過程分為幾個機器周期,每個機器周期完成一個基本操作。一個機器周期包括12個時鐘周期,分為6個狀態(tài),S1~S6,每個狀態(tài)分為2拍:P1、P2。因此,一個機器周期中的12個時鐘周期表示為S1P1、S1P2、S2P1、S2P2……S6P6。3、指令周期執(zhí)行完成一條指令所需的時間稱為指令周期,以機器周期為單位,有單、雙、四機器周期指令,指令按字節(jié)分為單、雙、三字節(jié)指令。單、雙字節(jié)指令一般占用單、雙機器周期,三字節(jié)指令為雙機器周期,只有乘、除指令占用4個機器周期?!?.4AT89S51單片機的最小系統(tǒng)§2.4.2時鐘電路與時序4、指令時序計算機執(zhí)行指令時通常將一條指令分成若干個微操作,這些微操作所對應(yīng)的脈沖信號在時間上有嚴格的次序,微操作的時間次序稱為指令時序。ALE輸出地址鎖存信號,有效一次,對應(yīng)單片機的一次讀指令操作。一個機器周期,ALE有效兩次,寬度為一個狀態(tài),即兩個時鐘周期。圖2.8ATAT89S51的機器周期§2.5片內(nèi)存儲器結(jié)構(gòu)存儲器就是用來存放數(shù)據(jù)的地方,它是利用電平的高低來存放數(shù)據(jù)的。一片64K存儲器有65536個單元,51單片機有16根地址線,要對它讀寫數(shù)據(jù),就用到8根數(shù)據(jù)線,至于什么時候讀寫,就用讀寫控制端和片選控制端確定?!?.5片內(nèi)存儲器結(jié)構(gòu)按功能存儲器分為只讀存儲器ROM和隨機存儲器RAM。RAM:CPU能隨機進行數(shù)據(jù)的寫入和讀出,用來存放暫時性的I/O數(shù)據(jù)、運算中間結(jié)果或用作堆棧。ROM:斷電后,其中的信息保留不變,用來存放固定程序,如監(jiān)控程序、表格等。單片機中,ROM、RAM分成兩個獨立地址空間,稱為哈佛結(jié)構(gòu)?!?.5.1

程序存儲器用來存放固定程序和常數(shù)、表格。程序存儲器分為片內(nèi)程序存儲器和片外程序存儲器兩種,AT89S51單片機內(nèi)部程序存儲器的容量為4K字節(jié),AT89S51單片機允許片外最大擴展到64K,程序存儲器的機構(gòu)圖如圖所示。§2.5片內(nèi)存儲器結(jié)構(gòu)圖2.9程序存儲器結(jié)構(gòu)§2.5.1

程序存儲器§2.5片內(nèi)存儲器結(jié)構(gòu)圖2.10中斷入口地址在程序存儲器中有五個入口地址是固定的,即0003H、000BH、0013H、001BH、0023H,這5個入口地址即為中斷的入口地址,也就是說,無論中斷發(fā)生在任何地方,程序會自動生成一條長調(diào)用指令LCALL,指向這些入口地址。如圖所示。所以在編寫程序的時候要盡量避開這些固定的地址,以免造成程序錯亂§2.5.1

程序存儲器對程序存儲器總結(jié)如下:1、取值范圍:PC,16位,64K,0000H~FFFFH;2、片內(nèi)、片外ROM用EA引腳區(qū)分;3、8031的ROM全部外擴64K;4、片內(nèi)、片外地址連續(xù),內(nèi)外加起來最多是64K,由PC決定;5、復(fù)位時,PC=0000H;6、ROM中某些單元被固定用于中斷源的中斷服務(wù)程序入口地址。§2.5片內(nèi)存儲器結(jié)構(gòu)對程序存儲器總結(jié)如下:1、取值范圍:PC,16位,64K,0000H~FFFFH;2、片內(nèi)、片外ROM用EA引腳區(qū)分;3、8031的ROM全部外擴64K;4、片內(nèi)、片外地址連續(xù),內(nèi)外加起來最多是64K,由PC決定;5、復(fù)位時,PC=0000H;6、ROM中某些單元被固定用于中斷源的中斷服務(wù)程序入口地址。對程序存儲器總結(jié)如下:1、取值范圍:PC,16位,64K,0000H~FFFFH;2、片內(nèi)、片外ROM用EA引腳區(qū)分;3、8031的ROM全部外擴64K;4、片內(nèi)、片外地址連續(xù),內(nèi)外加起來最多是64K,由PC決定;5、復(fù)位時,PC=0000H;6、ROM中某些單元被固定用于中斷源的中斷服務(wù)程序入口地址。§2.5.2片內(nèi)數(shù)據(jù)存儲器128個字節(jié),地址00H~7FH。可分為三大部分:1、00~1FH,通用工作寄存器區(qū)。32個字節(jié),分成4個工作寄存器組,每組8個單元,工作寄存器,編號R0~R7。當(dāng)前工作寄存器組的機制便于快速現(xiàn)場保護。PSW的RS1、RS0決定當(dāng)前工作寄存器組號?!?.5片內(nèi)存儲器結(jié)構(gòu)表2.24組工作寄存器在片內(nèi)數(shù)據(jù)存儲器的位置§2.5.2片內(nèi)數(shù)據(jù)存儲器2、20H~2FH,位尋址區(qū)16個單元,128位,構(gòu)成1位處理機的存儲器空間,單元中每一位都有地址,00~7FH,16個單元既可位尋址又可字節(jié)尋址。3、30H~7FH,用戶RAM區(qū),共80個字節(jié)為通用RAM區(qū)。這些單元可以作為數(shù)據(jù)緩沖器使用。只能字節(jié)尋址。§2.5片內(nèi)存儲器結(jié)構(gòu)圖2.11片內(nèi)數(shù)據(jù)存儲器結(jié)構(gòu)§2.5.3

特殊功能寄存器SFR與RAM連續(xù)的后128個字節(jié),地址80H~FFH,26個SFR離散的分布在該區(qū)域,空的單元地址不能訪問。雙字節(jié)SFR可單字節(jié)分別使用。26個特殊功能寄存器的字節(jié)地址、位地址及復(fù)位值在表2.3中列出。§2.5片內(nèi)存儲器結(jié)構(gòu)§2.5.3

特殊功能寄存器§2.5片內(nèi)存儲器結(jié)構(gòu)表2.3SFR名稱及分布§2.5.3

特殊功能寄存器字節(jié)地址末位是0或8的SFR(共11個)具有位地址,共83個位地址。SFR功能上分為五部分:1、與運算器相關(guān)的寄存器(1)累加器ACC,8位。向ALU提供操作數(shù)及存放運算結(jié)果;(2)寄存器B,8位。主要用于乘、除法運算;(3)程序狀態(tài)字寄存器PSW§2.5片內(nèi)存儲器結(jié)構(gòu)§2.5.3

特殊功能寄存器2、指針類寄存器(1)堆棧指針SP,8位SP的內(nèi)容指示出堆棧頂部在內(nèi)部RAM中的位置??芍赶騼?nèi)部RAM00~7FH。51堆棧結(jié)構(gòu)屬于向上生成型堆棧,有入棧和出棧兩種操作。遵循“先進后出,后進先出”的原則。堆棧常設(shè)在30H-7FH這一段RAM中。堆棧操作遵循“后進先出”的原則。堆棧的功能有:保護斷點——子程序調(diào)用或是中斷調(diào)用保護主程序斷點現(xiàn)場保護——執(zhí)行子程序調(diào)用或是中斷調(diào)用保護主程序前將有關(guān)寄存器內(nèi)容保護臨時存數(shù)§2.5片內(nèi)存儲器結(jié)構(gòu)§2.5.3

特殊功能寄存器(2)數(shù)據(jù)指針DPTR,16位。用來存放16位的地址。它由4個8位的寄存器DP0H和DP0L、DP1H和DP1L組成。間接尋址或變址尋址可訪問片外的64KB范圍的RAM或ROM數(shù)據(jù)。(3)程序計數(shù)器PC。16位,內(nèi)容是將要執(zhí)行的指令的地址。3、與口相關(guān)的寄存器并行I/O口,P0、P1、P2、P3鎖存器,均為8位;所以訪問RAM單元的指令均可訪問I/O口,I/O端口與RAM統(tǒng)一編址;串行口數(shù)據(jù)緩沖器SBUF;串行口控制寄存器SCON;串行通訊波特率倍增寄存器PCON。4、與中斷相關(guān)的寄存器中斷允許控制寄存器IE;中斷優(yōu)先級控制寄存器IP?!?.5片內(nèi)存儲器結(jié)構(gòu)§2.5.3

特殊功能寄存器5、與定時器/計數(shù)器相關(guān)的寄存器定時/計數(shù)器T0的兩個8位計數(shù)初值寄存器TH0、TL0,它們可以構(gòu)成16位的計數(shù)器,TH0存放高8位,TL0存放低8位;定時/計數(shù)器T1的兩個8位計數(shù)初值寄存器TH1、TL1,它們可以構(gòu)成16位的計數(shù)器,TH1存放高8位,TL1存放低8位;定時/計數(shù)器的工作方式寄存器TMOD;定時/計數(shù)器的控制寄存器TCON。6、位地址空間共211個尋址位的位地址,包括:1、RAM中20H~2FH的16個單元,128位;2、SFR中單元地址可被0或8整除的SFR,共83個位,每一單元最低位地址等于其字節(jié)地址。§2.5片內(nèi)存儲器結(jié)構(gòu)§2.5.4

外部數(shù)據(jù)存儲器外部數(shù)據(jù)存儲器地址0000H~FFFFH,64KB.§2.5片內(nèi)存儲器結(jié)構(gòu)圖2.12片外數(shù)據(jù)存儲器結(jié)構(gòu)1、地址重疊ROM、RAM全部64K空間地址重疊。51采用不同操作指令及EA控制來區(qū)分。第3章 KEILC51編程基礎(chǔ)3.1KeilC51簡介3.2C51程序設(shè)計基礎(chǔ)3.1KeilC51簡介

針對51系列單片機的C語言編程(俗稱C51)的編譯器稱為C51編譯器。目前,51單片機中功能先進、完善且應(yīng)用范圍廣泛的C51編譯器是KeilC51。KeilC51簡稱C51,是面向單片機及其硬件控制系統(tǒng)的開發(fā)工具,利用C51編寫的程序最后要轉(zhuǎn)換成機器碼,并下載到單片機中運行。3.1.1C51與標(biāo)準(zhǔn)C的異同C51雖然繼承了標(biāo)準(zhǔn)C語言的絕大部分的特性,而且基本語法相同。特定的硬件結(jié)構(gòu)上有所擴展,如關(guān)鍵字sbit、data、idata、xdata、code等。應(yīng)用C51特別要注重對系統(tǒng)資源的理解,因為單片機的系統(tǒng)資源相對PC機來說很貧乏,特別是對內(nèi)部RAM,其中的每一字節(jié)都要充分利用。C51中增加了單片機中斷函數(shù),interrupt函數(shù)屬性標(biāo)志著該函數(shù)為中斷服務(wù)程序。程序中應(yīng)用的各種算法要精簡,不要對系統(tǒng)構(gòu)成過重的負擔(dān)。盡量少用浮點運算,可以用unsigned無符號型數(shù)據(jù)的就不要用signed有符號型數(shù)據(jù),盡量避免多字節(jié)的乘除運算,多使用移位運算等。3.1.2C51與匯編語言的異同使用C51與匯編語言相比具有如下優(yōu)點:不需要了解處理器的指令集,也不必了解存儲器結(jié)構(gòu)。寄存器分配和尋址方式由編譯器進行管理,編程時不需要考慮存儲器的尋址和數(shù)據(jù)類型等細節(jié)。指定操作的變量選擇組合提高了程序的可讀性??墒褂门c程序員思維更相近的關(guān)鍵字和函數(shù)。節(jié)省了程序開發(fā)和高度的時間。通過模塊化編程技術(shù),可移植性好。3.2C51程序設(shè)計基礎(chǔ)一般C語言程序具有如下的結(jié)構(gòu):預(yù)處理命令

#include<>函數(shù)說明

longfun1();

floatfun2();功能函數(shù)1 fun1()函數(shù)體

{}主函數(shù)

main()主函數(shù)體

{

}功能函數(shù)2fun2()函數(shù)體

{

}3.2C51程序設(shè)計基礎(chǔ)一般C語言程序具有如下的結(jié)構(gòu):預(yù)處理命令#include<>函數(shù)說明longfun1();

floatfun2();功能函數(shù)1 fun1()函數(shù)體{}功能函數(shù)2fun2()函數(shù)體 {

}主函數(shù)main()主函數(shù)體 {

}3.2.1數(shù)據(jù)類型

表3-1C51基本數(shù)據(jù)類型3.2.2運算符及表達式

表3-2C51的運算符3.2.3常量與變量1.常量常量是在程序執(zhí)行過程中其值不能改變的量。常量的數(shù)據(jù)類型有整型、浮點型、字符型利字符串型等,C51編譯器還擴充了一種位(bit)標(biāo)量。(1)整型常量十進制整數(shù)。如1234、-5678、0等。十六進制整數(shù)。以0x開頭的數(shù)是十六進制數(shù),如0xl23。(2)浮點型常量浮點型常量有十進制表示形式和指數(shù)表示形式。如0.3141。(3)字符型常量字符型常量是單引號內(nèi)的字符,如‘a(chǎn)’,‘b’等。(4)字符串型常量字符串型常量內(nèi)雙引號“”內(nèi)的字符組成,如“ABCD”。2.變量變量是一種在程序執(zhí)行過程中其位能不斷變化的量。C語言程序中的每一個變量都必須有一個標(biāo)識符作為它的變量名。在使用一個變量之前.必須先對該變量進行定義,指出它的數(shù)據(jù)類型和存儲模式,以便編譯系統(tǒng)為它分配相應(yīng)的存儲單元。在C51中對變量進行定義的格式如下:

[存儲種類]數(shù)據(jù)類型[存儲器類型]變量名表;其中,“存儲種類”和“存儲器類型”是可選項。變量的存儲種類有四種:自動(auto)、外部(extern)、靜態(tài)(static)和寄存器(register)。在定義一個變量時如果省略存儲種類選項,則變量將為自動(auto)變量。在51單片機應(yīng)用系統(tǒng)中經(jīng)常需要訪問特殊功能寄存器中的某些位,C51編譯器為此提供了一種擴充關(guān)鍵字sbit,利用它可以訪問可位尋址對象。使用方法有如下三種:(1)sbit位變量名=位地址;例如:sbitOV=0xd2;sbitCY=0xD7;(2)sbit位變量名=特殊功能寄存器名^位位置;例如:sfrPSW=0xD0;sbitCY=PSW^7;(3)sbit位變量名=字節(jié)地址^位位置;例如:sbitOV=0xD0^2;sbitCY=0xD0^7;全局變量和局部變量全局變量是指在程序開始處或各個功能函數(shù)的外面所定義的變量,在程序開始處定義的全局變量在整個程序中有效??晒┏绦蛑兴械暮瘮?shù)共同使用;而在各功能函數(shù)外面定義的全局變量只對從定義處開始往后的各個函數(shù)有效,只有從定義處往后的各個功能函數(shù)可以使用該變量,定義處前向的函數(shù)則不能使用它。局部變量是指在函數(shù)內(nèi)部或以花括號{}圍起來的功能塊內(nèi)部所定義的變量,局部變量只在定義它的函數(shù)或功能塊以內(nèi)有效,在該函數(shù)或功能塊以外則不能使用它,因此局部變量可以與全局變量同名,但在這種情況下局部變量的優(yōu)先級較高,而同名的全局變量在該功能塊內(nèi)被暫時屏蔽。3.2.4存儲類型及存儲區(qū)數(shù)據(jù)的存儲空間有4類:片內(nèi)程序存儲器空間、片外程序存儲器空間、片內(nèi)數(shù)據(jù)存儲器空間和片外數(shù)據(jù)存儲器空間。C51定義了6種存儲類型;data、bdata、idata、pdata、xdata、code,這些存儲類型與51單片機實際存儲空間有如下對應(yīng)關(guān)系:3.2.5循環(huán)控制流程語句

在實際應(yīng)用中有很多地方需要進行循環(huán)流程控制,即我們常說的循環(huán)控制,比如對于某種操作需要反復(fù)進行多次,這時可以用循環(huán)控制流程語句來實現(xiàn)。

在C51語言程序中用來構(gòu)成循環(huán)控制的語句有:if語句、switch/case(開關(guān))語句、while語句、dowhile語句、for語句、return語句等。1.選擇語句if if語句是用來判斷所給定的條件是否滿足的一種操作,它有兩種基本形式。(1)if(表達式){語句;}(2)if(條件表達式) {語句1;}else {語句2;}(3)if(表達式1) {語句1;} elseif(表達式2) {語句2;} elseif(表達式3) {語句3;} elseif(表達式m) {語句m;} else {語句n;}2.switch/case(開關(guān))語句用多個if語句可以實現(xiàn)多方向條件分支,但過多的if語句實現(xiàn)多方向分支會使條件語句嵌套過多,程序冗長、繁瑣。這時使用開關(guān)語句同樣可以達到多分支選擇的目的,卻可以使程序結(jié)構(gòu)清晰。語法如下;switch(表達式){case常量表達式1:語句1;break;case常量表達式2:語句2;break;

……case常量表達式n:語句n;break;

default:語句n+1;}3.while語句

while(條件表達式){語句;}

4.dowhile語句

do{語句;}while(條件表達式);5.for語句for([初值設(shè)定表達式];[循環(huán)條件表達式];[條件更新表達式]){語句;}6.return語句return返回語句用于終止函數(shù)的執(zhí)行,并控制程序返回到調(diào)用該函數(shù)時所處的位置。返回語句有兩種形式:return表達式;return;

如果return后面帶有表達式,則需要計算出表達式的值,并將表達式的值作為該函數(shù)的返回值;若return后面沒有表達式,則被調(diào)用函數(shù)返回主函數(shù)時,函數(shù)值不確定。一個函數(shù)內(nèi)可以沒有return語句,在這種情況下,當(dāng)程序到最后一個界限符“}”時,就自動返回主調(diào)函數(shù)。3.2.5數(shù)組數(shù)組就是同一類型變量的有序集合。數(shù)組中的每個數(shù)據(jù)都可以用唯一的下標(biāo)來確定其位置,下標(biāo)可以是一維或多維的。數(shù)據(jù)類型

數(shù)組名[常量表達式]“數(shù)據(jù)類型”是指數(shù)組中的各數(shù)據(jù)單元的類型,每個數(shù)組中的數(shù)據(jù)單元只能是同一數(shù)據(jù)類型。“數(shù)組名”是整個數(shù)組的標(biāo)識,命名方法和變量命名方法是一樣的?!俺A勘磉_式”表示數(shù)組的長度和維數(shù),它必須用“[]”括起,括號里的數(shù)不能是變量只能是常量。一維數(shù)組一維數(shù)組賦初值的方式如下:數(shù)據(jù)類型[存儲區(qū)域]數(shù)組名[常量表達式]={常量表達式};unsignedinta[5]={0x1234,0x2345,0x1ac3,0xabcd,0xf955};

2.二維數(shù)組定義二維及多維數(shù)組時,只要在數(shù)組名后面增加相應(yīng)于維數(shù)的常量表達式即可。多維數(shù)組的定義形式如下數(shù)據(jù)類型數(shù)組名[常量表達式1]……[常量表達式N];例如對數(shù)組a[5][3]:按行分段賦值可寫為:inta[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};按行連續(xù)賦值可寫為:

inta[5][3]={80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};這兩種賦初值的結(jié)果是完全相同的??梢灾粚Σ糠衷刭x初值,未賦初值的元素自動取0值。Intkey[2][3]={{0x76,0x38}{0x73,0x31,0x3E};3.字符數(shù)組charsecond[5]={‘H’,‘E’,‘L’,‘L’,O’};//字符用單引號charcond[5]={“HELLO”};//字符串用雙引號3.2.5函數(shù)

函數(shù)是C51語言程序的基本單位。函數(shù)調(diào)用類似于子程序調(diào)用、用戶可以根據(jù)實際需要編出各種不同用途的功能函數(shù)、C語言編譯器還提供了十分豐富的庫函數(shù)。對于系統(tǒng)提供的標(biāo)準(zhǔn)庫函數(shù),在使用之前需要通過預(yù)處理命令#include將對應(yīng)的標(biāo)堆函數(shù)庫包含到程序起始位置。而對于用戶自定義函數(shù),必須對它進行定義之后才能調(diào)用。C51中函數(shù)的定義方式與標(biāo)準(zhǔn)C語言的是相同的,由于C51在標(biāo)準(zhǔn)C語言的基礎(chǔ)上擴展了許多專用關(guān)鍵字,因此可以將其應(yīng)用于函數(shù)的定義中。函數(shù)語法結(jié)構(gòu)說明C51函數(shù)定義的一般格式如下:[類型標(biāo)識符]函數(shù)名([形參列表])[{small/compact/large}][reentrant][interruptm][usingn]{聲明部分語句部分}(1)類型標(biāo)識符類型標(biāo)識符說明了函數(shù)返回值的類型,用于說明函數(shù)最后的return語句送回給被調(diào)用處的返回值的類型。如果省略,則默認為int類型。如果一個函數(shù)沒有返回值,則類型標(biāo)識符定義為void。(2)函數(shù)名(3)形參列表形參表列用于列舉在主調(diào)函數(shù)與被調(diào)函數(shù)之間進行數(shù)據(jù)傳遞的形式參數(shù)。在函數(shù)定義時要說明其類型。如果函數(shù)沒有參數(shù)傳遞,在定義時,形參可以沒有,也可以用void,但括號不能省略。(4)small/compact/1arge修飾符small/compact/large用來指定函數(shù)的存儲器模式,函數(shù)的存儲器模式確定了函數(shù)的參數(shù)和局部變量在內(nèi)存中的地址空間。系統(tǒng)默認為small模式。(5)reentrant修飾符重入函數(shù)是可以在函數(shù)體內(nèi)不直接或間接調(diào)用其自身的函數(shù)。2.中斷函數(shù)(1)語法格式void函數(shù)名(void)interruptn[usingr]其中,n(0~31)代表中斷號。C51編譯器允許32個中斷,具體使用哪個中斷由單片機芯片決定。r(0~3)代表第r組寄存器。using用來選擇51單片機中的工作寄存器組,51單片機有4組工作寄存器組:0組、1組、2組和3組。3.函數(shù)的調(diào)用

調(diào)用就是指一個函數(shù)體中引用另一個已定義的函數(shù)來實現(xiàn)所需要的功能,這個時候函數(shù)體稱為主調(diào)用函數(shù),函數(shù)體中所引用的函數(shù)稱為被調(diào)用函數(shù)。一個函數(shù)體中能調(diào)用數(shù)個其它的函數(shù),這些被調(diào)用的函數(shù)同樣也能調(diào)用其它函數(shù),也能嵌套調(diào)用。在C51語言中有一個函數(shù)是不能被其它函數(shù)所調(diào)用的,它就是main主函數(shù)。函數(shù)調(diào)用的形式包括以下三種:1.函數(shù)名(實際參數(shù)表)“函數(shù)名”就是指被調(diào)用的函數(shù)。2.函數(shù)參數(shù)“函數(shù)參數(shù)”這種方式是指被調(diào)用函數(shù)的返回值當(dāng)作另一個被調(diào)用函數(shù)的實際參數(shù).例如:max(y(5));y(5)的返回值作為max函數(shù)的實際參數(shù)傳遞。

3.函數(shù)表達式函數(shù)的調(diào)用作為一個運算對象出現(xiàn)在表達式中,能稱為函數(shù)表達式。例如:temp=max(5)+min(10);3.2.6指針指針變量的定義形式:數(shù)據(jù)類型說明符[存儲器類型1]*[存儲器類型2]指針變量名;其中,數(shù)據(jù)類型說明符說明了該指針變量所指向的變量的類型。一個指向整型變量的指針變量不能指向字符型變量。存儲器類型l是可選項:帶有該選頂時,編程者規(guī)定了指針指向的存儲區(qū)域,這種指針稱為存儲器指針,它是C51語言對標(biāo)準(zhǔn)C語言的擴展;不帶該選項時,定義的指針為通用指針。存儲器類型2也是可選項:帶有該選項時,聲明了指針本身的存儲位置;不帶該選項時,指針本身則根據(jù)不同的存儲器模式放在相應(yīng)的區(qū)域。3.2.7預(yù)處理所謂預(yù)處理,是指在進行編譯的第一遍掃描之前所做的工作。常用的預(yù)處理命令有宏定義和文件包含兩種。1.宏定義在C語言中源程序中允許用一個標(biāo)志符來表示一個字符串,稱為“宏”。被定義為“宏”的標(biāo)志符稱為“宏名”。在編譯處理時,對程序中所有出現(xiàn)的“宏名”都會用宏定義中的字符串去代替。在C語言中,“宏”可分為有參數(shù)和無參數(shù)兩種。(1)無參數(shù)宏定義:#define標(biāo)志符字符串如:#defineKEYP1^2(2)有參數(shù)宏定義#define宏名(形參表)字符串如:#definey(s)s*s十3*s//宏定義:k=y(tǒng)(5);//宏調(diào)用這等于用實參5去代替形參s,經(jīng)預(yù)處理后相當(dāng)于

k=5*5+3*5;2.文件包含任何一個C51程序都要有頭文件,它由預(yù)處理命令組成。頭文件就是放在程序開頭的文件,一般都是由C51開發(fā)商和芯片廠商提供的;這些文件的后綴為“h”,用#include在程序開始處標(biāo)注出來。C51在編譯時首先會將標(biāo)注的程序應(yīng)用到編譯器里,所以在使用時要確保這些文件的存在。文件包含是C51預(yù)處理程序的一個重要功能。文件包含命令行的一般形式為:#include“文件名”文件包含命令的功能是把制定的文件插入該命令行位置取代該命令行,從而把指定的文件和當(dāng)前的源程序文件連成一個源文件。#include<reg51.h>#include<stdio.h>我們在用c語言編程時往往第一行就是頭文件,51單片機為reg51.h或reg52.h,51單片機相對來說比較簡單,頭文件里面內(nèi)容不多,像飛思卡爾、ARM系列的單片機頭文件往往內(nèi)容就非常多。

1)“文件包含”處理概念

所謂“文件包含”是指在一個文件內(nèi)將另外一個文件的內(nèi)容全部包含進來。因為被包含的文件中的一些定義和命令使用的頻率很高,幾乎每個程序中都可能要用到,為了提高編程效率,減少編程人員的重得勞動,將這些定義和命令單獨組成一個文件,如reg51.h,然后用#include<reg51.h>包含進來就可以了,這個就相當(dāng)于工業(yè)上的標(biāo)準(zhǔn)零件,拿來直接用就可以了。

2)寄存器地址及位地址聲明的原因

reg51.h里面主要是一些特殊功能寄存器的地址聲明,對可以位尋址的,還包括一些位地址的聲明,如果如sfrP1=0x80;

sfrIE=0xA8;sbitEA=0xAF等。3.2.8C51使用規(guī)范注釋段落注釋,以“/*”符號開始,以“*/”結(jié)束;需要注意的是,C51語言中的注釋不能嵌套,即在“/*”和“*/”之間不允許再次出現(xiàn)“/*”和“*/”。行注釋,以“//”開始,以“回車符”結(jié)束。2.命名在C語言中,同一個字母由于其大小寫的不同可以代表兩個不同的變量。常量的命名一律用大寫;變量的命名一般反應(yīng)該變量的功能,可以大小寫混合使用;函數(shù)的命名與變量相似,一般都以該函數(shù)的功能進行命名?!さ?章單片機開發(fā)工具軟件4.1集成開發(fā)環(huán)境KeilμVision44.2仿真開發(fā)工具Proteus4.1集成開發(fā)環(huán)境KeilμVision44.1.1KeilμVision4簡介Keil軟件是目前最流行開發(fā)MCS-51系列單片機的軟件。Keil公司是一家業(yè)界領(lǐng)先的微控制器(MCU)軟件開發(fā)工具的獨立供應(yīng)商。2009年2月該公司發(fā)布Keilμvision4,Keilμvision4引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺監(jiān)視器,并提供了視覺上的表面對窗口位置的完全控制的任何地方。Keilμvision4新的用戶界面可以更好地利用屏幕空間和更有效地組織多個窗口,提供一個整潔,高效的環(huán)境來開發(fā)應(yīng)用程序.4.1.2軟件啟動和運行點擊KeilμVision4軟件的快捷方式圖標(biāo),運行該軟件。圖4-1啟動KeilμVision4時的屏幕圖4-2進入KeilμVision4后的編輯界面4.1.3使用方法1)建立一個新工程單擊Project菜單,在彈出的下拉菜單中選中NewμVisionProject選項

2)然后選擇你要保存的路徑,輸入工程文件的名字,比如保存到C51目錄里,工程文件的名字為C51,如下圖所示,然后點擊保存。3)仿真器件選擇4)工程編輯界面5)在下圖中,單擊“File”菜單,再在下拉菜單中單擊“New”選項2.新建程序文件編輯界面單擊菜單上的“File”,在下拉菜單中選中“SaveAs”選項單擊,屏幕如下圖所示,在“文件名”欄右側(cè)的編輯框中,鍵入欲使用的文件名,同時,必須鍵入正確的擴展名。注意,如果用C語言編寫程序,則擴展名為(.c);如果用匯編語言編寫程序,則擴展名必須為(.asm)。然后,單擊“保存”按鈕。6)回到編輯界面后,單擊“Target1”前面的“+”號,然后在“SourceGroup1”上單擊右鍵,彈出如下菜單.選中Text1.c,然后單擊“Add”.C語言程序編輯界面9)調(diào)試程序:在上圖中,單擊“Debug”菜單,在下拉菜單中單擊“Go”選項,(或者使用快捷鍵F5),然后再單擊“Debug”菜單,在下拉菜單中單擊“StopRunning”選項(或者使用快捷鍵Esc);再單擊“View”菜單,再在下拉菜單中單擊“SerialWindows#1”選項,就可以看到程序運行后的結(jié)果10)單擊“Project”菜單,再在下拉菜單中單擊“Optionsfortarget‘Target1’”在下圖中,單擊“Output”中單擊“CreateHEXFile”選項,使程序編譯后產(chǎn)生HEX代碼,供下載器軟件使用。把程序下載到AT89S51單片機中。4.2仿真開發(fā)工具Proteus4.2.1Proteus簡介ProteusISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。該軟件的特點是:①實現(xiàn)了單片機仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。②支持主流單片機系統(tǒng)的仿真。③提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點等調(diào)試功能,同時可以觀察各個變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調(diào)試環(huán)境,如KeilC51μVision4等軟件。④具有強大的原理圖繪制功能。總之,該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大。4.2.2軟件的啟動和運行雙擊桌面上的ISIS7Professional圖標(biāo)或者單擊屏幕左下方的“開始”→“程序”→“Proteus7Professional”→“ISIS7Professional”,出現(xiàn)如圖4-20所示屏幕,表明進入ProteusISIS集成環(huán)境。ProteusISIS的工作界面4.2.3軟件的使用方法

電路圖的繪制1、將所需元器件加入到對象選擇器窗口。PickingComponentsintotheSchematic,單擊對象選擇器彈出“PickDevices”頁面,在“Keywords”輸入AT89C51,系統(tǒng)在對象庫中進行搜索查找,并將搜索結(jié)果顯示在“Results”中,如圖所示。在“Results”欄中的列表項中,雙擊“AT89C51”,則可將“AT89C51”添加至對象選擇器窗口。接著在“Keywords”欄中重新輸入7SEG,如圖所示。雙擊“7SEG-MPX6-CA-BLUE”,則可將“7SEG-MPX6-CA-BLUE”(6位共陽7段LED顯示器)添加至對象選擇器窗口。2、放置元器件至圖形編輯窗口PlacingComponentsontotheSchematic3、放置總線至圖形編輯窗口4、元器件之間的連線WiringUpComponentsontheSchematic5、元器件與總線的連線6、給與總線連接的導(dǎo)線貼標(biāo)簽PARTLABELS2.3.Proteus仿真調(diào)試雙擊圖形編輯窗口中的器件AT89C51單擊“EditComponent”內(nèi)

選項中的

按鈕,加載編譯完成的C51程序,通過路徑選擇找到KEIL編譯完成的HEX文件選中“C51”將通過KEIL編譯完成的“HEX”文件加載到PROTUES中。單擊仿真運行開始按鈕

,我們能清楚地觀察到每一個引腳的電頻變化,紅色代表高電頻,藍色代表低電頻。第5章片內(nèi)并行I/O接口51系列單片機有4組I/O端口:P0、P1、P2和P3口,每組端口都是8位準(zhǔn)雙向口,共占32根引腳。5.1P0口的工作原理P0口是一個三態(tài)雙向口,可作為地址/數(shù)據(jù)分時復(fù)用口,也可作為通用I/O接口。

圖5-1P0口的1位結(jié)構(gòu)圖5.1.1P0口作為地址/數(shù)據(jù)總線一是以P0口引腳輸出地址或數(shù)據(jù)信息。二是由P0口輸入數(shù)據(jù),此時輸入的數(shù)據(jù)是從引腳通過輸入緩沖器2進入內(nèi)部總線。當(dāng)P0口做地址/數(shù)據(jù)總線復(fù)用后,就不能再做通用I/O口使用了。5.1.2P0口做通用I/O口使用當(dāng)P0口做I/O端口使用時,CPU內(nèi)部發(fā)出控制電平“0”信號封鎖與門,使輸出上拉場效管T1截止,同時多路開關(guān)把輸出鎖存器Q端與輸出場效應(yīng)管T2的柵極接通。5.2P1口的工作原理P1端口是一個準(zhǔn)雙向口,結(jié)構(gòu)最簡單,用途也單一,僅作為數(shù)據(jù)輸入/輸出端口使用。圖5-2P1口的1位結(jié)構(gòu)圖5.3P2口的工作原理

P2口也是準(zhǔn)雙向口,有8條端口線,命名為P2.7~P2.0,它具有通用I/O接口或高8位地址總線輸出兩種功能,所以其輸出驅(qū)動結(jié)構(gòu)多了一個數(shù)字多路開關(guān)MUX和反相器。圖5-3P2口的1位結(jié)構(gòu)圖5.4P3口的工作原理P3口是一個多功能口,它除了可以作為I/O口外,還具有第二功能。圖5-4P3口的1位結(jié)構(gòu)圖例5-1:利用8個撥動開關(guān),把8位數(shù)據(jù)送到P2口,程序讀入,然后送到P1口顯示,如圖5-5所示?!綜程序】:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definekeyp2#defineledp1

intmain(){while(1){led=key;}return0;}第6章

單片機中斷系統(tǒng)6.1中斷技術(shù)概述6.2中斷系統(tǒng)結(jié)構(gòu)6.1中斷技術(shù)概述中斷技術(shù)主要用于實時監(jiān)測與控制,要求單片機能及時地響應(yīng)中斷請求源提出的服務(wù)請求,并做出快速響應(yīng)、及時處理。 這是由片內(nèi)的中斷系統(tǒng)來實現(xiàn)的。 中斷是指計算機在執(zhí)行某一程序的過程中,由于計算機系統(tǒng)內(nèi)、外的某種原因而必須終止源程序的執(zhí)行,轉(zhuǎn)去完成相應(yīng)的處理程序,待處理結(jié)束之后再返回繼續(xù)執(zhí)行被終止源程序的過程。實現(xiàn)這種中斷功能的硬件系統(tǒng)和軟件系統(tǒng)統(tǒng)稱為中斷系統(tǒng)。圖6.1中斷過程主程序:CPU正常情況下運行的程序稱為主程序。中斷源:把向CPU提出中斷申請的設(shè)備稱為中斷源。中斷請求:由中斷源向CPU所發(fā)出的請求中斷的信號稱中斷請求。中斷響應(yīng):CPU在滿足條件情況下接受中斷申請,終止現(xiàn)行程序執(zhí)行轉(zhuǎn)而為申請中斷的對象服務(wù)稱中斷響應(yīng)。中斷服務(wù)程序:為服務(wù)對象服務(wù)的程序稱為中斷服務(wù)程序。斷點:現(xiàn)行程序被中斷的地址稱為斷點。中斷返回:中斷服務(wù)程序結(jié)束后返回到原來程序稱中斷返回。中斷優(yōu)先級控制當(dāng)有多個中斷源同時申請中斷時,CPU優(yōu)先響應(yīng)最需緊急處理的中斷請求,處理完畢再響應(yīng)優(yōu)先級別較低的,這種預(yù)先安排的響應(yīng)次序就是中斷優(yōu)先級。一般都把最重要的事或處理時間不及時就會出現(xiàn)嚴重事故的事設(shè)置為優(yōu)先級最高的位置。中斷優(yōu)先級越高,則響應(yīng)優(yōu)先權(quán)就越高。“中斷嵌套”,如圖6.2所示。圖6.2中斷嵌套過程中斷響應(yīng)的過程:當(dāng)有中斷產(chǎn)生時,保護中斷現(xiàn)場、處理中斷事件和返回原有事件處理的過程。檢測中斷保護現(xiàn)場中斷服務(wù)清除中斷標(biāo)志位恢復(fù)現(xiàn)場中斷返回

中斷的優(yōu)點:中斷技術(shù)解決了快速CPU與慢速I/O設(shè)備的數(shù)據(jù)傳送問題,如果單片機沒有中斷系統(tǒng),單片機的大量時間可能會浪費在查詢是否有服務(wù)請求發(fā)生的定時查詢操作上。采用中斷技術(shù)完全消除了單片機在查詢方式中的等待現(xiàn)象,大大地提高了單片機的工作效率和實時性。6.2中斷系統(tǒng)結(jié)構(gòu)51單片機的中斷系統(tǒng)內(nèi)部結(jié)構(gòu)框圖如圖6.3所示。圖6.351系列單片機中斷系統(tǒng)原理及組成圖IE0TF0IE1TF11110110RITI≥

1INT0INT1T0T1RXDTXD01EX011EAPX001ET011EAPT001EX111EAPX101ET111EAPT101ES11EAPS自然優(yōu)先級中斷源中斷入口高級0自然優(yōu)先級中斷源中斷入口低級硬件查詢IPIE源允許總允許TCONSCONIT0IT1§6.2.1中斷源中斷源是指向CPU發(fā)出中斷請求的信號來源,中斷可以通過人為設(shè)定,并響應(yīng)突發(fā)性的隨機事件。(1)—外部中斷0,從P3.2引腳輸入的中斷請求。(2)T0—定時/計數(shù)器T0,定時器0溢出發(fā)出中斷請求,計數(shù)器0從外部P3.4引腳輸入計數(shù)脈沖中斷請求。(3)—外部中斷1,從P3.3引腳輸入的中斷請求。(4)T1—定時/計數(shù)器T1,定時器1溢出發(fā)出中斷請求,計數(shù)器1從外部

溫馨提示

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

評論

0/150

提交評論