版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)原理、接口技術(shù)及應(yīng)用 有關(guān)本課程學(xué)習(xí)的幾點(diǎn)建議本課程的先期課程是數(shù)字電路與微機(jī)原理這方面知識掌握得不夠好的請自己補(bǔ)上本課程是一門實(shí)踐性、應(yīng)用性很強(qiáng)的學(xué)科僅僅聽懂還不夠,重在培養(yǎng)動(dòng)手能力硬件/軟件同樣重要、不可偏廢 硬件是骨架,軟件是靈魂預(yù)習(xí)、聽課、復(fù)習(xí)、作業(yè)、實(shí)驗(yàn)環(huán)環(huán)都重要用科學(xué)的方法學(xué)習(xí)單片機(jī)技術(shù)的應(yīng)用遍布國民經(jīng)濟(jì)與人民生活的各個(gè)領(lǐng)域1 微型計(jì)算機(jī)基礎(chǔ)知識 電子計(jì)算機(jī)是一種能對信息進(jìn)行加工處理的機(jī)器,它具有記憶、判斷和運(yùn)算能力,能模仿人類的思維活動(dòng),代替人的部分腦力勞動(dòng),并能對生產(chǎn)過程實(shí)現(xiàn)某種控制等等。它是20世紀(jì)發(fā)展最快的技術(shù)之一,自1946年世界上第一臺(tái)數(shù)字計(jì)算ENIAC(Elec
2、tronic Numerical Integrator And Computer)在美國的賓夕法尼亞大學(xué)問世以來,至今的60多年里得到了迅猛的發(fā)展和普及,可謂一日千里。1946年2月15日,第一臺(tái)電子數(shù)字計(jì)算機(jī)(ENIAC)問世,這標(biāo)志著計(jì)算機(jī)時(shí)代的到來。ENIAC是電子管計(jì)算機(jī),時(shí)鐘頻率僅有100 KHz,但能在1秒鐘的時(shí)間內(nèi)完成5000次加法運(yùn)算。與現(xiàn)代的計(jì)算機(jī)相比,有許多不足,但它的問世開創(chuàng)了計(jì)算機(jī)科學(xué)技術(shù)的新紀(jì)元,對人類的生產(chǎn)和生活方式產(chǎn)生了巨大的影響 。 按計(jì)算機(jī)元器件構(gòu)成的演變來劃分計(jì)算機(jī)的發(fā)展階段,則到目前為止計(jì)算機(jī)已經(jīng)歷了以下四個(gè)發(fā)展階段: 第一代電子管計(jì)算機(jī)(1946-195
3、7) 第二代晶體管計(jì)算機(jī)(1958-1964) 第三代集成電路計(jì)算機(jī)(1965-1971)第四代大規(guī)模集成電路計(jì)算機(jī)(1972-現(xiàn)在)計(jì)算機(jī)目前正朝著第五、第六代計(jì)算機(jī)發(fā)展。所謂第五代計(jì)算機(jī)是把信息采集、存儲(chǔ)、處理、通信同人工智能結(jié)合在一起的智能計(jì)算機(jī)系統(tǒng)。它能進(jìn)行數(shù)值計(jì)算或處理一般的信息,主要能面向知識處理,具有形式化推理、聯(lián)想、學(xué)習(xí)和解釋的能力,能夠幫助人們進(jìn)行判斷、決策、開拓未知領(lǐng)域和獲得新的知識。人機(jī)之間可以直接通過自然語言(聲音、文字)或圖形圖象交換信息。第六代計(jì)算機(jī)即生物計(jì)算機(jī),它體積小,功效高,在1平方毫米的面積上可容數(shù)億個(gè)電路,比目前的電子計(jì)算機(jī)提高了上百倍,能使生物本身固有的
4、自我修復(fù)機(jī)能得到發(fā)揮,這樣即使芯片出了故障也能自我修復(fù),可靠性很高。1.1 微型計(jì)算機(jī)概述1.1.1 微型計(jì)算機(jī)的基本概念微處理器(Microprocessor),簡稱MPU,是一個(gè)由算術(shù)邏輯運(yùn)算單元、控制器單元、寄存器組及內(nèi)部系統(tǒng)總線等單元組成的大規(guī)模集成電路芯片。微處理器加上同樣采用大規(guī)模集成電路制成的用于存儲(chǔ)程序和數(shù)據(jù)的存儲(chǔ)器以及與輸入輸出設(shè)備相連接的輸入輸出接口電路就構(gòu)成了微型計(jì)算機(jī)(Microcomputer)。以微型計(jì)算機(jī)為主體,配上輸入/輸出設(shè)備、外存儲(chǔ)設(shè)備、電源機(jī)箱以及基本系統(tǒng)軟件就可組成微型計(jì)算機(jī)系統(tǒng)。圖11 微型計(jì)算機(jī)基本組成框圖1.1.2 微型計(jì)算機(jī)的發(fā)展概況 通常,微型
5、計(jì)算機(jī)的發(fā)展是以微處理器的發(fā)展為表征的。以其字長和功能來分,微處理器的發(fā)展經(jīng)歷了如下幾個(gè)階段: 第一階段(1971年1973年)是4位和8位低檔微處理器 時(shí)代,通常稱為第一代。 第二階段(1974年1977年)是8位中高檔微處理器時(shí) 代,通常稱為第二代 。第三階段(19781984年)是16微處理器時(shí)代,通常稱 為第三代。第四階段(19851992年)是32位微處理器時(shí)代,又稱 為第四代。 第五階段(1993年以后)是64位奔騰(Pentium)系列微 處理器時(shí)代,通常稱為第五代。 1.1.3 微型計(jì)算機(jī)的分類(1)按處理器位數(shù)分類 微處理器的位數(shù)是由運(yùn)算器并行處理的二進(jìn)制位數(shù)所決定的。處理器
6、的位數(shù)越高,其性能就越強(qiáng)。4位機(jī) 8位機(jī) 16位機(jī) 32位機(jī) 64位機(jī) (2)按結(jié)構(gòu)分類 單片微型計(jì)算機(jī)(Single Chip Microcomputer) 將微處理器、存儲(chǔ)器、輸入輸出接口電路集成在一塊芯片上,稱為單片微型計(jì)算機(jī)或單片機(jī)。它具有體積小、可靠性高、成本低等特點(diǎn),廣泛應(yīng)用于儀器、儀表、家電、工業(yè)控制等領(lǐng)域。 單板微型計(jì)算機(jī)(Single Board Microcomputer) 將組成微型計(jì)算機(jī)的各功能部件都做在同一塊印刷電路板上,稱為單板微型計(jì)算機(jī)或單板機(jī)。它具有結(jié)構(gòu)緊湊、使用簡單、成本地等特點(diǎn),常用于工業(yè)控制和教學(xué)實(shí)驗(yàn)等領(lǐng)域。 個(gè)人計(jì)算機(jī)(Personal Computer
7、,簡稱PC機(jī)) 它是一種將一塊主機(jī)母板(內(nèi)含微處理器、內(nèi)存儲(chǔ)器、I/O接口等芯片)、若干I/O接口卡、外部存儲(chǔ)器、電源等部件組裝在一個(gè)機(jī)箱內(nèi),并配備顯示器、鍵盤、打印機(jī)等基本外部設(shè)備所組成的計(jì)算機(jī)系統(tǒng)。PC機(jī)具有功能強(qiáng)、配置靈活、軟件豐富等特點(diǎn),既可用于科學(xué)計(jì)算和數(shù)據(jù)處理,也可作為專用機(jī),用于實(shí)時(shí)控制和管理等。它是一種使用最為普及的微型計(jì)算機(jī)。1.2 常用的數(shù)制及編碼1.2.1 常用的數(shù)制(1) 十進(jìn)制數(shù) 十進(jìn)制數(shù)中有09十個(gè)數(shù)字符號,任何一個(gè)數(shù)的大小都可以用這十個(gè)數(shù)字符號的組合來表示。對于十進(jìn)制數(shù)D可用權(quán)展開式表示為其中Di是D的第i位數(shù)碼,是09等十個(gè)數(shù)碼中的一個(gè),基數(shù)為10,10i稱為十
8、進(jìn)制的權(quán)?!纠?1】十進(jìn)制數(shù)12.86可按權(quán)展開為對于十進(jìn)制數(shù)12.86也可寫為12.86D或(12.86)D。(2) 二進(jìn)制數(shù) 在二進(jìn)制數(shù)中只有0和1兩個(gè)數(shù)碼。對于二進(jìn)制數(shù)B可用權(quán)展開式表示為其中Bi可取0或1。基數(shù)為2,2i稱為二進(jìn)制的權(quán)。二進(jìn)制數(shù)的加減運(yùn)算中遵循逢二進(jìn)一、借一為二的規(guī)則?!纠?2】二進(jìn)制數(shù)101.01可按權(quán)展開為對于二進(jìn)制數(shù)101.01也可寫為101.01B或(101.01)B。(3) 十六進(jìn)制數(shù)在十六進(jìn)制數(shù)中,采用09、AF等十六個(gè)數(shù)碼,其中AF相應(yīng)的十進(jìn)制數(shù)為1015。對于16進(jìn)制數(shù)H可表示為 其中Hi是H的第i位數(shù)碼,是0F等16個(gè)數(shù)碼中的一個(gè),基數(shù)為16,16i稱
9、為十六進(jìn)制的權(quán)。 十六進(jìn)制的加減運(yùn)算中遵循逢十六進(jìn)一、借一為十六的規(guī)則?!纠?3】十六進(jìn)制數(shù)2BA.7E可按權(quán)展開為 同樣對于十六進(jìn)制數(shù)(2BA.7E)16也可寫為2BA.7EH或(2BA.7E)H。 二進(jìn)制數(shù)與十六進(jìn)制數(shù)之間存在有一種特殊關(guān)系,即2416,也就是說一位十六進(jìn)制數(shù)恰好可用四位二進(jìn)制數(shù)表示,且它們之間的關(guān)系是唯一的。所以,在計(jì)算機(jī)應(yīng)用中,雖然機(jī)器只能識別二進(jìn)制數(shù),但在數(shù)字的表達(dá)上更廣泛地采用十六進(jìn)制數(shù)。十 進(jìn) 制二 進(jìn) 制八 進(jìn) 制十 六 進(jìn) 制000011112102231133410044510155611066711177810001089100111910101012A1
10、1101113B12110014C13110115D14111016E15111117F16100002010表1-2 幾種進(jìn)位制的數(shù)碼對照 1.2.2 數(shù)制之間的轉(zhuǎn)換(1) 二進(jìn)制、十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) 二進(jìn)制、十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)時(shí),只要將二進(jìn)制數(shù)、或十六進(jìn)制數(shù)按相應(yīng)的權(quán)表達(dá)式展開,再按十進(jìn)制運(yùn)算規(guī)則求和,即可得到它們對應(yīng)的十進(jìn)制數(shù)。【例14】將二進(jìn)制數(shù)1101100.111轉(zhuǎn)換成十進(jìn)制數(shù)。解:(1101100.111)2126125123122 12-112-212-3 6432840.50.250.125 (108.875)10【例15】將十六進(jìn)制數(shù)19BC.8轉(zhuǎn)換成十進(jìn)制數(shù)。
11、解:(19BC.8)1611639162B161C160 816-1 40962304176120.5(6588.5)10(2) 十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制、十六進(jìn)制數(shù) 十進(jìn)制數(shù)整數(shù)和小數(shù)部分應(yīng)分別進(jìn)行轉(zhuǎn)換。整數(shù)部分的轉(zhuǎn)換采用的是除2取余法,直到商為0,余數(shù)按倒序排列,稱為“倒序法”。小數(shù)部分的轉(zhuǎn)換采用乘2取整法,直到小數(shù)部分為0,整數(shù)按順序排列,稱為“順序法”?!纠?6】將十進(jìn)制數(shù)61.125轉(zhuǎn)換為二進(jìn)制數(shù)。 解:整數(shù)部分 小數(shù)部分61/2=30 余數(shù)1(最低位) 0.12520.25 整數(shù)0(最高位)30/2=15 余數(shù)0 0.2520.5 整數(shù)015/2=7 余數(shù)1 0.521.0 整數(shù)1(最
12、低位)7/2=3 余數(shù)13/2=1 余數(shù)11/2=0 余數(shù)1(最高位)即 (61.125)10=(111101.001)2【例17】將十進(jìn)制數(shù)61.125轉(zhuǎn)換為十六進(jìn)制數(shù)。 解: 整數(shù)部分 小數(shù)部分61/16=3 余數(shù)D(最低位) 0.125162.0 整數(shù)2(最高位)3/16=0 余數(shù)3(最高位) 即 (61.125)10=(3D.2)16 也可將十進(jìn)制數(shù)先轉(zhuǎn)換為二進(jìn)制數(shù),再轉(zhuǎn)換為十六進(jìn)制數(shù);或先將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù),再轉(zhuǎn)換為二進(jìn)制數(shù)。(3) 二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù) 二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)的轉(zhuǎn)換原則是“四位合成一位”,即從小數(shù)點(diǎn)開始向左右兩邊以每四位為一組,不足四位時(shí)補(bǔ)0,然后每組
13、改成等值的一位十六進(jìn)制數(shù)即可。 【例18】將(1011111101.1001101)2轉(zhuǎn)換成十六進(jìn)制數(shù)。 解:001011111101.10011010 2 F D. 9 A即(1011111101.1001101)2(2FD.9A)16(4) 十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù) 十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的轉(zhuǎn)換原則是“一位分成四位”,即把1位十六進(jìn)制數(shù)轉(zhuǎn)換成對應(yīng)的4位二進(jìn)制數(shù),然后按順序連接即可。 【例19】將(FB6.DA3)16轉(zhuǎn)換為二進(jìn)制數(shù)。 解: F B 6. D A 3111110110110.110110100011即(FB6.DA3)16(111110110110.110110100011
14、)21.2.3 微型計(jì)算機(jī)常用的編碼 計(jì)算機(jī)不僅要處理數(shù)制計(jì)算問題,還要處理大量非數(shù)值問題。由于在計(jì)算機(jī)中數(shù)是用二進(jìn)制數(shù)表示的,計(jì)算機(jī)只能識別二進(jìn)制數(shù)碼。因此,不論是十進(jìn)制數(shù),還是英文字母、漢字以及其它信息(如語言、符號、聲音等)必須先轉(zhuǎn)換成二進(jìn)制代碼,才能讓計(jì)算機(jī)接受。這種把信息編成二進(jìn)制代碼的方法,稱為計(jì)算機(jī)的編碼。 通常計(jì)算機(jī)編碼分為數(shù)值編碼和字符編碼。(1)BCD碼(十進(jìn)制數(shù)的二進(jìn)制編碼) BCD(Binary Coded Decimal)碼是指每位十進(jìn)制數(shù)用4位二進(jìn)制數(shù)碼表示,使其既具有二進(jìn)制數(shù)的形式又具有十進(jìn)制數(shù)的特點(diǎn)。值得注意的是,四位二進(jìn)制數(shù)有16種狀態(tài),但BCD碼只選用10種
15、狀態(tài)來表示09這10個(gè)數(shù)碼,其余六個(gè)是多于的,應(yīng)該放棄不用。常用的BCD碼有8421碼、2421碼和余3碼等,其中最常用的為8421碼。BCD編碼自然簡單、書寫方便。例如十進(jìn)制數(shù)86的BCD編碼形式為10000110B,即86H?!纠?10】寫出十進(jìn)數(shù)976.93D對應(yīng)的8421BCD碼。 解:976.93D=1001 0111 0110.1001 0011BCD 【例111】寫出8421BCD碼101001.0110011BCD對應(yīng)的十進(jìn)制數(shù)。 解:101001.0110011BCD0010 1001.0110 0110BCD =29.66D 計(jì)算機(jī)的存儲(chǔ)單元通常以字節(jié)(8位二進(jìn)制)為最小單
16、位,很多操作也是以字節(jié)為單位進(jìn)行的,在一個(gè)字節(jié)中如何存放BCD碼有兩種方式。一種方式是在一個(gè)字節(jié)中存放兩個(gè)BCD碼,這種方式稱為壓縮BCD碼表示法。在采用壓縮BCD碼表示十進(jìn)制數(shù)時(shí),一個(gè)字節(jié)就表示兩位十進(jìn)制數(shù)。例如10000110B表示十進(jìn)制數(shù)86。另一種方式是一個(gè)字節(jié)存放一個(gè)BCD碼,即字節(jié)的高4位為0,低4位為十進(jìn)制數(shù)字的BCD碼,該方式稱為非壓縮BCD碼表示法。例如對于十進(jìn)制數(shù)86的非壓縮BCD碼表示為00001000 00000110B(2) ASCII碼 ASCII(American Standard Code for Information Interchange)碼是美國國家信息
17、交換標(biāo)準(zhǔn)代碼。這種編碼是字符編碼,利用7位二進(jìn)制數(shù)字“0”和“1”的組合碼,對應(yīng)著128個(gè)符號。031及127(共33個(gè))是控制字符或通訊專用字符(其余為可顯示字符),它們并沒有特定的圖形顯示,但會(huì)依不同的應(yīng)用程序,而對文本顯示有不同的影響;32126(共95個(gè))是字符(32sp是空格,有些教材將其歸入控制字符),其中4857為0到9十個(gè)阿拉伯?dāng)?shù)字,6590為26個(gè)大寫英文字母,97122號為26個(gè)小寫英文字母,其余為一些標(biāo)點(diǎn)符號、運(yùn)算符號等。(3)國標(biāo)碼 “國家標(biāo)準(zhǔn)信息交換用漢字編碼”(GB2312-80標(biāo)準(zhǔn)),簡稱國標(biāo)碼。國標(biāo)碼是指1980年中國制定的用于不同的具有漢字處理功能的計(jì)算機(jī)系統(tǒng)
18、間交換漢字信息時(shí)使用的編碼。國標(biāo)碼是二字節(jié)碼, 用兩個(gè)七位二進(jìn)制數(shù)編碼表示一個(gè)漢字。目前國標(biāo)碼收入6763個(gè)漢字, 其中一級漢字(最常用)3755個(gè), 二級漢字3008個(gè), 另外還包括682個(gè)西文字符、圖符。順便一提的是,在我國的臺(tái)灣地區(qū)采用的是另一套不同標(biāo)準(zhǔn)碼(BIG5碼),因此,兩岸的漢字系統(tǒng)及各種文件不能直接相互使用。1.3 無符號二進(jìn)制數(shù)的算術(shù)運(yùn)算和邏輯運(yùn)算1.3.1 二進(jìn)制的算術(shù)運(yùn)算(1) 二進(jìn)制加法 二進(jìn)制加法運(yùn)算規(guī)則如下: 00 = 0 01 = 1 10 = 1 11 = 0 (產(chǎn)生進(jìn)位)【例112】計(jì)算10100110B+10110100B 解:1 0 1 0 0 1 1 0
19、B +)1 0 1 1 0 1 0 0B 1 0 1 0 1 1 0 1 0B即 10100110B+10110100B101011010B(2) 二進(jìn)制減法二進(jìn)制數(shù)的減法規(guī)則如下: 000 011(產(chǎn)生借位) 101 110【例113】計(jì)算10100110B00110100B 解: 1 0 1 0 0 1 1 0B ) 0 0 1 1 0 1 0 0B 0 1 1 1 0 0 1 0B即 10100110B00110100B01110010B(3) 二進(jìn)制乘法二進(jìn)制乘法規(guī)則如下: 000010 100111【例114】計(jì)算1101B1001B 解法1: 1 1 0 1 ) 1 0 0 1 1
20、 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1即1101B1001B1110101B 對二進(jìn)制數(shù)而言,每左移一位相當(dāng)于乘以2,左移n位就相當(dāng)于乘以2n。(4) 二進(jìn)制除法 二進(jìn)制數(shù)除法的計(jì)算方法,與十進(jìn)制數(shù)除法類似,也由減法、上商等操作分步完成?!纠?15】計(jì)算1110101B1001B即1110101B1001B1101B 對二進(jìn)制數(shù)而言,每右移一位相當(dāng)于除以2,右移n位就相當(dāng)于除以2n。1.3.2 無符號數(shù)的表示范圍 (1) 無符號二進(jìn)制數(shù)的表示范圍 一個(gè)n位無符號二進(jìn)制數(shù)的表示范圍為02n1。例如一個(gè)8位二進(jìn)制數(shù)的表示范圍為0281,即00H0F
21、FH(0255)。如果運(yùn)算結(jié)果超出二進(jìn)制數(shù)的表示范圍,則會(huì)產(chǎn)生溢出,運(yùn)算結(jié)果也不準(zhǔn)確?!纠?16】計(jì)算11000101B10101001B 解: 1 1 0 0 0 1 0 1B +) 1 0 1 0 1 0 0 1B 1 0 1 1 0 1 1 1 0B即 11000101B10101001B101101110B 由上式可知,上面兩個(gè)8位二進(jìn)制數(shù)相加的結(jié)果為9位二進(jìn)制數(shù),超出了8位數(shù)的表示范圍。若僅取8位字長,則結(jié)果為01101110B,顯然是錯(cuò)誤的,這種情況就稱為溢出。 事實(shí)上,11000101B197D,10101001B169D,197169366,相加結(jié)果大于8位無符號二進(jìn)制數(shù)能夠表
22、示的最大值255,所以最高位的進(jìn)位丟失了,該進(jìn)位代表了256,所以最后的運(yùn)算結(jié)果為366256110,即01101110B。(2) 無符號二進(jìn)制數(shù)的溢出判斷 設(shè)無符號二進(jìn)制數(shù)的最高有效位Di的進(jìn)位(或借位)為Ci,則兩個(gè)無符號二進(jìn)制數(shù)相加(或相減)時(shí),若最高位產(chǎn)生進(jìn)位(或借位),即Ci1,就產(chǎn)生了溢出。在例116中,兩個(gè)8為無符號二進(jìn)制數(shù)相加,最高有效位(D7位)產(chǎn)生了進(jìn)位C71,故結(jié)果出現(xiàn)了溢出。1.3.3 二進(jìn)制數(shù)的邏輯運(yùn)算 邏輯運(yùn)算是在對應(yīng)的兩個(gè)二進(jìn)制位之間進(jìn)行的,與相鄰的高低位的值均無關(guān),即不存在進(jìn)位、借位等問題?;具壿嬤\(yùn)算包括“與”、“或”、“非”和“異或”4種運(yùn)算。(1) 邏輯與
23、運(yùn)算 邏輯與又稱邏輯乘,常用“”算符表示。邏輯與運(yùn)算法則為: 000 010 100 111即參加“與”操作的兩位中只要有一位為0,則“與”的結(jié)果就為0,僅當(dāng)兩位均為1時(shí),“與”的結(jié)果才為1?!纠?17】計(jì)算11000101B10101001B 解: 1 1 0 0 0 1 0 1B 1 0 1 0 1 0 0 1B 1 0 0 0 0 0 0 1B即 11000101B10101001B10000001B(2) 邏輯或運(yùn)算 邏輯或運(yùn)算又稱邏輯加,常用“”算符表示。邏輯或運(yùn)算的規(guī)則為: 000 011 101 111即參加“或”操作的兩位中只要有一位為1,則“或”的結(jié)果就為1,僅當(dāng)兩位均為0時(shí)
24、,“或”的結(jié)果才為0?!纠?18】計(jì)算11000101B10101001B 解: 1 1 0 0 0 1 0 1B 1 0 1 0 1 0 0 1B 1 1 1 0 1 1 0 1B即 11000101B10101001B11101101B(3) 邏輯非運(yùn)算 邏輯非運(yùn)算又稱邏輯取反,常采用上橫線“”運(yùn)算符表示。邏輯非運(yùn)算規(guī)則為: 【例119】計(jì)算 B解:只要對11000101B按位取反即可(4) 邏輯異或 邏輯異或又稱半加,是不考慮進(jìn)位的加法,常采用“”算符表示。邏輯異或的運(yùn)算規(guī)則為: 000 011 101 110即進(jìn)行操作的兩個(gè)二進(jìn)制位相同時(shí),結(jié)果為0;不同時(shí),結(jié)果為1?!纠?20】計(jì)算1
25、1000101B10101001B 解: 1 1 0 0 0 1 0 1B 1 0 1 0 1 0 0 1B 0 1 1 0 1 1 0 0B即 11000101B10101001B01101100B1.4 有符號二進(jìn)制數(shù)的表示及運(yùn)算1.4.1 有符號數(shù)的表示方法 在計(jì)算機(jī)中數(shù)的正負(fù)號只能由“0”和“1”表示。一般規(guī)定一個(gè)有符號數(shù)的最高位為符號位,該位為“0”表示正,該位為“1”表示負(fù)?!纠?21】1001100B在計(jì)算機(jī)中表示為01001100B 1001100B在計(jì)算機(jī)中表示為11001100B 我們把符號數(shù)值化了的數(shù)稱為機(jī)器數(shù),如01001100B和11001100B就是機(jī)器數(shù),而把原來
26、的數(shù)值稱為機(jī)器數(shù)的真值,如1001100B和1001100B。 機(jī)器數(shù)是計(jì)算機(jī)中數(shù)的基本形式,為了運(yùn)算方便,機(jī)器數(shù)通常有原碼、反碼和補(bǔ)碼三種形式。(1) 原碼 對于一個(gè)二進(jìn)制數(shù),用最高位作為該數(shù)的符號位,且用“0”表示“”號,“1”表示“”號,其余各位數(shù)表示其數(shù)值本身,則稱為原碼表示法。即在原碼表示法中,不論數(shù)的正負(fù),數(shù)值部分均保持原真值不變?!纠?22】求+20,20的原碼。 解:20原10100B0 0010100B(“”的符號位用0代替) 20原10100B1 0010100B(“”的符號位用1代替) 值得注意的是,在原碼表示法中,真值0的原碼可表示為兩種不同的形式,即0和0。0原000
27、00000B0原10000000B即 0的原碼表示不唯一。 原碼表示法的優(yōu)點(diǎn)是簡單、直觀、易于理解,與真值間的轉(zhuǎn)換比較方便。缺點(diǎn)是用計(jì)算機(jī)實(shí)現(xiàn)起來比較煩瑣,不僅要考慮是做加法還是做減法,還要考慮數(shù)的符號和絕對值的大小,這使運(yùn)算器的設(shè)計(jì)較為復(fù)雜,降低了運(yùn)算器的運(yùn)算速度。 (2)反碼 對正數(shù)而言,反碼的表示方法同原碼,即符號位為“0”,數(shù)值部分與真值相同;而對負(fù)數(shù)而言,反碼的符號位與原碼相同為“1”,數(shù)值部分為真值的各位按位取反。即若X原0Xn-1Xn-2X0,則X反X原若X原1Xn-1Xn-2X0,則X反1【例123】求+20,20的反碼。解:20反20原0 0010100B(正數(shù)的反碼同原碼)
28、 20反 B1 1101011B(符號位不變,其余按位取反) 注意,在反碼表示法中,同原碼一樣,數(shù)0也有兩種表示形式。0反00000000B0反11111111B(3)補(bǔ)碼 對于n位二進(jìn)制數(shù)X,補(bǔ)碼的定義如下: 從定義不難發(fā)現(xiàn),正數(shù)的補(bǔ)碼與原碼、反碼的表示是完全相同的,負(fù)數(shù)的補(bǔ)碼表示為該數(shù)的原碼除符號位外按位取反后最末位加1(即反碼1)。 與原碼、反碼不同,數(shù)0的補(bǔ)碼表示是唯一的。0補(bǔ) +0原000000000補(bǔ) -0反+111111111+11 00000000 00000000(對8位字長,進(jìn)位被舍掉) 注意,特殊數(shù)10000000B,該數(shù)在原碼中表示0,在反碼中表示127,在補(bǔ)碼中定義為
29、128,而對無符號數(shù),10000000B128【例124】求20和20的補(bǔ)碼20補(bǔ)20反20反00010100(正數(shù)的補(bǔ)碼同原碼)20補(bǔ)20反111101011B+111101100B 特別需要指出,在計(jì)算機(jī)中凡是帶符號的數(shù)一律用補(bǔ)碼表示,且符號參加運(yùn)算,其運(yùn)算結(jié)果也用補(bǔ)碼表示。若運(yùn)算結(jié)果的符號位為“0”,則表示結(jié)果為正數(shù),若運(yùn)算結(jié)果的符號位為“1”,則表示結(jié)果為負(fù)數(shù),它們是以補(bǔ)碼形式表示的。如果想用原碼表示,就要解決由補(bǔ)碼求原碼的問題。方法很簡單,只要對補(bǔ)碼再求補(bǔ)即可。即X原X補(bǔ)補(bǔ) 【例125】已知X補(bǔ)11101100B,求X。解:X原X補(bǔ)補(bǔ)10010100B X10100B201.4.2
30、補(bǔ)碼的運(yùn)算 兩個(gè)n位二進(jìn)制數(shù)補(bǔ)碼的運(yùn)算具有如下規(guī)則:XY補(bǔ)X補(bǔ)Y補(bǔ) (mod 2n) 即兩個(gè)n位二進(jìn)制數(shù)之和的補(bǔ)碼等于兩數(shù)補(bǔ)碼之和。 當(dāng)帶符號兩數(shù)采用補(bǔ)碼形式表示時(shí),進(jìn)行加法運(yùn)算可以把符號位和數(shù)值位一起進(jìn)行運(yùn)算(若符號位有進(jìn)位,則丟掉),結(jié)果為兩數(shù)之和的補(bǔ)碼形式。b) XY補(bǔ)X補(bǔ)Y補(bǔ) (mod 2n) (1.9) 即兩個(gè)n位二進(jìn)制數(shù)之差的補(bǔ)碼等于兩數(shù)補(bǔ)碼之差。 帶符號的兩個(gè)數(shù)采用補(bǔ)碼形式表示時(shí),進(jìn)行減法運(yùn)算可以把符號位和數(shù)值位一起進(jìn)行運(yùn)算(若符號位有借位,則丟掉)結(jié)果為兩數(shù)之差的補(bǔ)碼形式。c) XY補(bǔ)X補(bǔ)Y補(bǔ) (mod 2n) (1.10) 即兩個(gè)n位二進(jìn)制數(shù)之差的補(bǔ)碼等于第一個(gè)數(shù)的補(bǔ)碼與第二
31、個(gè)數(shù)負(fù)數(shù)的補(bǔ)碼之和。上式稱為“變補(bǔ)相加法”。 【例126】已知X81,Y60,求XY補(bǔ)。解法1:X補(bǔ)01010001B,Y補(bǔ)00111100B 由式(1.9),得 XY補(bǔ)00010101B解法2:X補(bǔ)01010001B,Y補(bǔ)11000100B 由式(1.10)得 XY補(bǔ)00010101B 注意,在字長為n位的機(jī)器中,最高位向上的進(jìn)位是自然丟失的,本例就是這樣的情況。解法1和解法2的結(jié)果完全一致,再次說明了當(dāng)兩個(gè)符號數(shù)均用補(bǔ)碼表示時(shí),減法運(yùn)算可以變?yōu)榧臃ㄟ\(yùn)算實(shí)現(xiàn)?!纠?27】已知X60,Y81,求XY補(bǔ)。解:X補(bǔ)00111100B,Y補(bǔ)01010001B Y補(bǔ)10101111B由式(1.10)得
32、 XY補(bǔ)11101011B 最高位D7位1,表明該數(shù)為負(fù)數(shù),將后面7位D6D0按位取反加1,得到真值為0010101B,即21D?!纠?28】已知X60,Y81,求XY補(bǔ)。解:X補(bǔ)00111100B,Y補(bǔ)01010001B 由式(1.8)得 XY補(bǔ)10001101B 兩個(gè)8位二進(jìn)制正數(shù)相加,其結(jié)果的符號位為1,即和為負(fù)數(shù),顯然是錯(cuò)誤的,原因是運(yùn)算結(jié)果超出了8位二進(jìn)制補(bǔ)碼數(shù)的表示范圍。對于一個(gè)n位帶符號的二進(jìn)制數(shù),其原碼、反碼和補(bǔ)碼都是有一定的表示范圍的。1.4.3 有符號數(shù)的表示范圍(1) 帶符號數(shù)的表示范圍 8位二進(jìn)制數(shù)的表示范圍原碼:11111111B01111111B,即127127反碼
33、:10000000B01111111B,即127127補(bǔ)碼:10000000B01111111B,即128127 當(dāng)8位二進(jìn)制數(shù)運(yùn)算結(jié)果超出上述范圍時(shí),就會(huì)產(chǎn)生溢出。 16位二進(jìn)制數(shù)的表示范圍原碼:FFFFH7FFFH,即3276732767反碼:8000H7FFFH,即3276732767補(bǔ)碼:8000H7FFFH,即3276832767 當(dāng)16位二進(jìn)制數(shù)運(yùn)算結(jié)果超出上述范圍時(shí),就會(huì)產(chǎn)生溢出。(2)帶符號數(shù)運(yùn)算時(shí)的溢出判斷 兩個(gè)帶符號數(shù)進(jìn)行加減運(yùn)算時(shí),運(yùn)算結(jié)果超出上述范圍,就發(fā)生了溢出錯(cuò)誤。顯然,溢出只會(huì)在兩個(gè)同符號數(shù)相加或兩個(gè)異符號數(shù)相減時(shí)發(fā)生。下述規(guī)則可用于判斷運(yùn)算結(jié)果是否溢出。 設(shè)最高
34、位的進(jìn)位(或借位)為Ci,次高位向最高位的進(jìn)位(或借位)為Ci-1,若CiCi-11 則結(jié)果產(chǎn)生溢出。即最高位和次高位的進(jìn)位(或借位)標(biāo)記一個(gè)為1,另一個(gè)為0時(shí),說明有溢出,否則,沒有溢出。 對于兩個(gè)8位二進(jìn)制數(shù)相加減時(shí),若C7C61,則結(jié)果有溢出?!纠?29】已知X=01111000B,Y=01101001B,求XY 解:X補(bǔ)01111000B,Y補(bǔ)01101001B 0 1 1 1 1 0 0 0B )0 1 1 0 1 0 0 1B 1 1 1 0 0 0 0 1B 由于C70,C61,C7C61,故有溢出。事實(shí)上,兩正數(shù)相加得負(fù)數(shù),顯然結(jié)果錯(cuò)誤?!纠?30】已知X60,Y81,計(jì)算XY
35、。解:X補(bǔ)11000100B,Y補(bǔ)01010001B Y補(bǔ)10101111B 由式(1.10) 1 1 0 0 0 1 0 0B )1 0 1 0 1 1 1 1B 1 0 1 1 1 0 0 1 1B 由于C71,C60,C7C61,故有溢出。事實(shí)上,負(fù)數(shù)減正數(shù)得正數(shù)(最高位的進(jìn)位1自然丟失),顯然結(jié)果錯(cuò)誤。另外,從6081141,可以看出結(jié)果超出了8位二進(jìn)制數(shù)的表示范圍,故產(chǎn)生溢出錯(cuò)誤。 注意,無符號數(shù)和帶符號數(shù)的溢出的條件是不一樣的,因?yàn)樗鼈兛杀硎緮?shù)的范圍不一樣。無符號數(shù)的溢出與否,僅由最高位向前是否有進(jìn)位(或借位)決定;而對有符號數(shù),則由最高位和次高位兩位的進(jìn)位(或借位)情況共同決定。
36、一旦產(chǎn)生溢出,計(jì)算機(jī)會(huì)產(chǎn)生一個(gè)溢出中斷,通知用戶進(jìn)行出錯(cuò)處理。1.5 常用數(shù)據(jù)單位(1)位(bit) 在計(jì)算機(jī)中最小的數(shù)據(jù)單位是二進(jìn)制的一個(gè)數(shù)位。計(jì)算機(jī)中最直接、最基本的操作就是對二進(jìn)制位的操作。我們把二進(jìn)制數(shù)的每一位叫一個(gè)字位,或叫一個(gè)bit。bit是計(jì)算機(jī)中最基本的存儲(chǔ)單元。(2)字節(jié)(Byte) 一個(gè)8位的二進(jìn)制數(shù)單元叫做一個(gè)字節(jié),或稱為Byte。字節(jié)是計(jì)算機(jī)中最小的存儲(chǔ)單元。其他容量單位還有千字節(jié)(KB)、兆字節(jié)(MB)、千兆字節(jié)(GB)以及兆兆字節(jié)(TB)。它們之間有下列換算關(guān)系:1B8bitsK(Kilo,千) 1KB1024B210BM(Mega,百萬,兆) 1MB1024KB2
37、20BG(Giga,十億) 1GB1024MB230BT(Tril,萬億)1TB1024GB240B(3)字 CPU通過數(shù)據(jù)總線一次存取、加工和傳送的數(shù)據(jù)稱字,一個(gè)字由若干個(gè)字節(jié)組成。(4)字長 一個(gè)字中包括二進(jìn)制數(shù)的位數(shù)叫字長。例如,一個(gè)字由兩個(gè)字節(jié)組成,則該字字長為16位。 較長的字長可以處理位數(shù)更多的信息,不同類型計(jì)算機(jī)的字長是不同的,“字長”是計(jì)算機(jī)功能的一個(gè)重要標(biāo)志,“字長”越長表示功能越強(qiáng)。字長是由CPU芯片決定的,例如,80286CPU字長為16位,即一個(gè)字長為兩個(gè)字節(jié),目前主流CPU的字長是64位。2 80C51單片機(jī)的基本結(jié)構(gòu)和工作原理2.1 80C51單片機(jī)的組成 (1)
38、中央處理器(CPU) 單片機(jī)中央處理器和通用微處理器基本相同,只是增設(shè)了“面向?qū)ο蟆钡奶幚砉δ?。如位處理、查表、多種跳轉(zhuǎn)、乘除法運(yùn)算、狀態(tài)檢測、中斷處理等,增強(qiáng)了實(shí)時(shí)性。(2) 存儲(chǔ)器 目前微型計(jì)算機(jī)和單片機(jī)的存儲(chǔ)器主要有兩種結(jié)構(gòu),即哈佛(Harvard)結(jié)構(gòu)和普林斯頓(Princeton)結(jié)構(gòu)。所謂哈佛結(jié)構(gòu),是將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器截然分開,分別尋址的結(jié)構(gòu);而普林斯頓結(jié)構(gòu),則是將程序和數(shù)據(jù)共用一個(gè)存儲(chǔ)器空間的結(jié)構(gòu)。80C51系列單片機(jī)采用前者。圖21 80C51單片機(jī)的基本組成框圖 程序存儲(chǔ)器(ROM) 程序存儲(chǔ)器用來存放程序和始終要保留的常數(shù)。常用的有片內(nèi)掩膜ROM、可編程ROM(PRO
39、M)、可擦除可編程ROM(EPROM)、電可擦除可編程型ROM(E2PROM)8031片內(nèi)沒有程序存儲(chǔ)器8051內(nèi)部設(shè)有4KB的掩模ROM程序存儲(chǔ)器8751是將8051片內(nèi)的ROM換成EPROM89C51則換成4KB的閃速EEPROM89S51結(jié)構(gòu)同89C51,4KB的閃速EEPROM可在線編程 增強(qiáng)型52、54、58系列的存儲(chǔ)容量為普通型分別為8KB、16KB、64KB 數(shù)據(jù)存儲(chǔ)器(RAM) 數(shù)據(jù)存儲(chǔ)存放程序運(yùn)行中所需要的常數(shù)和變量。51系列內(nèi)部RAM容量為128B,52系列為256B。(3) I/O接口 并行I/O接口 80C51單片機(jī)內(nèi)部有4個(gè)8位I/O接口,不僅可靈活地用作輸入或輸出,
40、而且還具有多種功能。 串行口 80C51單片機(jī)有一個(gè)全雙工的串行口,以實(shí)現(xiàn)單片機(jī)和其它設(shè)備間的串行通訊。該串行口還可作為同步移位器使用。 (4)時(shí)鐘電路 80C51單片機(jī)內(nèi)部有時(shí)鐘電路,但石英晶體和微調(diào)電容需外接,時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列。(5)中斷 80C51共有5個(gè)中斷源,即外部中斷2個(gè),定時(shí)器/計(jì)數(shù)器中斷2個(gè),串行口中斷1個(gè),全部中斷源分為兩個(gè)優(yōu)先級,優(yōu)先級的高低可通過編程實(shí)現(xiàn)。(6)定時(shí)器/計(jì)數(shù)器 80C51共有2個(gè)16位的定時(shí)器/計(jì)數(shù)器,以實(shí)現(xiàn)精確的定時(shí)或?qū)ν獠渴录挠?jì)數(shù)功能。 從以上內(nèi)容可以看出,單片機(jī)突破了常規(guī)的按邏輯功能劃分芯片,由多片構(gòu)成微型計(jì)算機(jī)的設(shè)計(jì)思想,將構(gòu)成計(jì)
41、算機(jī)的許多功能集成在一塊晶體芯片上,它已具備了計(jì)算機(jī)的基本功能,實(shí)際上已經(jīng)是一個(gè)簡單的微型計(jì)算機(jī)系統(tǒng)了。2.2 80C51單片機(jī)內(nèi)部結(jié)構(gòu)和引腳功能2.2.1 80C51的內(nèi)部結(jié)構(gòu) 80C51單片機(jī)的內(nèi)部結(jié)構(gòu)如圖22所示。它主要由以下幾個(gè)部分組成:1個(gè)8位的中央處理器;4KB的EPROM/ROM;128B的RAM;32條I/O線;2個(gè)定時(shí)器/計(jì)數(shù)器;1個(gè)具有5個(gè)中斷源、2個(gè)優(yōu)先級的中斷嵌套結(jié)構(gòu);用于多處理機(jī)通訊、I/O口擴(kuò)展或全雙工通用異步接收發(fā)器(UART);特殊功能寄存器(SFR);1個(gè)片內(nèi)振蕩器和時(shí)鐘電路。這些部件通過內(nèi)部總線連接起來,構(gòu)成一個(gè)完整的微型計(jì)算機(jī)。圖22 80C51的內(nèi)部結(jié)構(gòu)
42、圖2.2.2. 中央處理器(CPU) 中央處理器是單片機(jī)內(nèi)部的核心部件,它決定了單片機(jī)的主要功能特性。中央處理器從功能上可分為運(yùn)算器、控制器兩部分。(1)運(yùn)算器 運(yùn)算器由運(yùn)算邏輯單元ALU、累加器ACC(A)、暫存寄存器、B寄存器、程序狀態(tài)標(biāo)志寄存器PSW以及BCD碼運(yùn)算修正電路等組成。 算術(shù)邏輯單元ALU 算術(shù)邏輯單元ALU的結(jié)構(gòu)如圖23所示。ALU功能十分強(qiáng)大,不僅可以對8位變量進(jìn)行邏輯“與”、“或”、“異或”、循環(huán)求補(bǔ)、清零等基本操作,還可以進(jìn)行加、減、乘、除等基本運(yùn)算,并具有數(shù)據(jù)傳輸、程序轉(zhuǎn)移等功能。為了乘除運(yùn)算的需要,設(shè)置了B寄存器。圖23 ALU結(jié)構(gòu) 累加器ACC 累加器ACC(簡
43、稱累加器A)為一個(gè)8位寄存器,它是CPU中使用最頻繁的寄存器。大部分單操作數(shù)指令的操作數(shù)取自累加器A,很多雙操作數(shù)指令的一個(gè)操作數(shù)取自累加器A,加、減、乘和除等算術(shù)運(yùn)算指令的運(yùn)算結(jié)果都存放在累加器A或AB寄存器中,在變址尋址方式中累加器被作為變址寄存器使用。 需要注意的是,在80C51單片機(jī),還有一部分可以不經(jīng)過累加器A的傳送指令,如:寄存器直接尋址單元之間;直接尋址單元與間接尋址單元之間;寄存器、直接尋址單元、間接尋址單元與立即數(shù)之間的傳送指令。其目的是加快傳送速度,減少累加器A的堵塞現(xiàn)象。 B寄存器 B寄存器為8位寄存器,主要用于乘除指令中。乘法中,ALU的兩個(gè)輸入分別為A、B,運(yùn)算結(jié)果存
44、放在AB寄存器對中。A中存放積的低8位,B中存放積的高8位。除法中,A中存放被除數(shù),B中放入除數(shù),商數(shù)存放于A,余數(shù)存放于B。當(dāng)然B寄存器也可作為一個(gè)普通的內(nèi)部RAM單元使用。 程序狀態(tài)字 程序狀態(tài)字PSW(Program Status Word)是一個(gè)逐位定義的8位標(biāo)志寄存器,它保存指令執(zhí)行結(jié)果的特征信息,以供程序查詢和判別。其各位的定義如下: a. PSW.0(P,奇偶標(biāo)志位) 每個(gè)指令周期由硬件來置位或清零用以表示累加器A中1的位數(shù)的奇偶性,若累加器中1的位數(shù)為奇數(shù)則P1,否則P0。 b. PSW.2(OV,溢出標(biāo)志位) c. PSW.3、PSW.4(RS0、RS1,工作寄存器選擇控制位
45、) 該兩位通過軟件置“0”或“1”來選擇當(dāng)前工作寄存器組,具體定義見表21。RS1RS0所選中的寄存器組00寄存器0組(00H07H)01寄存器1組(08H0FH)10寄存器2組(10H17H)11寄存器3組(18H1FH)表21 工作寄存器組選擇 d. PSW.5(F0,用戶標(biāo)志位) 該位為用戶定義的狀態(tài)標(biāo)記,用戶根據(jù)需要用軟件對其置位或清零,也可以用軟件測試F0的狀態(tài)來實(shí)現(xiàn)分支轉(zhuǎn)移。 e. PSW.6(AC,輔助進(jìn)位標(biāo)志位) 進(jìn)行加法或減法操作時(shí),當(dāng)發(fā)生低四位向高四位進(jìn)位或借位時(shí),AC由硬件置位,否則AC位被清“0”。在進(jìn)行十進(jìn)制調(diào)整指令時(shí),將借助AC狀態(tài)進(jìn)行判斷。 f. PSW.7(CY
46、,進(jìn)位標(biāo)志位) 在算術(shù)運(yùn)算中它可作為進(jìn)位標(biāo)志,表示運(yùn)算結(jié)果中高位是否有進(jìn)位或借位的狀態(tài)。 (2)控制器 控制器是單片機(jī)的神經(jīng)中樞,與運(yùn)算器一起組成中央處理器。在80C51單片機(jī)中,控制器電路包括程序計(jì)數(shù)器PC、程序地址寄存器、指令寄存器、指令譯碼器、數(shù)據(jù)指針DPTR、堆棧指針SP、條件轉(zhuǎn)移邏輯電路、緩沖器以及定時(shí)控制電路等。其功能是控制指令的讀出、譯碼和執(zhí)行,協(xié)調(diào)單片機(jī)各部分正常工作。 程序計(jì)數(shù)器PC PC(Program Counter)是中央控制器中最基本的寄存器,是一個(gè)獨(dú)立的16位計(jì)數(shù)器,其內(nèi)容為將要執(zhí)行的指令地址,尋址范圍可達(dá)64KB。PC有自動(dòng)增一的功能,從而實(shí)現(xiàn)程序的順序執(zhí)行。PC
47、沒有地址,是不可尋址的,因此用戶不能對其進(jìn)行讀寫,但可以通過跳轉(zhuǎn)、調(diào)用、返回等指令改變其內(nèi)容,以實(shí)現(xiàn)程序的轉(zhuǎn)移。 數(shù)據(jù)指針DPTR 數(shù)據(jù)指針是80C51中一個(gè)功能比較特殊的16位寄存器。主要是作為片外數(shù)據(jù)存儲(chǔ)器尋址用的地址寄存器(間址尋址),故稱數(shù)據(jù)指針。DPTR也可作為訪問程序存儲(chǔ)器的基址寄存器。 2.2.3 時(shí)鐘電路及CPU工作時(shí)序(1)時(shí)鐘電路 80C51單片機(jī)時(shí)鐘電路如圖24所示,時(shí)鐘信號可由內(nèi)部振蕩方式或外部振蕩方式得到。圖24 單片機(jī)時(shí)鐘電路 內(nèi)部振蕩方式:在80C51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳XTALl,其輸出端為引腳XTAL2。只需要在片外通過XTAL1
48、和XTAL2引腳跨接晶體振蕩器和在引腳與地之間加接微調(diào)電容,形成反饋電路,振蕩器即可工作,如圖25所示。圖25 內(nèi)部振蕩方式 外部振蕩方式:把外部已有的時(shí)鐘信號引入單片機(jī)內(nèi)。該方式適宜用來使單片機(jī)的時(shí)鐘信號與外部信號保持同步。外部振蕩方式的外部電路如圖26所示。圖26 外部振蕩電路 需要注意,這里引入外部振蕩信號的方式是針對80C51系列單片機(jī)的,對于其它系列的單片機(jī)情況會(huì)有所不同,讀者應(yīng)參考該系列單片機(jī)的有關(guān)資料。 (2)CPU工作時(shí)序 首先介紹與CPU工作時(shí)序相關(guān)的幾個(gè)基本概念。 振蕩周期 振蕩周期指為單片機(jī)提供定時(shí)信號的振蕩源的周期或外部輸入時(shí)鐘的周期。振蕩周期為最小的時(shí)序單位,片內(nèi)的各
49、種微操作都以此周期為時(shí)序基準(zhǔn)。 時(shí)鐘周期 時(shí)鐘周期又稱作狀態(tài)周期或狀態(tài)時(shí)間S,它是振蕩周期的兩倍,它分為P1節(jié)拍和P2節(jié)拍,通常在P1節(jié)拍完成算術(shù)邏輯操作,在P2節(jié)拍完成內(nèi)部寄存器之間的傳送操作。 機(jī)器周期 一個(gè)機(jī)器周期由6個(gè)狀態(tài)組成,如果把一條指令的執(zhí)行過程分作幾個(gè)基本操作,則將完成一個(gè)基本操作所需的時(shí)間稱作機(jī)器周期。單片機(jī)的單周期指令執(zhí)行時(shí)間就為一個(gè)機(jī)器周期。由于一個(gè)狀態(tài)周期2個(gè)節(jié)拍組成,而一個(gè)機(jī)器周期由6個(gè)狀態(tài)組成,故一個(gè)機(jī)器周期共有12個(gè)振蕩脈沖周期,可依次表示為S1P1(狀態(tài)1拍1)、S1P2(狀態(tài)1拍2)、S6P2(狀態(tài)6拍2),因此機(jī)器周期就是振蕩脈沖的12分頻。 指令周期 指令
50、周期即執(zhí)行一條指令所占用的全部時(shí)間,通常為14個(gè)機(jī)器周期。它是最大的時(shí)序定時(shí)單位。80C51的指令周期根據(jù)指令的不同,可包含有一、二、四個(gè)機(jī)器周期。 當(dāng)外接12MHz的晶振時(shí),80C51單片機(jī)的四個(gè)周期分別為:振蕩周期1/12s,時(shí)鐘周期(狀態(tài)周期)1/6s,機(jī)器周期1s,指令周期14s。 80C51共有111條指令,全部指令按其長度可分為單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令。執(zhí)行這些指令所需要的機(jī)器周期數(shù)目是不同的。2.2.4 80C51單片機(jī)的存儲(chǔ)器結(jié)構(gòu) 80C51單片機(jī)系列的存儲(chǔ)器采用的是哈佛(Harvard)結(jié)構(gòu),即將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器截然分開,程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器各有自已的尋址方
51、式、尋址空間和控制系統(tǒng)。 在80C51單片機(jī)中,不僅在片內(nèi)駐留了一定容量的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器及眾多的特殊功能寄存器,而且還具有極強(qiáng)的外部存儲(chǔ)器擴(kuò)展能力,尋址范圍分別可達(dá)64 KB,尋址和操作簡單方便。圖28 80C51單片機(jī)的存儲(chǔ)器結(jié)構(gòu) 在物理上設(shè)有4個(gè)存儲(chǔ)器空間 程序存儲(chǔ)器:片內(nèi)程序存儲(chǔ)器; 片外程序存儲(chǔ)器; 數(shù)據(jù)存儲(chǔ)器:片內(nèi)數(shù)據(jù)存儲(chǔ)器; 片外數(shù)據(jù)存儲(chǔ)器。 在邏輯上設(shè)有3個(gè)存儲(chǔ)器地址空間 片內(nèi)、片外統(tǒng)一的64 KB程序存儲(chǔ)器地址空間; 片內(nèi)256B (或384B)數(shù)據(jù)存儲(chǔ)器地址空間; 片外64 KB的數(shù)據(jù)存儲(chǔ)器地址空間。(1) 程序存儲(chǔ)器 程序存儲(chǔ)器內(nèi)部結(jié)構(gòu)參見圖28,程序存儲(chǔ)器就是用來
52、存放編好的程序和表格常數(shù),它以程序計(jì)數(shù)器PC作地址指針。由于80C51單片機(jī)采用16位的程序計(jì)數(shù)器和16位的地址總線,因此,可尋址的地址空間為64 KB,且這64K地址是片內(nèi)外連續(xù)、統(tǒng)一的。 片內(nèi)程序存儲(chǔ)器和片外程序存儲(chǔ)器 整個(gè)程序存儲(chǔ)器可分為兩部分:片內(nèi)程序存儲(chǔ)器和片外程序存儲(chǔ)器,可由引腳 所接的電平高低決定。 時(shí),程序從片內(nèi)程序存儲(chǔ)器空間開始執(zhí)行,即訪問片內(nèi)程序存儲(chǔ)器;當(dāng)PC值超出片內(nèi)ROM容量時(shí),自動(dòng)轉(zhuǎn)向片外程序存儲(chǔ)器空間執(zhí)行。 時(shí),系統(tǒng)全部執(zhí)行片外程序存儲(chǔ)器程序。需要說明的是,80C51單片機(jī)內(nèi)部有4KBE2PROM,外部可擴(kuò)展64KB的ROM,但實(shí)際有效的程序存儲(chǔ)器容量是64KB,而
53、不是68KB。 對于片內(nèi)無ROM的80C31/80C32單片機(jī),應(yīng)將引腳固定接低電平,以迫使系統(tǒng)全部執(zhí)行片外程序存儲(chǔ)器程序。 程序存儲(chǔ)器特定的入口地址 程序存儲(chǔ)器的某些地址被保留用于特定的程序入口地址,如復(fù)位控制和中斷控制。表22為80C51單片機(jī)復(fù)位和中斷程序入口地址表。表22 復(fù)位和中斷入口地址表操 作入 口 地 址復(fù)位或非屏蔽中斷0000H外部中斷00003H定時(shí)器/計(jì)數(shù)器T0溢出000BH外部中斷10013H定時(shí)器/計(jì)數(shù)器T1溢出001BH串行口中斷0023H定時(shí)器/計(jì)數(shù)器T2/T2EX下降沿(80C52系列)002BH(2)數(shù)據(jù)存儲(chǔ)器 數(shù)據(jù)存儲(chǔ)器由隨機(jī)存取存儲(chǔ)器RAM構(gòu)成,用于存放隨
54、機(jī)數(shù)據(jù)。80C51單片機(jī)數(shù)據(jù)存儲(chǔ)器可分為片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器,它們是兩個(gè)獨(dú)立的地址空間。 片內(nèi)數(shù)據(jù)存儲(chǔ)器 片內(nèi)數(shù)據(jù)存儲(chǔ)器包括片內(nèi)數(shù)據(jù)RAM區(qū)和特殊功能寄存器(SFR)區(qū),如圖29所示。圖29 片內(nèi)數(shù)據(jù)存儲(chǔ)器地址空間分布圖 a. 片內(nèi)數(shù)據(jù)RAM區(qū) 片內(nèi)數(shù)據(jù)RAM區(qū)由工作寄存器區(qū)、位尋址區(qū)和用戶RAM區(qū)組成。 工作寄存器區(qū):片內(nèi)數(shù)據(jù)RAM區(qū)的031H共32個(gè)字節(jié)單元,是4個(gè)通用工作寄存器組(表21),每個(gè)組包含8個(gè)8位寄存器(R0R7)。在某一時(shí)刻,只能選用一個(gè)工作寄存器組使用。究竟哪一組工作是通過軟件對程序狀態(tài)字(PSW)中的RS0(PSW.3)、RS1(PSW.4)位的設(shè)置來實(shí)現(xiàn)的。
55、 位尋址區(qū):片內(nèi)數(shù)據(jù)RAM區(qū)的 20H2FH共16個(gè)字節(jié)單元,包含128位,是可位尋址的RAM區(qū)。這16個(gè)字節(jié)單元,既可進(jìn)行字節(jié)尋址,又可實(shí)現(xiàn)位尋址。表23 字節(jié)地址與位地址的關(guān)系 用戶RAM區(qū):片內(nèi)數(shù)據(jù)RAM區(qū)的30H7FH共80個(gè)字節(jié)單元,對用戶RAM區(qū)的使用沒有任何規(guī)定或限制,一般用于存放用戶數(shù)據(jù)及作堆棧使用,可以采用直接字節(jié)尋址的方法訪問。 對于80C52型單片機(jī),還有高128 B的數(shù)據(jù)RAM區(qū)。這一區(qū)域只能采用間接字節(jié)尋址的方法訪問,以區(qū)別于對特殊功能寄存器區(qū)(80HFFH)的訪問。 b. 特殊功能寄存器 內(nèi)部RAM的高128字節(jié)單元為特殊功能寄存器區(qū),其單元地址為80HFFH。因這
56、些寄存器的功能已作專門規(guī)定,即用以存放相應(yīng)功能部件的控制命令、狀態(tài)或數(shù)據(jù)。故稱為特殊功能寄存器(SFR)。 80C51系列單片機(jī)設(shè)有128 B片內(nèi)數(shù)據(jù)RAM結(jié)構(gòu)的特殊功能寄存器空間區(qū)。除程序計(jì)數(shù)器PC和4個(gè)通用工作寄存器組外,其余所有的寄存器都在這個(gè)地址空間內(nèi)。表24 特殊功能寄存器名稱、符號及地址一覽表(參見教材) 對特殊功能寄存器只能用直接尋址方式訪問,書寫時(shí)既可以使用寄存器符號,也可以使用寄存器單元地址。例如:ACC或0E0H,P1或90H,TMOD或89H。 在80C51/52型單片機(jī)中,有11/12個(gè)寄存器是可以位尋址的,它們的共同特點(diǎn)是字節(jié)地址正好能被8整除,而且字節(jié)地址與該字節(jié)最
57、低位的位地址相同。特殊功能寄存器的這些位大多有著專門的定義和用途。 C. 堆棧及堆棧指針 堆棧是在片內(nèi)數(shù)據(jù)RAM區(qū)中,數(shù)據(jù)先進(jìn)后出或后進(jìn)先出的區(qū)域。堆棧指針(stack pointer)在80C51單片機(jī)中存放當(dāng)前的堆棧棧頂?shù)拇鎯?chǔ)單元地址的一個(gè)8位寄存器。 堆棧共有兩種操作:進(jìn)棧和出棧。不論是數(shù)據(jù)進(jìn)棧還是數(shù)據(jù)出棧,都是對棧頂單元進(jìn)行的,即對棧頂單元的寫和讀操作。 80C51單片機(jī)的堆棧是向上生成的:進(jìn)棧時(shí),SP的內(nèi)容是增加的,即先SP1,后寫入數(shù)據(jù);出棧時(shí),SP的內(nèi)容是減少的,即先讀出數(shù)據(jù),后SP1 系統(tǒng)復(fù)位后,SP內(nèi)容為07H。如不重新定義,則以07H為棧底,壓棧的內(nèi)容從08H單元開始存放。
58、考慮到00H1FH單元為通用寄存器區(qū),20H2FH為位尋址區(qū),堆棧最好在內(nèi)部RAM的30H7FH中開辟,故通常在程序開始處將SP的內(nèi)容初始化為30H。 堆棧的使用有兩種方式。一種是自動(dòng)方式,即在調(diào)用子程序或中斷時(shí),斷點(diǎn)地址自動(dòng)進(jìn)棧。從子程序返回時(shí),斷點(diǎn)地址自動(dòng)彈回PC。 另一種是指令方式,即使用專用的堆棧操作指令執(zhí)行進(jìn)棧出棧操作,進(jìn)棧操作指令為PUSH,出棧操作指令為POP。例如:保護(hù)現(xiàn)場就是一系列指令方式的進(jìn)棧操作;而恢復(fù)現(xiàn)場就是一系列指令方式的出棧操作。 片外數(shù)據(jù)存儲(chǔ)器 片外數(shù)據(jù)存儲(chǔ)器是在外部存放數(shù)據(jù)的區(qū)域,這一區(qū)域用寄存器間接尋址的方法訪問,所用的寄存器為DPTR、R1或R0。當(dāng)用R1、
59、R0尋址時(shí),由于R0、R1為8位寄存器,因此最大尋址范圍為256 B;當(dāng)用DPTR尋址時(shí),由于DPTR為16位寄存器,因此最大尋址范圍為64 KB。 80C51單片機(jī)的外部數(shù)據(jù)存儲(chǔ)器和外部I/O口實(shí)行統(tǒng)一編址,并使用相同的 、 作選通控制信號,均使用 MOVX 指令訪問。 80C51單片機(jī)有16位地址線,最多可擴(kuò)展64KB外部數(shù)據(jù)存儲(chǔ)器,這和DPTR所能尋址的最大范圍一致。2.2.5 80C51單片機(jī)的引腳功能 80C51有40引腳雙列直插(DIP)和44引腳(QFP)封裝形式。圖210是80C51/80C52的封裝圖。(a)40引腳雙列直插(DIP) (b)44引腳(QFP)圖210 80C
60、51/80C52的封裝圖(1) 信號引腳介紹 P0.0P0.7 P0.0P0.7 是P0口8位雙向口線。P0口是漏極開路的雙向I/O口,當(dāng)使用片外存儲(chǔ)器(ROM及RAM)時(shí),作地址和數(shù)據(jù)總線分時(shí)復(fù)用。在程序校驗(yàn)期間,輸出指令字節(jié)(這時(shí),需加外部上拉電阻)。P0口(作為總線時(shí))能驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。 P1.0P1.7 P1.0P1.7是P1口的8位雙向口線。P1口是準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。在編程/校驗(yàn)期間,用做輸入低位字節(jié)地址。P1口可以驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。 P2.0P2.7 P2.0P2.7是P2口的8位雙向口線。P2口也是準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。 當(dāng)使用片外存儲(chǔ)器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024綠化苗木生態(tài)修復(fù)工程承包合同2篇
- 二零二五年度企業(yè)可持續(xù)發(fā)展顧問服務(wù)協(xié)議樣本2篇
- 二零二五年度辦公樓保潔服務(wù)外包協(xié)議5篇
- 二零二五年度國有企業(yè)技術(shù)人員試用期勞動(dòng)合同書2篇
- 二零二五年度兼職外教英語口語培訓(xùn)班合同3篇
- 二零二五年度農(nóng)村電商運(yùn)營推廣合同2篇
- 2025至2031年中國阻燃級增強(qiáng)AS行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025版酒店會(huì)議接待綠色出行服務(wù)合同3篇
- 二零二五年度個(gè)人承包船舶焊接維修合同樣本3篇
- 2025至2031年中國瓶蓋機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 安全生產(chǎn)事故舉報(bào)獎(jiǎng)勵(lì)制度
- 冠心病健康教育完整版課件
- 國家開放大學(xué)《理工英語1》單元自測8試題答案
- 重癥患者的容量管理課件
- 期貨基礎(chǔ)知識TXT
- 六年級上冊道德與法治課件-第一單元 我們的守護(hù)者 復(fù)習(xí)課件-人教部編版(共12張PPT)
- 《尖利的物體會(huì)傷人》安全教育課件
- 安全管理體系及保證措施
- 大學(xué)生自主創(chuàng)業(yè)證明模板
- 啟閉機(jī)試運(yùn)行記錄-副本
- 少兒美術(shù)畫畫 童畫暑假班 7歲-8歲 重彩 《北京烤鴨》
評論
0/150
提交評論