單片機(jī)原理與應(yīng)用課件_第1頁(yè)
單片機(jī)原理與應(yīng)用課件_第2頁(yè)
單片機(jī)原理與應(yīng)用課件_第3頁(yè)
單片機(jī)原理與應(yīng)用課件_第4頁(yè)
單片機(jī)原理與應(yīng)用課件_第5頁(yè)
已閱讀5頁(yè),還剩686頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章

述1.1

單片機(jī)的基本概念圖1.1微機(jī)組成結(jié)構(gòu)框圖圖1.2單片機(jī)組成框圖單板機(jī):將微處理器(CPU)、存儲(chǔ)器、I/O接口電路以及簡(jiǎn)單的輸入/輸出設(shè)備組裝在一塊印刷電路板上,稱其為單板微型計(jì)算機(jī),簡(jiǎn)稱單板機(jī)。單片機(jī):將微處理器(CPU)、存儲(chǔ)器、I/O接口電路和相應(yīng)實(shí)時(shí)控制器件集成在一塊芯片上,稱其為單片微型計(jì)算機(jī),簡(jiǎn)稱單片機(jī)。微型計(jì)算機(jī):微處理器(CPU)、存儲(chǔ)器、I/O接口電路由總線有機(jī)地連接在一起的整體,稱為微型計(jì)算機(jī)。微型計(jì)算機(jī)系統(tǒng):微型計(jì)算機(jī)與外圍設(shè)備、電源、系統(tǒng)軟件一起構(gòu)成的系統(tǒng),稱為微型計(jì)算機(jī)系統(tǒng)。(1)通用微機(jī)的CPU主要面向數(shù)據(jù)處理,其發(fā)展主要圍繞數(shù)據(jù)處理功能、計(jì)算速度和精度的進(jìn)一步提高。例如,現(xiàn)今微機(jī)的CPU都支持浮點(diǎn)運(yùn)算,采用流水線作業(yè),并行處理、多級(jí)高速緩沖(Cache)技術(shù)等。CPU的主頻達(dá)到數(shù)百兆赫茲(MHz),字長(zhǎng)普遍達(dá)到32位。單片機(jī)主要面向控制,控制中的數(shù)據(jù)類型及數(shù)據(jù)處理相對(duì)簡(jiǎn)單,所以單片機(jī)的數(shù)據(jù)處理功能比通用微機(jī)相對(duì)要弱一些,計(jì)算速度和精度也相對(duì)要低一些。例如,現(xiàn)在的單片機(jī)產(chǎn)品的CPU大多不支持浮點(diǎn)運(yùn)算,CPU還采用串行工作方式,其振蕩頻率大多在百兆赫茲范圍內(nèi);在一些簡(jiǎn)單應(yīng)用系統(tǒng)中采用4位字長(zhǎng)的CPU,在中、小規(guī)模應(yīng)用場(chǎng)合廣泛采用8位字長(zhǎng)單片機(jī),在一些復(fù)雜的中、大規(guī)模的應(yīng)用系統(tǒng)中才采用16位字長(zhǎng)單片機(jī),32位單片機(jī)產(chǎn)品目前應(yīng)用得還不多。(2)通用微機(jī)中存儲(chǔ)器組織結(jié)構(gòu)主要針對(duì)增大存儲(chǔ)容量和CPU對(duì)數(shù)據(jù)的存取速度?,F(xiàn)今微機(jī)的內(nèi)存容量達(dá)到了數(shù)百兆字節(jié)(MB),存儲(chǔ)體系采用多體、并讀技術(shù)和段、

頁(yè)等多種管理模式。單片機(jī)中存儲(chǔ)器的組織結(jié)構(gòu)比較簡(jiǎn)單,存儲(chǔ)器芯片直接掛接在

單片機(jī)的總線上,CPU對(duì)存儲(chǔ)器的讀寫按直接物理地址來尋址存儲(chǔ)器單元,存儲(chǔ)器的尋址空間一般都為64

KB。(3)通用微機(jī)中I/O接口主要考慮標(biāo)準(zhǔn)外設(shè)(如CRT、標(biāo)準(zhǔn)鍵盤、鼠標(biāo)、打印機(jī)、硬盤、光盤等)。用戶通過標(biāo)準(zhǔn)總線連接外設(shè),能達(dá)到即插即用。單片機(jī)應(yīng)用系統(tǒng)的外設(shè)都是非標(biāo)準(zhǔn)的,且千差萬別,種類很多。單片機(jī)的I/O接口實(shí)際上是向用戶提供的與外設(shè)連接的物理界面。用戶對(duì)外設(shè)的連接要設(shè)計(jì)具體的接口電路,需有熟練的接口電路設(shè)計(jì)技術(shù)。1.2

單片機(jī)的發(fā)展概況1.4位單片機(jī)階段自1975年美國(guó)德克薩斯儀器公司首次推出4位單片機(jī)TMS-1000后,各個(gè)計(jì)算機(jī)生產(chǎn)公司競(jìng)相推出4位單片機(jī)。例如美國(guó)國(guó)家半導(dǎo)體公司(National

Semiconductor)的COP402系列,日本電氣公司(NEC)的μPD75XX系列,美國(guó)洛克威爾公司(Rockwell)的PPS/1系列,日本松下公司的MN1400系列,富士通公司的MB88系列等。4位單片機(jī)主要用于家用電器、電子玩具等。2.8位單片機(jī)階段1976年9月,美國(guó)Intel公司首先推出了MCS-48系列8位單片機(jī)以后,單片機(jī)發(fā)展進(jìn)入了一個(gè)新的階段,8位單片機(jī)紛紛應(yīng)運(yùn)而生。例如,莫斯特克(Mostek)和仙童(Fairchild)公司共同合作生產(chǎn)的3870(F8)系列,摩托羅拉(Motorola)公司的6801系列等。在1978年以前各廠家生產(chǎn)的8位單片機(jī),由于受集成度(幾千只管/片)的限制,一

般沒有串行接口,并且尋址空間的范圍小(小于8

KB),從性能上看屬于低檔8位單片機(jī)。隨著集成電路工藝水平的提高,在1978年到1983年期間集成度提高到幾萬只管/片,因而一些高性能的8位單片機(jī)相繼問世。例如,1978年摩托羅拉公司的MC6801

系列,齊洛格(Zilog)公司的Z8系列,1979年NEC公司的μPD78XX系列,1980年Intel公司的MCS-51系列。這類單片機(jī)的尋址能力達(dá)64

KB,片內(nèi)ROM容量達(dá)4~8

KB,片內(nèi)除帶有并行I/O口外,還有串行I/O口,甚至某些還有A/D轉(zhuǎn)換器功能。因此,把這類單片機(jī)稱為高檔8位單片機(jī)。在高檔8位單片機(jī)的基礎(chǔ)上,單片機(jī)功能進(jìn)一步得到提高,近年來推出了超8位單片機(jī)。如Intel公司的8X252、UPI-45283C152,Zilog公司的Super8,Motorola公司的MC68HC等,它們不但進(jìn)一步擴(kuò)大了片內(nèi)ROM和RAM的容量,同時(shí)還增加了通信功能、DMA傳輸功能以及高速I/O功能等。自1985年以來,各種高性能、大存儲(chǔ)容量、多功能的超8位單片機(jī)不斷涌現(xiàn),它們代表了單片機(jī)的發(fā)展方向,在單片機(jī)應(yīng)用領(lǐng)域發(fā)揮著越來越大的作用。8位單片機(jī)由于功能強(qiáng),被廣泛用于工業(yè)控制、智能接口、儀器儀表等各個(gè)領(lǐng)域。3.16位單片機(jī)階段1983年以后,集成電路的集成度可達(dá)十幾萬只管/片,16位單片機(jī)逐漸問世。這一階段的代表產(chǎn)品有1983年Intel公司推出的MCS-96系列,1987年Intel公司又推出的80C96,美國(guó)國(guó)家半導(dǎo)體公司推出的HPC16040和NEC公司推出的783XX系列等。16位單片機(jī)把單片機(jī)的功能又推向了一個(gè)新的階段。如MCS-96系列的集成度為12萬只管/片,片內(nèi)含16位CPU、8

KB

ROM、232字節(jié)RAM、5個(gè)8位并行I/O口、4個(gè)全雙工串行口、4個(gè)16位定時(shí)器/計(jì)數(shù)器、8級(jí)中斷處理系統(tǒng)。MCS-96系列還具有多種I/O功能,如高速輸入/輸出(HSIO)、脈沖寬度調(diào)制(PWM)輸出、特殊用途的監(jiān)視定時(shí)器(Watchdog)等等。16位單片機(jī)可用于高速?gòu)?fù)雜的控制系統(tǒng)。4.32位單片機(jī)近年來,各個(gè)計(jì)算機(jī)生產(chǎn)廠家已進(jìn)入更高性能的32位單片機(jī)研制、生產(chǎn)階段。由于控制領(lǐng)域?qū)?2位單片機(jī)需求并不十分迫切,所以32位單片機(jī)的應(yīng)用并不很多。需要提及的是,單片機(jī)的發(fā)展雖然按先后順序經(jīng)歷了4位、8位、16位的階段,但從實(shí)際使用情況看,并沒有出現(xiàn)推陳出新、以新代舊的局面。4位、8位、16位單片機(jī)仍各有應(yīng)用領(lǐng)域,如4位單片機(jī)在一些簡(jiǎn)單家用電器、高檔玩具中仍有應(yīng)用,8位單片機(jī)在中、小規(guī)模應(yīng)用場(chǎng)合仍占主流地位,16位單片機(jī)在比較復(fù)雜的控制系統(tǒng)中才有應(yīng)用。1.3

單片機(jī)的特點(diǎn)及應(yīng)用單片機(jī)的特點(diǎn)單片機(jī)的存儲(chǔ)器ROM和RAM是嚴(yán)格區(qū)分的。ROM稱為程序存儲(chǔ)器,只存放程序、固定常數(shù)及數(shù)據(jù)表格。RAM則為數(shù)據(jù)存儲(chǔ)器,用作工作區(qū)及存放用戶數(shù)據(jù)。這樣的結(jié)構(gòu)主要是考慮到單片機(jī)用于控制系統(tǒng)中,有較大的程序存儲(chǔ)器空間,把開發(fā)成功的程序固化在ROM中,而把少量的隨機(jī)數(shù)據(jù)存放在RAM中。這樣,小容量的數(shù)據(jù)存儲(chǔ)

器能以高速RAM形式集成在單片機(jī)內(nèi),以加速單片機(jī)的執(zhí)行速度。但單片機(jī)內(nèi)的RAM

是作為數(shù)據(jù)存儲(chǔ)器用,而不是當(dāng)作高速緩沖存儲(chǔ)器(Cache)使用。采用面向控制的指令系統(tǒng)。為滿足控制的需要,單片機(jī)有更強(qiáng)的邏輯控制能力,特別是具有很強(qiáng)的位處理能力。單片機(jī)的I/O引腳通常是多功能的。由于單片機(jī)芯片上引腳數(shù)目有限,為了解決實(shí)際引腳數(shù)和需要的信號(hào)線的矛盾,采用了引腳功能復(fù)用的方法。引腳處于何種功能,可由指令來設(shè)置或由機(jī)器狀態(tài)來區(qū)分。單片機(jī)的外部擴(kuò)展能力強(qiáng)。在內(nèi)部的各種功能部分不能滿足應(yīng)用需求時(shí),均可在外部進(jìn)行擴(kuò)展(如擴(kuò)展ROM、RAM,I/O接口,定時(shí)器/計(jì)數(shù)器,中斷系統(tǒng)等),與許多通用的微機(jī)接口芯片兼容,給應(yīng)用系統(tǒng)設(shè)計(jì)帶來極大的方便和靈活性。1.3.2

單片機(jī)的應(yīng)用體積小,成本低,運(yùn)用靈活,易于產(chǎn)品化,它能方便地組成各種智能化的控制設(shè)備和儀器,做到機(jī)電一體化。面向控制,能針對(duì)性地解決從簡(jiǎn)單到復(fù)雜的各類控制任務(wù),因而能獲得最佳的性能價(jià)格比??垢蓴_能力強(qiáng),適用溫度范圍寬,在各種惡劣的環(huán)境下都能可靠地工作,這是其它類型計(jì)算機(jī)無法比擬的??梢苑奖愕貙?shí)現(xiàn)多機(jī)和分布式控制,使整個(gè)控制系統(tǒng)的效率和可靠性大為提高。單片機(jī)的應(yīng)用范圍十分廣泛,主要的應(yīng)用領(lǐng)域有:工業(yè)控制。單片機(jī)可以構(gòu)成各種工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)等。如數(shù)控機(jī)床、自動(dòng)生產(chǎn)線控制、電機(jī)控制、溫度控制等。儀器儀表。如智能儀器、醫(yī)療器械、數(shù)字示波器等。計(jì)算機(jī)外部設(shè)備與智能接口。如圖形終端機(jī)、傳真機(jī)、復(fù)印機(jī)、打印機(jī)、繪圖儀、磁盤/磁帶機(jī)、智能終端機(jī)等。商用產(chǎn)品。如自動(dòng)售貨機(jī)、電子收款機(jī)、電子秤等。家用電器。如微波爐、電視機(jī)、空調(diào)、洗衣機(jī)、錄像機(jī)、音響設(shè)備等。1.4

常用單片機(jī)系列介紹1.4.1

MCS系列產(chǎn)品第一階段(1971~1976年):?jiǎn)纹瑱C(jī)發(fā)展的初級(jí)階段。1971年11月,Intel公司首先設(shè)計(jì)出集成度為2000只晶體管/片的4位微處理器Intel

4004,并配有RAM、ROM和移位寄存器,構(gòu)成了第一臺(tái)MCS-4微處理器。它的推出拉開了單片機(jī)研制的序幕。第二階段(1976~1980年):低性能單片機(jī)階段。這一階段以1976年Intel公司推出的MCS-48系列為代表產(chǎn)品。第三階段(1980~1983年):高性能單片機(jī)階段。這一階段以1980年Intel公司推出的MCS-51系列為代表產(chǎn)品。第四階段(1983年至今):16位單片機(jī)階段。這一階段以1983年Intel公司推出的MCS-96系列為代表產(chǎn)品。表1.1

INTEL主要單片機(jī)系列1.4.2

MCS-51系列單片機(jī)的結(jié)構(gòu)特點(diǎn)就CPU的結(jié)構(gòu)來說,通用微機(jī)的CPU內(nèi)部有一定數(shù)量的通用或?qū)S眉拇嫫?,?/p>

MCS-51系列單片機(jī)則在數(shù)據(jù)RAM區(qū)開辟了一個(gè)工作寄存器區(qū)。該區(qū)共有4組,每組8個(gè)寄存器,共計(jì)可提供32個(gè)工作寄存器,相當(dāng)于通用微機(jī)CPU中的通用寄存器。除此之外,MCS-51系列單片機(jī)還有頗具特色的21個(gè)特殊功能寄存器SFR。要理解MCS-51系列單片機(jī)的工作,就必須對(duì)特殊功能寄存器SFR的工作有清楚的了解。SFR使僅具有40條引腳的單片機(jī)系統(tǒng)的功能有很大的擴(kuò)展。由于這些SFR的作用,每個(gè)通道在程序控制下,都可有第二功能,從而使得有限的引腳能衍生出更多的功能。而且,利用SFR可完成對(duì)

定時(shí)器、串行口、中斷邏輯的控制,這就使得單片機(jī)可以把定時(shí)/計(jì)數(shù)器、串行口、中

斷邏輯等集成在一個(gè)芯片上。MCS-51系列單片機(jī)在存儲(chǔ)器結(jié)構(gòu)上與通用微機(jī)也有不同之處,通用微機(jī)中程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是一個(gè)地址空間,而單片機(jī)把程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分成兩個(gè)獨(dú)立的地址空間,采用不同的尋址方式,使用兩個(gè)不同的地址指針,PC指向程序存儲(chǔ)器,DPTR指向數(shù)據(jù)存儲(chǔ)器。采用這種結(jié)構(gòu)主要是考慮到工業(yè)控制的特點(diǎn)。一般工業(yè)控制系統(tǒng)中,需要較大的程序存儲(chǔ)器空間和較小的隨機(jī)存儲(chǔ)器空間,不同于通用微機(jī)需要較大的數(shù)據(jù)存儲(chǔ)器空間。MCS-51系列單片機(jī)在輸入輸出接口方面的特點(diǎn)是,通道口引線在程序的控制下都可有第二功能,可由用戶系統(tǒng)設(shè)計(jì)者靈活選擇。比如數(shù)據(jù)線和地址線低8位可分時(shí)合用通道0,而地址線高8位與其它信號(hào)線也可合用通道2。由于存儲(chǔ)器和接口都在片內(nèi),就給應(yīng)用提供了方便,往往只在其引腳處增加驅(qū)動(dòng)器即可簡(jiǎn)化接口設(shè)計(jì)工作,提高單片機(jī)與外設(shè)數(shù)據(jù)交換的處理速度。同時(shí),功能變換和選擇由相應(yīng)的指令來控制實(shí)現(xiàn),而不是靠硬件上的跳線短接等方法實(shí)現(xiàn)。MCS-51系列單片機(jī)I/O引腳一線多功能的特點(diǎn)方便了用戶,但在組成應(yīng)用系統(tǒng)時(shí),也應(yīng)根據(jù)其特點(diǎn)分時(shí)使用。2.1

MCS-51系列單片機(jī)簡(jiǎn)介MCS-51系列單片機(jī)已有十多種產(chǎn)品,可分為兩大系列:51子系列和52子系列。51子系列主要有8031、8051、8751三種機(jī)型。它們的指令系統(tǒng)與芯片引腳完全兼容。從表1.1中可以看出,它們的差別僅在于片內(nèi)有無ROM或EPROM。52子系列主要有8032、8052、8752三種機(jī)型。從表1.1中可以看出,52子系列與51子系列的不同之處在于:片內(nèi)數(shù)據(jù)存儲(chǔ)器增至256字節(jié);片內(nèi)程序存儲(chǔ)器增至8

KB(8032無);有3個(gè)16位定時(shí)/計(jì)數(shù)器,6個(gè)中斷源。其它性能均與51子系列相同。2.2

MCS-51系列單片機(jī)內(nèi)部結(jié)構(gòu)與外部引腳說明2.2.1

內(nèi)部結(jié)構(gòu)框圖MCS-51系列單片機(jī)的內(nèi)部結(jié)構(gòu)框圖如圖2.1所示。從圖2.1中可看出,MCS-51單片機(jī)組成結(jié)構(gòu)中包含運(yùn)算器、控制器、片內(nèi)存儲(chǔ)器、4個(gè)I/O口、串行口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)、振蕩器等功能部件。圖中SP是堆棧指針寄存器,PC是程序計(jì)數(shù)器,PSW是程序狀態(tài)字寄存器,DPTR是數(shù)據(jù)指針寄存器。圖2.1

MCS-51單片機(jī)內(nèi)部結(jié)構(gòu)框圖2.2.2

外部引腳說明1.主電源引腳VCC(40腳):接+5

V電源正端。VSS(20腳):接+5

V電源地端。2.外接晶體引腳XTAL1(19腳):接外部石英晶體的一端。在單片機(jī)內(nèi)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成了片內(nèi)振蕩器。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接地;對(duì)于CHMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。圖2.2

MCS-51系列單片機(jī)引腳及總線結(jié)構(gòu)3.輸入/輸出引腳P0口(39~32腳):P0.0~P0.7統(tǒng)稱為P0口。在不接片外存儲(chǔ)器與不擴(kuò)展I/O口時(shí),可作為準(zhǔn)雙向輸入/輸出口。在接有片外存儲(chǔ)器或擴(kuò)展I/O口時(shí),P0口分時(shí)復(fù)用為低8位地址總線和雙向數(shù)據(jù)總線。P1口(1~8腳):P1.0~P1.7統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O口使用。對(duì)于52子系列,P1.0與P1.1還有第二功能:P1.0可用作定時(shí)器/計(jì)數(shù)器2的計(jì)數(shù)脈沖輸入端T2,P1.1可用作定時(shí)器/計(jì)數(shù)器2的外部控制端T2EX。P2口(21~28腳):P2.0~P2.7統(tǒng)稱為P2口,一般可作為準(zhǔn)雙向I/O口使用;在接有片外存儲(chǔ)器或擴(kuò)展I/O口且尋址范圍超過256字節(jié)時(shí),P2口用作高8位地址總線。P3口(10~17腳):P3.0~P3.7統(tǒng)稱為P3口。除作為準(zhǔn)雙向I/O口使用外,還可以將每一位用于第二功能,而且P3口的每一條引腳均可獨(dú)立定義為第一功能的輸入輸出或第二功能。P3口的第二功能如表2.1所示。表2.1

P3口第二功能表引腳第二功能P3.0串行口輸入端P3.1串行口輸出端P3.2外部中斷0請(qǐng)求輸入端,低電平有效外部中斷1請(qǐng)求輸入端,低電平有效P3.3P3.4定時(shí)器/計(jì)數(shù)器0計(jì)數(shù)脈沖輸入端P3.5定時(shí)器/計(jì)數(shù)器1計(jì)數(shù)脈沖輸入端P3.6外部數(shù)據(jù)存儲(chǔ)器寫選通信號(hào)輸出端,低電平有效P3.7RXDTXDINT0INT1T0T1WRRD4.控制線(1)ALE/PROG(30腳):地址鎖存有效信號(hào)輸出端。ALE在每個(gè)機(jī)器周期內(nèi)輸出兩個(gè)脈沖。在訪問片外程序存儲(chǔ)器期間,下降沿用于控制鎖存P0輸出的低8位地址;在不

訪問片外程序存儲(chǔ)器期間,可作為對(duì)外輸出的時(shí)鐘脈沖或用于定時(shí)目的。但要注意,在訪問片外數(shù)據(jù)存儲(chǔ)器期間,ALE脈沖會(huì)跳空一個(gè),此時(shí)作為時(shí)鐘輸出就不妥了(詳見

2.3.3節(jié)CPU時(shí)序)。對(duì)于片內(nèi)含有EPROM的機(jī)型,在編程期間,該引腳用作編程脈沖PROG的輸入端。PSEN(29腳):片外程序存儲(chǔ)器讀選通信號(hào)輸出端,低電平有效。當(dāng)從外部程序存儲(chǔ)器讀取指令或常數(shù)期間,每個(gè)機(jī)器周期該信號(hào)兩次有效,以通過數(shù)據(jù)總線P0口讀回指令或常數(shù)。在訪問片外數(shù)據(jù)存儲(chǔ)器期間,PSEN信號(hào)將不出現(xiàn)。RST/VPD(9腳):RST即為RESET,VPD為備用電源。該引腳為單片機(jī)的上電復(fù)

位或掉電保護(hù)端。當(dāng)單片機(jī)振蕩器工作時(shí),該引腳上出現(xiàn)持續(xù)兩個(gè)機(jī)器周期的高電平,就可實(shí)現(xiàn)復(fù)位操作,使單片機(jī)回復(fù)到初始狀態(tài)。上電時(shí),考慮到振蕩器有一定的起振

時(shí)間,該引腳上高電平必須持續(xù)10

ms以上才能保證有效復(fù)位。當(dāng)VCC發(fā)生故障,降低到低電平規(guī)定值或掉電時(shí),該引腳可接上備用電源VPD(+5V)為內(nèi)部RAM供電,以保證RAM中的數(shù)據(jù)不丟失。(4)EA/VPP(31腳):EA為片外程序存儲(chǔ)器選用端。該引腳有效(低電平)時(shí),只選用片外程序存儲(chǔ)器,否則單片機(jī)上電或復(fù)位后選用片內(nèi)程序存儲(chǔ)器。對(duì)于片內(nèi)含有EPROM的機(jī)型,在編程期間,此引腳用作21

V編程電源VPP的輸入端。綜上所述,MCS-51系列單片機(jī)的引腳可歸納為以下兩點(diǎn):(1)單片機(jī)功能多,引腳數(shù)少,因而許多引腳都具有第二功能。(2)單片機(jī)對(duì)外呈現(xiàn)3總線形式,由P2、P0口組成16位地址總線;由P0口分時(shí)復(fù)用為數(shù)據(jù)總線;由ALE、PSEN、RST、EA與P3口中的INT0、INT1、T0、T1、WR、RD共10個(gè)引腳組成控制總線,如圖2.2(b)所示。由于是16位地址線,因此,可使片外存儲(chǔ)器的尋址范圍達(dá)到64

KB。2.3

微處理器2.3.1

運(yùn)算部件運(yùn)算部件以算術(shù)邏輯單元ALU為核心,包括累加器ACC、寄存器B、暫存器、程序狀態(tài)字PSW等許多部件。它能實(shí)現(xiàn)數(shù)據(jù)的算術(shù)邏輯運(yùn)算、位變量處理和數(shù)據(jù)傳輸操作。1.算術(shù)邏輯單元ALU與累加器ACC、寄存器B算術(shù)邏輯單元不僅能完成8位二進(jìn)制的加、減、乘、除、加1、減1及BCD加法的十進(jìn)制調(diào)整等算術(shù)運(yùn)算,還能對(duì)8位變量進(jìn)行邏輯"與"、"或"、"異或"、循環(huán)移位、求補(bǔ)、清零等邏輯運(yùn)算,并具有數(shù)據(jù)傳輸、程序轉(zhuǎn)移等功能。累加器(ACC,簡(jiǎn)稱累加器A)為一個(gè)8位寄存器,它是CPU中使用最頻繁的寄存器。進(jìn)入ALU作算術(shù)和邏輯運(yùn)算的操

作數(shù)多來自于A,運(yùn)算結(jié)果也常送回A保存。寄存器B是為ALU進(jìn)行乘除法運(yùn)算而設(shè)置

的。若不作乘除運(yùn)算時(shí),則可作為通用寄存器使用。2.程序狀態(tài)字程序狀態(tài)字PSW是一個(gè)8位的標(biāo)志寄存器,它保存指令執(zhí)行結(jié)果的特征信息,以供程序查詢和判別。其各位的定義如下:字節(jié)地址D0HCPPSW.6

PSW.5AC

F0PSW.4

PSW.3

PSW.2

PSW.1

PSW.0RS1

RS0

OV

---PSW.7進(jìn)位標(biāo)志位C(PSW.7):在執(zhí)行某些算術(shù)操作類、邏輯操作類指令時(shí),可被硬件或軟件置位或清零。它表示運(yùn)算結(jié)果是否有進(jìn)位或借位。如果在最高位有進(jìn)位(加法時(shí))或有借位(減法時(shí)),則C=1,否則C=0。輔助進(jìn)位(或稱半進(jìn)位)標(biāo)志位AC(PSW.6):它表示兩個(gè)8位數(shù)運(yùn)算,低4位有無進(jìn)(借)位的狀況。當(dāng)?shù)?位相加(或相減)時(shí),若D3位向D4位有進(jìn)位(或借位),則AC=1,否則AC=0。在BCD碼運(yùn)算的十進(jìn)制調(diào)整中要用到該標(biāo)志。用戶自定義標(biāo)志位F0(PSW.5):用戶可根據(jù)自己的需要對(duì)F0賦予一定的含義,通過軟件置位或清零,并根據(jù)F0=1或0來決定程序的執(zhí)行方式,或反映系統(tǒng)某一種工作狀態(tài)。工作寄存器組選擇位RS1、RS0(PSW.4、PSW.3):可用軟件置位或清零,用于選定當(dāng)前使用的4個(gè)工作寄存器組中的某一組(詳見第2.4節(jié))。溢出標(biāo)志位OV(PSW.2):做加法或減法時(shí),由硬件置位或清零,以指示運(yùn)算結(jié)

果是否溢出。OV=1反映運(yùn)算結(jié)果超出了累加器的數(shù)值范圍(無符號(hào)數(shù)的范圍為0~255,以補(bǔ)碼形式表示一個(gè)有符號(hào)數(shù)的范圍為-128~+127)。進(jìn)行無符號(hào)數(shù)的加法或減法時(shí),OV的值與進(jìn)位位C的值相同;進(jìn)行有符號(hào)數(shù)的加法時(shí),如最高位、次高位之一有進(jìn)位,或做減法時(shí),如最高位、次高位之一有借位,OV被置位,即OV的值為最高位和次高位的異或(C7⊕C6)。執(zhí)行乘法指令MUL

AB也會(huì)影響OV標(biāo)志,積>255時(shí)OV

=1,否則OV

=0。執(zhí)行除法指令DIV

AB也會(huì)影響OV標(biāo)志,如B中所放除數(shù)為0,OV=1,否則

OV=0。奇偶標(biāo)志位P(PSW.0):在執(zhí)行指令后,單片機(jī)根據(jù)累加器A中1的個(gè)數(shù)的奇偶自動(dòng)給該標(biāo)志置位或清零。若A中1的個(gè)數(shù)為奇數(shù),則P=1,否則P=0。該標(biāo)志對(duì)串行

通信的數(shù)據(jù)傳輸非常有用,通過奇偶校驗(yàn)可檢驗(yàn)傳輸?shù)目煽啃浴?.布爾處理機(jī)布爾處理機(jī)(即位處理)是MCS-51單片機(jī)ALU所具有的一種功能。單片機(jī)指令系統(tǒng)中的位處理指令集(17條位操作指令),存儲(chǔ)器中的位地址空間,以及借用程序狀態(tài)寄存器PSW中的進(jìn)位標(biāo)志CY作為位操作"累加器",構(gòu)成了MCS-51單片機(jī)內(nèi)的布爾處理機(jī)。它可對(duì)直接尋址的位(bit)變量進(jìn)行位處理,如置位、清零、取反、測(cè)試轉(zhuǎn)移以及邏輯"與"、"或"等位操作,使用戶在編程時(shí)可以利用指令完成原來單憑復(fù)雜的硬件邏輯所完成的功能,并可方便地設(shè)置標(biāo)志等。2.3.2控制部件及振蕩器控制部件是單片機(jī)的神經(jīng)中樞,它包括定時(shí)和控制電路、指令寄存器、譯碼器以及信息傳送控制等部件。它先以主振頻率為基準(zhǔn)發(fā)出CPU的時(shí)序,對(duì)指令進(jìn)行譯碼,然后發(fā)出各種控制信號(hào),完成一系列定時(shí)控制的微操作,用來協(xié)調(diào)單片機(jī)內(nèi)部各功能部件之間的數(shù)據(jù)傳送、數(shù)據(jù)運(yùn)算等操作,并對(duì)外發(fā)出地址鎖存ALE、外部程序存儲(chǔ)器選通

PSEN,以及通過P3.6和P3.7發(fā)出數(shù)據(jù)存儲(chǔ)器讀RD、寫WR等控制信號(hào),并且接收處理外接的復(fù)位和外部程序存儲(chǔ)器訪問控制EA信號(hào)。單片機(jī)的定時(shí)控制功能是用片內(nèi)的時(shí)鐘電路和定時(shí)電路來完成的,而片內(nèi)的時(shí)鐘產(chǎn)生有兩種方式:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。圖2.3單片機(jī)外接晶體的接法表2.2單片機(jī)外部時(shí)鐘接法表接法芯片類型

XTAL1

XTAL2HMOS型

接地

接片外振蕩脈沖輸入端(帶上拉電阻)CHMOS型接片外振蕩脈沖輸入端(帶上拉電阻)懸浮2.3.3

CPU時(shí)序振蕩周期:振蕩脈沖的周期。狀態(tài)周期:兩個(gè)振蕩周期為一個(gè)狀態(tài)周期,也稱為時(shí)鐘周期,用S表示。兩個(gè)振蕩周期作為兩個(gè)節(jié)拍分別稱為節(jié)拍P1和節(jié)拍P2。在狀態(tài)周期的前半周期P1有效時(shí),通常完成算術(shù)邏輯操作;在后半周期P2有效時(shí),一般進(jìn)行內(nèi)部寄存器之間的傳輸。機(jī)器周期:一個(gè)機(jī)器周期包含6個(gè)狀態(tài)周期,用S1、S2、…、S6表示;共12個(gè)節(jié)拍,依次可表示為S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2。指令周期:執(zhí)行一條指令所占用的全部時(shí)間,它以機(jī)器周期為單位。MCS-51系列單片機(jī)除乘法、除法指令是4周期指令外,其余都是單周期指令和雙周期指令。若用12

MHz晶振,則單周期指令和雙周期指令的指令周期時(shí)間分別為1

μs和2

μs,乘法和除法指令為4

μs。圖2.4單周期指令時(shí)序(a)單字節(jié)周期指令(如INC

A);(b)雙字節(jié)單周期指令(如ADDA,#data)2.4

儲(chǔ)

器2.4.1

程序存儲(chǔ)器1.編址與訪問計(jì)算機(jī)的工作是按照事先編制好的程序命令序列一條條順序執(zhí)行的,程序存儲(chǔ)器就是用來存放這些已編好的程序和表格常數(shù),它由只讀存儲(chǔ)器ROM或EPROM組成。計(jì)

算機(jī)為了有序地工作,設(shè)置了一個(gè)專用寄存器--程序計(jì)數(shù)器PC,用以存放將要執(zhí)行的指令地址。每取出指令的1個(gè)字節(jié)后,其內(nèi)容自動(dòng)加1,指向下一字節(jié)地址,使計(jì)算機(jī)依次從程序存儲(chǔ)器取出指令予以執(zhí)行,完成某種程序操作。由于MCS-51單片機(jī)的程序計(jì)數(shù)器為16位,因此,可尋址的地址空間為64

KB。圖2.5程序存儲(chǔ)器編址圖(a)51子系列;(b)52子系列2.程序的7個(gè)特殊入口地址表2.3

MCS-51單片機(jī)復(fù)位、中斷入口地址操作入口地址復(fù)位0000H外部中斷00003H定時(shí)器/計(jì)數(shù)器0溢出000BH外部中斷10013H定時(shí)器/計(jì)數(shù)器1溢出001BH串行口中斷0023H定時(shí)器/計(jì)數(shù)器0溢出或T2EX端負(fù)跳變(52子系列)002BH2.4.2

數(shù)據(jù)存儲(chǔ)器1.編址與訪問MCS-51單片機(jī)片內(nèi)、外數(shù)據(jù)存儲(chǔ)器是兩個(gè)獨(dú)立的地址空間,應(yīng)分別單獨(dú)編址。片內(nèi)數(shù)據(jù)存儲(chǔ)器除RAM塊外,還有特殊功能寄存器(SFR)塊。對(duì)于51子系列,前者有128個(gè)字節(jié),其編址為00H~7FH;后者有128個(gè)字節(jié),其編址為80H~FFH;二者連續(xù)而不重疊。對(duì)于52子系列,前者有256個(gè)字節(jié),其編址為00H~FFH;后者有128個(gè)字節(jié),其編址為

80H~FFH。后者與前者高128個(gè)字節(jié)的編址是重疊的。由于訪問它們所用的指令不同,并不會(huì)引起混亂。片外數(shù)據(jù)存儲(chǔ)器一般是16位編址。數(shù)據(jù)存儲(chǔ)器的編址如圖2.6所示。圖2.6數(shù)據(jù)存儲(chǔ)器編址圖(a)51子系列;(b)52子系列工作寄存器0組工作寄存器1組工作寄存器2組工作寄存器3組2.片內(nèi)數(shù)據(jù)存儲(chǔ)器圖2.751子系列單片機(jī)片內(nèi)RAM的配置00HR001HR1工

07HR708H作

09HR0R1寄

0FH

10H存

11HR7

R0

R1器

17H

18HR7

R0區(qū)

19HR11FHR720H21H22H23H位

24H25H尋

26H27H址

28H29H區(qū)2AH2BH2CH2DH2EH2FH07060504030201000F0E0D0C0B0A090817161514131211101F1E1D1C1B1A191827262524232221202F2E2D2C2B2A292837363534333231303F3E3D3C3B3A393847464544434241404F4E4D4C4B4A494857565554535251505F5E5D5C5B5A5867666564636261606F6E6D6C6B6A696877767574737271707F7E7D7C7B7A797830H31H7EH7FH1)工作寄存器區(qū)00H~1FH單元為工作寄存器區(qū)。工作寄存器也稱通用寄存器,用于臨時(shí)寄存8位信息。工作寄存器分成4組,每組都有8個(gè)寄存器,用R0~R7來表示。程序中每次只用1組,其它各組不工作。使用哪一組寄存器工作由程序狀態(tài)字PSW中的PSW.3(RS0)和PSW.4(RS1)兩位來選擇,其對(duì)應(yīng)關(guān)系如表2.4所示。通過軟件設(shè)置RS0和RS1兩位的狀態(tài),就可任意選一組工作寄存器工作。這個(gè)特點(diǎn)使MCS-51單片機(jī)具有快速現(xiàn)場(chǎng)保護(hù)功能,對(duì)于提高程序效率和響應(yīng)中斷的速度是很有利的。表2.4工作寄存器組的選擇表PSW.4(RS1)PSW.3(RS0)當(dāng)前使用的工作寄存器組R0~R7000組(00H~07H)011組(08H~0FH)102組(10H~17H)113組(18H~1FH)2)位尋址區(qū)20H~2FH單元是位尋址區(qū)。這16個(gè)單元(共計(jì)16×8=128位)的每一位都賦予了一個(gè)位地址,位地址范圍為00H~7FH。位尋址區(qū)的每一位都可當(dāng)作軟件觸發(fā)器,由程序直接進(jìn)行位處理。通??梢园迅鞣N程序狀態(tài)標(biāo)志、位控制變量存于位尋址區(qū)內(nèi)。3)數(shù)據(jù)緩沖區(qū)30H~7FH是數(shù)據(jù)緩沖區(qū),也即用戶RAM區(qū),共80個(gè)單元。由于工作寄存器區(qū)、位尋址區(qū)、數(shù)據(jù)緩沖區(qū)統(tǒng)一編址,使用同樣的指令訪問,這三個(gè)區(qū)的單元既有自己獨(dú)特的功能,又可統(tǒng)一調(diào)度使用。因此,前兩個(gè)區(qū)未使用的單元也可作為用戶RAM單元使用,使容量較小的片內(nèi)RAM得以充分利用。52子系列片內(nèi)RAM有256個(gè)單元,前兩個(gè)區(qū)的單元數(shù)與地址都和51子系列的一致,用戶RAM區(qū)卻為30H~FFH,有208個(gè)單元。4)堆棧和堆棧指針圖2.8

MCS–51單片機(jī)堆棧3.特殊功能寄存器塊特殊功能寄存器(SFR,即Special

Function

Registers),又稱為專用寄存器,專用于控制、管理片內(nèi)算術(shù)邏輯部件、并行I/O口、串行I/O口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等功能模塊的工作。用戶在編程時(shí)可以置數(shù)設(shè)定,卻不能自由移作它用。在51子系列單片機(jī)中,各專用寄存器(PC例外)與片內(nèi)RAM統(tǒng)一編址,且作為直接尋址字節(jié),可直接尋址。除PC外,51子系列有18個(gè)專用寄存器,其中3個(gè)為雙字節(jié)寄存器,共占用21個(gè)字節(jié);52子系列有21個(gè)專用寄存器,其中5個(gè)雙字節(jié)寄存器,共占用26個(gè)字節(jié)。按地址排列的各特殊功能寄存器名稱、表示符、地址等如表2.5所示。其中有12個(gè)專用寄存器可以位尋址,它們字節(jié)地址的低半字節(jié)都為0H或8H(即可位尋址的特殊功能寄存器字節(jié)地址具有能被8整除的特征),共有可尋址位12×8-3(未定義)=93位。表2.5特殊功能寄存器名稱、表示符、地址一覽表表2.5特殊功能寄存器名稱、表示符、地址一覽表2.5 并行輸入/輸出接口2.5.1

P0口1.P0口結(jié)構(gòu)P0口是一個(gè)三態(tài)雙向口,可作為地址/數(shù)據(jù)分時(shí)復(fù)用口,也可作為通用I/O接口。其1位的結(jié)構(gòu)原理如圖2.9所示。P0口由8個(gè)這樣的電路組成。鎖存器起輸出鎖存作用,

8個(gè)鎖存器構(gòu)成了特殊功能寄存器P0;場(chǎng)效應(yīng)管(FET)V1、V2組成輸出驅(qū)動(dòng)器,以增大帶負(fù)載能力;三態(tài)門1是引腳輸入緩沖器;三態(tài)門2用于讀鎖存器端口;與門3、反相

器4及模擬轉(zhuǎn)換開關(guān)構(gòu)成了輸出控制電路。圖2.9

P0口1位結(jié)構(gòu)圖2.地址/數(shù)據(jù)分時(shí)復(fù)用功能當(dāng)P0口作為地址/數(shù)據(jù)分時(shí)復(fù)用總線時(shí),可分為兩種情況:一種是從P0口輸出地址或數(shù)據(jù),另一種是從P0口輸入數(shù)據(jù)。在訪問片外存儲(chǔ)器而需從P0口輸出地址或數(shù)據(jù)信號(hào)時(shí),控制信號(hào)應(yīng)為高電平"1",使轉(zhuǎn)換開關(guān)MUX把反相器4的輸出端與V1接通,同時(shí)把與門3打開。當(dāng)?shù)刂坊驍?shù)據(jù)為"1"時(shí),經(jīng)反相器4使V1截止,而經(jīng)與門3使V2導(dǎo)通,P0.x引腳上出現(xiàn)相應(yīng)的高電平"1";當(dāng)?shù)刂坊驍?shù)據(jù)為"0"時(shí),經(jīng)反相器4使V1導(dǎo)通而V2截止,引腳上出現(xiàn)相應(yīng)的低電平"0"。這樣就將地址/數(shù)據(jù)的信號(hào)輸出。3.通用I/O接口功能當(dāng)P0口作為通用I/O口使用,在CPU向端口輸出數(shù)據(jù)時(shí),對(duì)應(yīng)的控制信號(hào)為0,轉(zhuǎn)換開關(guān)把輸出級(jí)與鎖存器Q端接通,同時(shí)因與門3輸出為0使V2截止,此時(shí),輸出級(jí)是漏極開路電路。當(dāng)寫脈沖加在鎖存器時(shí)鐘端CLK上時(shí),與內(nèi)部總線相連的D端數(shù)據(jù)取反后出現(xiàn)在Q端,又經(jīng)輸出V1反相,在P0引腳上出現(xiàn)的數(shù)據(jù)正好是內(nèi)部總線的數(shù)據(jù)。當(dāng)要從P0口輸入數(shù)據(jù)時(shí),引腳信息仍經(jīng)輸入緩沖器進(jìn)入內(nèi)部總線。在輸出數(shù)據(jù)時(shí),由于V2截止,輸出級(jí)是漏極開路電路,要使"1"信號(hào)正常輸出,必須外接上拉電阻。P0口作為通用I/O口使用時(shí),是準(zhǔn)雙向口。其特點(diǎn)是在輸入數(shù)據(jù)時(shí),應(yīng)先把口置

1(寫1),此時(shí)鎖存器的Q端為0,使輸出級(jí)的兩個(gè)場(chǎng)效應(yīng)管V1、V2均截止,引腳處于懸浮

狀態(tài),才可作高阻輸入。因?yàn)?,從P0口引腳輸入數(shù)據(jù)時(shí),V2一直處于截止?fàn)顟B(tài),引腳上

的外部信號(hào)既加在三態(tài)緩沖器1的輸入端,又加在V1的漏極。假定在此之前曾輸出鎖存過

數(shù)據(jù)0,則V1是導(dǎo)通的,這樣引腳上的電位就始終被箝位在低電平,使輸入高電平無法讀

入。因此,在輸入數(shù)據(jù)時(shí),應(yīng)人為地先向口寫1,使V1、V2均截止,方可高阻輸入。所以

說P0口作為通用I/O口使用時(shí),是準(zhǔn)雙向口。但在P0用作地址/數(shù)據(jù)分時(shí)復(fù)用功能連接外部存儲(chǔ)器時(shí),由于訪問外部存儲(chǔ)器期間,CPU會(huì)自動(dòng)向P0口的鎖存器寫入0FFH,對(duì)用戶而言,

P0口此時(shí)則是真正的三態(tài)雙向口。4.端口操作MCS-51單片機(jī)有不少指令可直接進(jìn)行端口操作,例如:ANL

P0,A

;(P0)←(P0)∧(A)ORL

P0,#data

;(P0)←(P0)∨dataDEL

P0

;(P0)←(P0)

-1這些指令的執(zhí)行過程分成"讀-修改-寫"三步,先將P0口的數(shù)據(jù)讀入CPU,在ALU

中進(jìn)行運(yùn)算,運(yùn)算結(jié)果再送回P0。執(zhí)行"讀-修改-寫"類指令時(shí),CPU是通過三態(tài)門2

讀回鎖存器Q端的數(shù)據(jù)來代表引腳狀態(tài)的。如果直接通過三態(tài)門1從引腳讀回?cái)?shù)據(jù),有時(shí)會(huì)發(fā)生錯(cuò)誤。例如,用一根口線去驅(qū)動(dòng)一個(gè)晶體管的基極,當(dāng)向此口線輸出1時(shí),鎖存器Q=1,V2導(dǎo)通驅(qū)動(dòng)晶體管。當(dāng)晶體管導(dǎo)通后,引腳上的電平被拉到低電平(0.7V),因而,若從引腳直接讀回?cái)?shù)據(jù),原為1的狀態(tài)則會(huì)錯(cuò)讀為0,所以要從鎖存器Q端讀取數(shù)據(jù)。綜上所述,P0口在有外部擴(kuò)展存儲(chǔ)器時(shí)被作為地址/數(shù)據(jù)總線口,此時(shí)是一個(gè)真正的雙向口;在沒有外部擴(kuò)展存儲(chǔ)器時(shí),P0口也可作為通用的I/O接口,但此時(shí)只是一個(gè)準(zhǔn)雙向口。另外,P0口的輸出級(jí)具有驅(qū)動(dòng)8個(gè)LSTTL負(fù)載的能力,即輸出電流不大于800

μA。2.5.2

P1口P1口為準(zhǔn)雙向口,其1位的內(nèi)部結(jié)構(gòu)如圖2.10所示。它在結(jié)構(gòu)上與P0口的區(qū)別在于輸出驅(qū)動(dòng)部分。其輸出驅(qū)動(dòng)部分由場(chǎng)效應(yīng)管V1與內(nèi)部上拉電阻組成。當(dāng)其某位輸出高電平時(shí),可以提供拉電流負(fù)載,不必像P0口那樣需要外接上拉電阻。P1口只有通用I/O接口一種功能(對(duì)51子系列),其輸入輸出原理特性與P0口作為通用I/O接口使用時(shí)一樣,請(qǐng)讀者自己分析。P1口具有驅(qū)動(dòng)4個(gè)LSTTL負(fù)載的能力。另外,對(duì)于52子系列單片機(jī)P1口P1.0與P1.1除作為通用I/O接口線外,還具有第二功能,即P1.0可作為定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)脈沖輸入端T2,P1.1可作為定時(shí)器/計(jì)數(shù)器2的外部控制輸入端T2EX。圖2.10

P1口1位結(jié)構(gòu)圖2.5.3

P2口圖2.11

P2口1位結(jié)構(gòu)圖當(dāng)作為準(zhǔn)雙向通用I/O口使用時(shí),控制信號(hào)使轉(zhuǎn)換開關(guān)接向左側(cè),鎖存器Q端經(jīng)反相器3接V1,其工作原理與P1相同,也具有輸入、輸出、端口操作三種工作方式,負(fù)載能力也與P1相同。當(dāng)作為外部擴(kuò)展存儲(chǔ)器的高8位地址總線使用時(shí),控制信號(hào)使轉(zhuǎn)換開關(guān)接向右側(cè),由程序計(jì)數(shù)器PC來的高8位地址PCH,或數(shù)據(jù)指針DPTR來的高8位地址DPH經(jīng)反相器3和V1原樣呈現(xiàn)在P2口的引腳上,輸出高8位地址A8~A15。在上述情況下,口鎖存器的內(nèi)容不受影響,所以,取指或訪問外部存儲(chǔ)器結(jié)束后,由于轉(zhuǎn)換開關(guān)又接至左側(cè),使輸出驅(qū)動(dòng)器與鎖存器Q端相連,引腳上將恢復(fù)原來的數(shù)據(jù)。2.5.4

P3口圖2.12

P3口1位結(jié)構(gòu)圖2.6

定時(shí)器/計(jì)數(shù)器對(duì)于定時(shí)器/計(jì)數(shù)器來說,不管是獨(dú)立的定時(shí)器芯片還是單片機(jī)內(nèi)的定時(shí)器,大都具有以下特點(diǎn):定時(shí)器/計(jì)數(shù)器有多種方式,可以是計(jì)數(shù)方式也可以是定時(shí)方式。定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)值是可變的,當(dāng)然計(jì)數(shù)的最大值是有限的,這取決于計(jì)數(shù)器的位數(shù)。計(jì)數(shù)的最大值也就限定了定時(shí)的最大值。在到達(dá)設(shè)定的定時(shí)或計(jì)數(shù)值時(shí)發(fā)出中斷申請(qǐng),以便實(shí)現(xiàn)定時(shí)控制。MCS-51單片機(jī)(51子系列)內(nèi)帶有兩個(gè)16位定時(shí)器/計(jì)數(shù)器T0和T1,它們均可作為定時(shí)器或計(jì)數(shù)器使用。2.6.1

定時(shí)器/計(jì)數(shù)器T0、T1的結(jié)構(gòu)圖2.13定時(shí)器/計(jì)數(shù)器T0、T1的結(jié)構(gòu)框圖1.16位加法器定時(shí)器/計(jì)數(shù)器的核心是16位加法計(jì)數(shù)器,圖中用特殊功能寄存器TH0、TL0及TH1、TL1表示。TH0、TL0是定時(shí)器/計(jì)數(shù)器0加法計(jì)數(shù)器的高8位和低8位,TH1、TL1是定時(shí)器/計(jì)數(shù)器1加法計(jì)數(shù)器的高8位和低8位。作計(jì)數(shù)器用時(shí),加法計(jì)數(shù)器對(duì)芯片引腳T0(P3.4)或T1(P3.5)上的輸入脈沖計(jì)數(shù)。每輸入一個(gè)脈沖,加法計(jì)數(shù)器增加1。加法計(jì)數(shù)溢出時(shí)可向CPU發(fā)出中斷請(qǐng)求信號(hào)。作定時(shí)器用時(shí),加法計(jì)數(shù)器對(duì)內(nèi)部機(jī)器周期脈沖Tcy計(jì)數(shù)。由于機(jī)器周期是定值,所以對(duì)Tcy的計(jì)數(shù)就是定時(shí),如Tcy=1

μs,計(jì)數(shù)值100,相當(dāng)于定時(shí)100

μs。加法計(jì)數(shù)器的初值可以由程序設(shè)定,設(shè)置的初值不同,計(jì)數(shù)值或定時(shí)時(shí)間就不同。在定時(shí)器/計(jì)數(shù)器的工作過程中,加法計(jì)數(shù)器的內(nèi)容可用程序讀回CPU。2.定時(shí)器/計(jì)數(shù)器方式控制寄存器TMOD定時(shí)器/計(jì)數(shù)器T0、T1都有四種工作方式,可通過程序?qū)MOD設(shè)置來選擇。TMOD的低4位用于定時(shí)器/計(jì)數(shù)器0,高4位用于定時(shí)器/計(jì)數(shù)器1。其位定義如下:GATEC/

TMIM0GATEC/TM1M0TMOD字節(jié)地址

89HD7D6D5D4D3D2D1D0T1T0定時(shí)或計(jì)數(shù)功能選擇位,當(dāng)C/T

=1時(shí)為計(jì)數(shù)方式;當(dāng)C/=0時(shí)為定時(shí)方式。M1、M0:定時(shí)器/計(jì)數(shù)器工作方式選擇位,其值與工作方式對(duì)應(yīng)關(guān)系如表2.6所示。GATE:門控位,用于控制定時(shí)器/計(jì)數(shù)器的啟動(dòng)是否受外部中斷請(qǐng)求信號(hào)的影

響。如果GATE=1,定時(shí)器/計(jì)數(shù)器0的啟動(dòng)受芯片引腳

(P3.2)控制,定時(shí)器/計(jì)數(shù)器1的啟動(dòng)受芯片引腳

(P3.3)控制;如果GATE=0,定時(shí)器/計(jì)數(shù)器的啟動(dòng)與引腳

無關(guān)。一般情況下GATE=0。表2.6定時(shí)器/計(jì)數(shù)器工作方式M1M0工作方式方式說明00013位定時(shí)器/計(jì)數(shù)器01116位定時(shí)器/計(jì)數(shù)器102具有自動(dòng)重裝初值的8位定時(shí)器/計(jì)數(shù)器1133.定時(shí)器/計(jì)數(shù)器控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT0TCON字節(jié)地址

88HTCON控制寄存器各位定義如下:D7

D6

D5

D4

D3D2D1

D0TF0(TF1):T0(T1)定時(shí)器/計(jì)數(shù)器溢出中斷標(biāo)志位。當(dāng)T0(T1)計(jì)數(shù)溢出時(shí),由硬件置位,并在允許中斷的情況下,向CPU發(fā)出中斷請(qǐng)求信號(hào),CPU響應(yīng)中斷轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件自動(dòng)將該位清零。TR0(TR1):T0(T1)運(yùn)行控制位。當(dāng)TR0(TR1)=1時(shí)啟動(dòng)T0(T1);TR0(TR1)=0時(shí)關(guān)閉T0(T1)。該位由軟件進(jìn)行設(shè)置。2.6.2

定時(shí)器/計(jì)數(shù)器T0、T1的四種工作方式1.工作方式0圖2.14定時(shí)器/計(jì)數(shù)器方式0的邏輯結(jié)構(gòu)可用程序?qū)?~8191(213-1)的某一數(shù)送入THx、TLx作為初值。THx、TLx從初值開始加法計(jì)數(shù),直至溢出。所以初值不同,定時(shí)時(shí)間或計(jì)數(shù)值不同。必須注意的是:加法計(jì)數(shù)器THx溢出后,必須用程序重新對(duì)THx、TLx設(shè)置初值,否則下一次THx、TLx將從0開始計(jì)數(shù)。如果C/T=1,圖2.14中開關(guān)S1自動(dòng)地接在下面,定時(shí)器/計(jì)數(shù)器工作在計(jì)數(shù)狀態(tài),加法計(jì)數(shù)器對(duì)Tx引腳上的外部脈沖計(jì)數(shù)。計(jì)數(shù)值由下式確定:N=213–x=8192–x式中N為計(jì)數(shù)值,x是THx、TLx的初值。x=8191時(shí)為最小計(jì)數(shù)值1,x=0時(shí)為最大計(jì)數(shù)值8192,即計(jì)數(shù)范圍為1~8192。定時(shí)器/計(jì)數(shù)器在每個(gè)機(jī)器周期的S5P2期間采樣Tx腳輸入信號(hào),若一個(gè)機(jī)器周期

的采樣值為1,下一個(gè)機(jī)器周期的采樣值為0,則計(jì)數(shù)器加1。由于識(shí)別一個(gè)高電平到

低電平的跳變需兩個(gè)機(jī)器周期,所以對(duì)外部計(jì)數(shù)脈沖的頻率應(yīng)小于fosc/24,且高電平與低電平的延續(xù)時(shí)間均不得小于1個(gè)機(jī)器周期。C/T=0時(shí)為定時(shí)器方式,開關(guān)S1自動(dòng)地接在上面,加法計(jì)數(shù)器對(duì)機(jī)器周期脈沖Tcy計(jì)數(shù),每個(gè)機(jī)器周期TLx加1。定時(shí)時(shí)間由下式確定:T=N×Tcy=(8192-x)Tcy式中Tcy為單片機(jī)的機(jī)器周期。如果振蕩頻率fosc=12

MHz,則Tcy=1

μs,定時(shí)范圍為1~8192

μs。定時(shí)器/計(jì)數(shù)器的啟動(dòng)或停止由TRx控制。當(dāng)GATE=0時(shí),只要用軟件置TRx

=1,開關(guān)S2閉合,定時(shí)器/計(jì)數(shù)器就開始工作;置TRx=0,S2打開,定時(shí)器/計(jì)數(shù)器停止工作。GATE=1為門控方式。此時(shí),僅當(dāng)TRx=1且

引腳上出現(xiàn)高電平(即無外部中斷請(qǐng)求信號(hào)),S2才閉合,定時(shí)器/計(jì)數(shù)器開始工作。如果

引腳上出現(xiàn)低電平(即有外部中斷請(qǐng)求信號(hào)),則停止工作。所以,門控方式下,定時(shí)器/計(jì)數(shù)器的啟動(dòng)受外部中斷請(qǐng)求的影響,可用來測(cè)量

引腳上出現(xiàn)正脈沖的寬度。2.工作方式1當(dāng)M1M0=01時(shí),定時(shí)器/計(jì)數(shù)器設(shè)定為工作方式1,構(gòu)成了16位定時(shí)器/計(jì)數(shù)器。此時(shí)THx、TLx都是8位加法計(jì)數(shù)器。其它與工作方式0相同。在方式1時(shí),計(jì)數(shù)器的計(jì)數(shù)值由下式確定:N=216-x=65

536-x計(jì)數(shù)范圍為1~65

536。定時(shí)器的定時(shí)時(shí)間由下式確定:T=N×Tcy=(65

536-x)

Tcy如果fosc=12

MHz,則Tcy=1

μs,定時(shí)范圍為1~65

536

μs。3.工作方式2圖2.15定時(shí)器/計(jì)數(shù)器方式2的邏輯結(jié)構(gòu)在工作方式2時(shí),計(jì)數(shù)器的計(jì)數(shù)值由下式確定:N=28-x=256-x計(jì)數(shù)范圍為1~256。定時(shí)器的定時(shí)值由下式確定:T=N×Tcy=(256-x)Tcy如果fosc=12

MHz,則Tcy=1

μs,定時(shí)范圍為1~256

μs。4.工作方式3圖2.16定時(shí)器/計(jì)數(shù)器方式3的邏輯結(jié)構(gòu)2.7

串行輸入/輸出口2.7.1

串行通信的基本概念圖2.17通信的兩種基本方式(a)并行通信;(b)串行通信1.異步傳送方式圖2.18串行異步傳送的字符格式(a)字符格式;(b)有空閑位的字符格式在串行異步傳送中,通信雙方必須事先約定:字符格式。雙方要事先約定字符的編碼形式、奇偶校驗(yàn)形式及起始位和停止位的規(guī)定。例如用ASCII碼通信,有效數(shù)據(jù)為7位,加一個(gè)奇偶校驗(yàn)位、一個(gè)起始位和一個(gè)停止位共10位。當(dāng)然停止位也可以大于1位。波特率(Baud

rate)。波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進(jìn)制位數(shù),單位為位/秒。它與字符的傳送速率(字符/秒)之間有以下關(guān)系:波特率=一個(gè)字符的二進(jìn)制編碼位數(shù)×字符/秒要求發(fā)送端與接收端的波特率必須一致。異步串行通信的傳送速率一般為50~9600波特,常用于計(jì)算機(jī)到CRT終端和字符打印機(jī)之間的通信、直通電報(bào)以及無線電通信的數(shù)據(jù)發(fā)送等。2.同步傳送圖2.19同步通信的格式圖2.20串行通信數(shù)據(jù)傳送的三種方式(a)單工方式;(b)半雙工方式;(c)全雙工方式2.7.2

MCS-51單片機(jī)的串行口1.功能與結(jié)構(gòu)表2.7串行口的工作方式SM0SM1工作方式功能波特率00方式0移位寄存器方式,用于并行I/O擴(kuò)展fosc

/1201方式18位通用異步接收器/發(fā)送器可變10方式29位通用異步接收器/發(fā)送器fosc

/32或fosc

/6411方式39位通用異步接收器/發(fā)送器可變圖2.21串行口方式0結(jié)構(gòu)示意圖串行口控制寄存器SCON的格式如下:SM0SM1SM2RENTB8RB8T1RISCON字節(jié)地址

98HD7D6D5D4D3D2D1D0SM0、SM1:由軟件置位或清零,用于選擇串行口四種工作方式。SM2:多機(jī)通信控制位。在方式2和方式3中,如SM2=1,則接收到的第9位數(shù)據(jù)(RB8)為0時(shí)不啟動(dòng)接收中斷標(biāo)志RI(即RI=0),并且將接收到的前8位數(shù)據(jù)丟棄;RB8為1時(shí),才將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI,產(chǎn)生中斷請(qǐng)求。當(dāng)SM2=0時(shí),則不論第9位數(shù)據(jù)為0或1,都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請(qǐng)求。在方式0時(shí),SM2必須為0。REN:允許串行接收控制位。若REN=0,則禁止接收;REN=1,則允許接收,該位由軟件置位或復(fù)位。TB8:發(fā)送數(shù)據(jù)D8位。在方式2和方式3時(shí),TB8為所要發(fā)送的第9位數(shù)據(jù)。在多機(jī)通信中,以TB8位的狀態(tài)表示主機(jī)發(fā)送的是地址還是數(shù)據(jù):TB8=0為數(shù)據(jù),TB8=1為地址;也可用作數(shù)據(jù)的奇偶校驗(yàn)位。該位由軟件置位或復(fù)位。RB8:接收數(shù)據(jù)D8位。在方式2和方式3時(shí),接收到的第9位數(shù)據(jù),可作為奇偶校驗(yàn)位或地址幀或數(shù)據(jù)幀的標(biāo)志。方式1時(shí),若SM2=0,則RB8是接收到的停止位。在方式0時(shí),不使用RB8位。TI:發(fā)送中斷標(biāo)志位。在方式0時(shí),當(dāng)發(fā)送數(shù)據(jù)第8位結(jié)束后,或在其它方式發(fā)送停止位后,由內(nèi)部硬件使TI置位,向CPU請(qǐng)求中斷。CPU在響應(yīng)中斷后,必須用軟件清零。此外,TI也可供查詢使用。RI:接收中斷標(biāo)志位。在方式0時(shí),當(dāng)接收數(shù)據(jù)的第8位結(jié)束后,或在其它方式接收到停止位的中間由內(nèi)部硬件使RI置位,向CPU請(qǐng)求中斷。同樣,在CPU響應(yīng)中斷后,也必須用軟件清零。RI也可供查詢使用。電源控制寄存器的格式如下:SMOD---------CF1CF0PDIDLD7D6D5D4D3D2D1

D0PCON字節(jié)地址

97HPCON的最高位SMOD是串行口波特率系數(shù)控制位。SMOD=1時(shí),波特率增大一倍。其余各位與串行口無關(guān)。2.串行口的工作方式發(fā)送CPU執(zhí)行一條寫SBUF的指令,如MOV

SBUF,A,就啟動(dòng)了發(fā)送過程。指令執(zhí)行期

間送來的寫信號(hào)打開三態(tài)門1,將經(jīng)內(nèi)部總線送來的8位并行數(shù)據(jù)寫入發(fā)送數(shù)據(jù)緩沖器SBUF。寫信號(hào)的同時(shí)啟動(dòng)發(fā)送控制器。此后,CPU與串行口并行工作。經(jīng)過一個(gè)機(jī)器周期,發(fā)送控制端SEND有效(高電平),打開門5和門6,允許RXD引腳發(fā)送數(shù)據(jù),TXD引腳

輸出同步移位脈沖。在時(shí)鐘信號(hào)S6觸發(fā)產(chǎn)生的內(nèi)部移位脈沖作用下,發(fā)送數(shù)據(jù)緩沖器中的數(shù)據(jù)逐位串行輸出。每一個(gè)機(jī)器周期從RXD上發(fā)送一位數(shù)據(jù)。故波特率為fosc/12。S6同時(shí)形成同步移位脈沖,一個(gè)機(jī)器周期從TXD上輸出。8位數(shù)據(jù)(一幀)發(fā)送完畢后,

SEND恢復(fù)低電平狀態(tài),停止發(fā)送數(shù)據(jù)。且發(fā)送控制器硬件置發(fā)送中斷標(biāo)志TI=1,向

CPU申請(qǐng)中斷。如要再次發(fā)送數(shù)據(jù),必須用軟件將TI清零,并再次執(zhí)行寫SBUF指令。接收在RI=0的條件下,將REN(SCON.4)置1就啟動(dòng)一次接收過程。此時(shí)RXD為串行數(shù)據(jù)接收端,TXD依然輸出同步移位脈沖。REN置1啟動(dòng)了接收控制器。經(jīng)過一個(gè)機(jī)器周期,接收控制端RECV有效(高電平),打開門6,允許TXD輸出同步移位脈沖。該脈沖控制外接芯片逐位輸入數(shù)據(jù),波特率為fosc/12。在內(nèi)部移位脈沖作用下,RXD上的串行數(shù)據(jù)逐位移入移位寄存器。當(dāng)8位數(shù)據(jù)(一幀)全部移入移位寄存器后,接收控制器使RECV失效,停止輸出移位脈沖,還發(fā)出"裝載SBUF"信號(hào),打開三態(tài)門2,將8位數(shù)據(jù)并行送入接收數(shù)據(jù)緩沖器SBUF中保存。與此同時(shí),接收控制器硬件置接收中斷標(biāo)志RI=1,向CPU申請(qǐng)中斷。CPU響應(yīng)中斷后,用軟件使RI=0,使移位寄存器開始接收下一幀信息,然后通過讀接收緩沖器的指令,例如MOV

A,SBUF,讀取SBUF中的數(shù)據(jù)。在執(zhí)行這條指令時(shí),CPU發(fā)出的"讀SBUF"信號(hào)打開三態(tài)門3,數(shù)據(jù)經(jīng)內(nèi)部總線進(jìn)入CPU。2)方式1圖2.22串行口方式1、2、3結(jié)構(gòu)示意圖發(fā)送CPU執(zhí)行一條寫SBUF指令便啟動(dòng)了串行口發(fā)送,數(shù)據(jù)從TXD輸出。在指令執(zhí)行期間,CPU送來“寫SBUF”信號(hào),將并行數(shù)據(jù)送入SBUF,并啟動(dòng)發(fā)送控制器。經(jīng)一個(gè)機(jī)器周期,發(fā)送控制端的

、DATA相繼有效,通過輸出控制門從TXD上逐

位輸出一幀信息。一幀信息發(fā)送完畢后,

、DATA

失效,發(fā)送控制器硬件置發(fā)送中斷標(biāo)志TI=1,向CPU申請(qǐng)中斷。接收允許接收控制位REN被置1,接受器就開始工作,跳變檢測(cè)器以所選波特率的16倍速率采樣RXD引腳上的電平。當(dāng)采樣到從1到0的負(fù)跳變時(shí),啟動(dòng)接收控制器接收數(shù)據(jù)。由于發(fā)送、接受雙方各自使用自己的時(shí)鐘,兩者的頻率總有少許差異。為了避免這種影響,控制器將1位的傳送時(shí)間分成16等份,位檢測(cè)器在7、8、9三個(gè)狀態(tài),也就是在信號(hào)中央采樣RXD三次。而且,三次采樣中至少兩次相同的值被確認(rèn)為數(shù)據(jù),這是為了減少干擾的影響。如果接收到的起始位的值不是0,則起始位無效,復(fù)位接收電路。如果起始位為0,則開始接收本幀其它各位數(shù)據(jù)??刂破靼l(fā)出內(nèi)部移位脈沖將RXD上的數(shù)據(jù)逐位移入移位寄存器,當(dāng)8位數(shù)據(jù)及停止位全部移入后,根據(jù)以下狀態(tài),進(jìn)行響應(yīng)操作。①如果RI=0、SM2=0,接收控制器發(fā)出"裝載SBUF"信號(hào),將8位數(shù)據(jù)裝入接收數(shù)據(jù)緩沖器SBUF,停止位裝入RB8,并置RI=1,向CPU申請(qǐng)中斷。②如果RI=0、SM2=1,那么只有停止位為1才發(fā)生上述操作。③RI=0、SM2=1且停止位為0,所接收的數(shù)據(jù)不裝入SBUF,數(shù)據(jù)將會(huì)丟失。④如果RI=1,則所接收的數(shù)據(jù)在任何情況下都不裝入SBUF,即數(shù)據(jù)丟失。無論出現(xiàn)哪一種情況,跳變檢測(cè)器將繼續(xù)采樣RXD引腳的負(fù)跳變,以便接收下一幀信息。3)方式2與方式3方式2、方式3都是9位異步通信接口,其結(jié)構(gòu)示意圖如圖2.22所示。發(fā)送或接收一幀信息由11位組成,其中1位起始位、9位數(shù)據(jù)位和1位停止位。方式2與方式3僅波特率不同,方式2的波特率為fosc/32(SMOD=1時(shí))或fosc/64(SMOD=0時(shí)),而方式3的波特率由定時(shí)器/計(jì)數(shù)器T1及SMOD決定。在方式2、方式3時(shí),發(fā)送、接收數(shù)據(jù)的過程與方式1基本相同,所不同的僅在于對(duì)第9位數(shù)據(jù)的處理上。發(fā)送時(shí),第9位數(shù)據(jù)由SCON中的TB8位提供。接收數(shù)據(jù)時(shí),當(dāng)?shù)?位數(shù)據(jù)移入移位寄存器后,將8位數(shù)據(jù)裝入SBUF,第9位數(shù)據(jù)裝入SCON中的RB8。3.波特率設(shè)置串行口的4種工作方式對(duì)應(yīng)著三種波特率模式。對(duì)于方式0,波特率是固定的,為fosc/12。對(duì)于方式2,波特率由振蕩頻率fosc和SMOD(PCON.7)所決定。其對(duì)應(yīng)公式為波特率=2SMOD×fosc/64當(dāng)SMOD=0時(shí),波特率為fosc/64;當(dāng)SMOD=1時(shí),波特率為fosc/32。對(duì)于方式1和方式3,波特率由定時(shí)器/計(jì)數(shù)器T1的溢出率和SMOD決定,即由下式確定:波特率=2SMOD×定時(shí)器/計(jì)數(shù)器T1溢出率/324.多機(jī)通信圖2.23主從式多機(jī)通信系統(tǒng)在主從式多機(jī)系統(tǒng)中,主機(jī)發(fā)出的信息有兩類,而且具有特征,能夠有所區(qū)分。一類為地址,用來確定需要和主機(jī)通信的從機(jī),特征是串行傳送的第9位數(shù)據(jù)為1;

另一類是數(shù)據(jù),特征是串行傳送的第9位數(shù)據(jù)為0。對(duì)從機(jī)來說,要利用SCON寄存器

中的SM2位的控制功能。在接收時(shí),若RI=0,則只要SM2=1,接收總能實(shí)現(xiàn);而若

SM2=0,則發(fā)送的第9位TB8必須為0接收才能進(jìn)行。因此,對(duì)于從機(jī)來說,在接收地

址時(shí),應(yīng)使SM2=1,以便接收到主機(jī)發(fā)來的地址,從而確定主機(jī)是否打算和自己通信,一經(jīng)確認(rèn)后,從機(jī)應(yīng)使SM2=0,以便接收TB8=0的數(shù)據(jù)。主從多機(jī)通信的過程如下:使所有的從機(jī)的SM2位置1,以便接收主機(jī)發(fā)來的地址。主機(jī)發(fā)出一幀地址信息,其中包括8位需要與之通信的從機(jī)地址,第9位為1。所有從機(jī)接收到地址幀后,各自將所接收到的地址與本機(jī)地址相比較,對(duì)于地址相同的從機(jī),使SM2位清零以接收主機(jī)隨后發(fā)來的所有信息;對(duì)于地址不符合的從

機(jī),仍保持SM2=1的狀態(tài),對(duì)主機(jī)隨后發(fā)來的數(shù)據(jù)不予理睬,直至發(fā)送新的地址幀。主機(jī)給已被尋址的從機(jī)發(fā)送控制指令和數(shù)據(jù)(數(shù)據(jù)幀的第9位為0)。2.8

MCS-51單片機(jī)的中斷系統(tǒng)2.8.1中斷的基本概念所謂中斷是指CPU對(duì)系統(tǒng)中或系統(tǒng)外發(fā)生的某個(gè)事件的一種響應(yīng)過程,即CPU暫時(shí)停止現(xiàn)行程序的執(zhí)行,而自動(dòng)轉(zhuǎn)去執(zhí)行預(yù)先安排好的處理該事件的服務(wù)子程序。當(dāng)處理結(jié)束后,再返回到被暫停程序的斷點(diǎn)處,繼續(xù)執(zhí)行原來的程序。實(shí)現(xiàn)這種中斷功能的硬件系統(tǒng)和軟件系統(tǒng)統(tǒng)稱為中斷系統(tǒng)。中斷系統(tǒng)是計(jì)算機(jī)的重要組成部分。實(shí)時(shí)控制、故障自動(dòng)處理時(shí)往往用到中斷系統(tǒng),計(jì)算機(jī)與外部設(shè)備間傳送數(shù)據(jù)及實(shí)現(xiàn)人機(jī)聯(lián)系也常常采用中斷方式。中斷系統(tǒng)需要解決以下基本問題:中斷源:中斷請(qǐng)求信號(hào)的來源。包括中斷請(qǐng)求信號(hào)的產(chǎn)生及該信號(hào)怎樣被CPU有效地識(shí)別。而且要求中斷請(qǐng)求信號(hào)產(chǎn)生一次,只能被CPU接收處理一次,即不能一次中斷申請(qǐng)被CPU多次響應(yīng)。這就涉及到中斷請(qǐng)求信號(hào)的及時(shí)撤除問題。中斷響應(yīng)與返回:CPU采集到中斷請(qǐng)求信號(hào)后,怎樣轉(zhuǎn)向特定的中斷服務(wù)子程序及執(zhí)行完中斷服務(wù)子程序怎樣返回被中斷的程序繼續(xù)正確地執(zhí)行。中斷響應(yīng)與返回的過程中涉及到CPU響應(yīng)中斷的條件、現(xiàn)場(chǎng)保護(hù)等問題。(3)優(yōu)先級(jí)控制:一個(gè)計(jì)算機(jī)應(yīng)用系統(tǒng),特別是計(jì)算機(jī)實(shí)時(shí)測(cè)控應(yīng)用系統(tǒng),往往有多個(gè)中斷源,各中斷源所要求的處理具有不同的輕重、緩急程度。與人處理問題的思路一樣,希望重要緊急的事件先處理,而且如果當(dāng)前處于正在處理某個(gè)事件的過程中,有更重要、更緊急的事件到來,就應(yīng)當(dāng)暫停當(dāng)前事件的處理,轉(zhuǎn)去處理新事件。這就是中斷系統(tǒng)優(yōu)先級(jí)控制所要解決的問題。中斷優(yōu)先級(jí)的控制形成了中斷嵌套。2.8.2

中斷源1.外部中斷外部中斷是指從單片機(jī)外部引腳

、輸入中斷請(qǐng)求信號(hào)的中斷,即外部中斷源有兩個(gè)。輸入/輸出的中斷請(qǐng)求、實(shí)時(shí)事件的中斷請(qǐng)求、掉電和設(shè)備故障的中斷請(qǐng)求都可以作為外部中斷源,從引腳

、

輸入。外部中斷請(qǐng)求

、

有兩種觸發(fā)方式:電平觸發(fā)及跳變(邊沿)觸發(fā)。這兩種觸發(fā)方式可以通過對(duì)特殊功能寄存器TCON編程來選擇。下面再給出TCON的位定義格式,并對(duì)與中斷有關(guān)的定義位予以說明。TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1

D0TCON字節(jié)地址

98HIT0(IT1):外部中斷0(或1)觸發(fā)方式控制位。IT0(或IT1)被設(shè)置為0,則選擇外部中斷為電平觸發(fā)方式;IT0(或IT1)被設(shè)置為1,則選擇外部中斷為跳變觸發(fā)方式。IE0(IE1):外部中斷0(或1)的中斷請(qǐng)求標(biāo)志位。當(dāng)IT0(或IT1)=0,即電平觸發(fā)方式時(shí),CPU在每個(gè)機(jī)器周期的S5P2采樣

(x=0,1)。若平,將直接觸發(fā)外部中斷。跳變觸發(fā)方式時(shí),若第一個(gè)機(jī)器周期采樣到引腳為低電引腳為高電平,第二個(gè)機(jī)器周期采樣到

引腳為低電平時(shí),由硬件置位IT0(或IT1),并以此

向CPU請(qǐng)求中斷。當(dāng)CPU響應(yīng)中斷轉(zhuǎn)向中斷服務(wù)程序時(shí)由硬件將IE0(或IE1)清

零。若把外部中斷設(shè)置為跳變觸發(fā)方式,CPU在每個(gè)機(jī)器周期都采樣

。為了保證檢測(cè)到負(fù)跳變,輸入到

引腳上的高電平與低電平至少應(yīng)保持1個(gè)機(jī)器周期。對(duì)于電平觸發(fā)的外部中斷,由于CPU對(duì)

引腳沒有控制作用,也沒有相應(yīng)的中斷請(qǐng)求標(biāo)志位,因此需要外接電路來撤除中斷請(qǐng)求信號(hào)。圖2.24撤除外部中斷請(qǐng)求的電路圖2.24是一種可行的參考方案。外部中斷請(qǐng)求信號(hào)通過D觸發(fā)器加到單片機(jī)引腳上。當(dāng)外部中斷請(qǐng)求信號(hào)使D觸發(fā)器的CLK端發(fā)生正跳變時(shí),由于D端接地,Q端輸出0,向單片機(jī)發(fā)出中斷請(qǐng)求。CPU響應(yīng)中斷后,利用一根口線,如P1.0作應(yīng)答線,在中斷服務(wù)程序中用兩條指令A(yù)NL

P1.0

#0FEHORL

P1.0

#01H來撤除中斷請(qǐng)求。第一條指令使P1.0為0,而P1口其它各位的狀態(tài)不變。由于P1.0與直接置1端相連,故D觸發(fā)器Q=1,撤

除了中斷請(qǐng)求信號(hào)。第二條指令將P1.0變成1,從而=1,使以后產(chǎn)生的新的外部中斷請(qǐng)求信號(hào)又能向單片機(jī)申請(qǐng)中斷。2.內(nèi)部中斷內(nèi)部中斷是單片機(jī)芯片內(nèi)部產(chǎn)生的中斷。MCS-51單片機(jī)(51子系列)的內(nèi)部中斷有定時(shí)器/計(jì)數(shù)器T0、T1的溢出中斷,串行口的發(fā)送/接收中斷。前已述及,當(dāng)定時(shí)器/計(jì)數(shù)器T0、T1的定時(shí)或計(jì)數(shù)到由硬件自動(dòng)置位TCON的TF0或TF1,便向CPU申請(qǐng)中斷。

CPU響應(yīng)中斷而轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件自動(dòng)將TF0或TF1清零,即CPU響應(yīng)中斷

后能自動(dòng)撤除中斷請(qǐng)求信號(hào)。當(dāng)串行口發(fā)送完或接收完一幀信息,由接口硬件自動(dòng)置位SCON的TI或RI,以此向CPU申請(qǐng)中斷,CPU響應(yīng)中斷后,接口硬件不能自動(dòng)將TI或

RI清零,即CPU響應(yīng)中斷后不能自動(dòng)撤除中斷請(qǐng)求信號(hào),需用戶采用軟件方法將TI或

RI清零,來撤除中斷請(qǐng)求信號(hào)。2.8.3

中斷控制1.中允控制MCS-51單片機(jī)中沒有專設(shè)的開中斷和關(guān)中斷指令,對(duì)各中斷源的中斷開放或關(guān)閉是由內(nèi)部的中斷允許寄存器IE的各位來控制的。IE各位的定義如下:EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1

D0IE字節(jié)地址

A8HEA:中斷允許總控位。EA=0,屏蔽所有的中斷請(qǐng)求;EA=1,開放中斷。EA的作用是使中斷允許形成兩級(jí)控制。即各中斷源首先受EA位的控制;其次還要受各中斷源自己的中斷允許總控位控制。ET2:定時(shí)器/計(jì)數(shù)器T2的溢出中斷允許位,只用于52子系列,51子系列無此位。ET2=0,禁止T2中斷;ET2=1,允許T2中斷。ES:串行口中斷允許位。ES=0,禁止串行口中斷;ES=1允許串行口中斷。ET1:定時(shí)器/計(jì)數(shù)器T1的溢出中斷允許位。ET1=0,禁止T1中斷;ET1=1,允許T1中斷。EX1:外部中斷1()的中斷允許位。EX1=0,禁止外部中斷1中斷;EX1=1,允許外部中斷1中斷。ET0:定時(shí)器/計(jì)數(shù)器T0的溢出中斷允許位。ET0=0,禁止T0中斷;ET0=1,允許T0中斷。EX0:外部中斷0()的中斷允許位。EX0=0,禁止外部中斷0中斷;EX0=1允許外部中斷0中斷。2.中斷優(yōu)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論