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

下載本文檔

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

文檔簡(jiǎn)介

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

硬件準(zhǔn)備

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

軟件準(zhǔn)備

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

。

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

2、知識(shí)準(zhǔn)備

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

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

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

U盤(pán):128M,用于保存資料(選購(gòu))。成績(jī)比例分布平時(shí)成績(jī):10%實(shí)驗(yàn)成績(jī):20%卷面成績(jī):70%1.1單片機(jī)概述

單片微型計(jì)算機(jī)簡(jiǎn)稱(chēng)單片機(jī),又稱(chēng)為單片微控制器MCU,嵌入式微控制器。具有體積小、重量輕、成本低、使用簡(jiǎn)單、抗干擾能力強(qiáng)、功耗低、開(kāi)發(fā)靈活等特點(diǎn)。

1.單片機(jī)及應(yīng)用分類(lèi)

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

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

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

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

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

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

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

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

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

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

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

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

雙列直插式封裝PQFPPQFP(PlasticQuadFlatPackage)

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

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

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

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

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

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

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

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

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

RAM為隨機(jī)值;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

longfun1();

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

{}主函數(shù)

main()主函數(shù)體

{

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

{

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

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

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

}3.2.1數(shù)據(jù)類(lèi)型

表3-1C51基本數(shù)據(jù)類(lèi)型3.2.2運(yùn)算符及表達(dá)式

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

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

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

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

……case常量表達(dá)式n:語(yǔ)句n;break;

default:語(yǔ)句n+1;}3.while語(yǔ)句

while(條件表達(dá)式){語(yǔ)句;}

4.dowhile語(yǔ)句

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

選項(xiàng)中的

按鈕,加載編譯完成的C51程序,通過(guò)路徑選擇找到KEIL編譯完成的HEX文件選中“C51”將通過(guò)KEIL編譯完成的“HEX”文件加載到PROTUES中。單擊仿真運(yùn)行開(kāi)始按鈕

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

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

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

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

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

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

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

溫馨提示

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