版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
汽車單片機(jī)與車載網(wǎng)絡(luò)技術(shù)劉鴻健主編化學(xué)工業(yè)出版社第一章汽車單片機(jī)原理第一節(jié)自動(dòng)控制概述第二節(jié)微型計(jì)算機(jī)基礎(chǔ)第三節(jié)單片機(jī)的組成第四節(jié)單片機(jī)指令系統(tǒng)第五節(jié)單片機(jī)中斷、定時(shí)器/計(jì)數(shù)器、串行通信第六節(jié)汽車單片機(jī)程序設(shè)計(jì)原理學(xué)習(xí)要求熟悉自動(dòng)控制系統(tǒng)的概念、組成和工作原理,掌握開環(huán)控制和閉環(huán)控制的特點(diǎn),了解常用自動(dòng)控制系統(tǒng)的分類和計(jì)算機(jī)控制系統(tǒng)的組成。熟悉微型計(jì)算機(jī)和單片機(jī)的概念,了解MCS-51單片機(jī)的組成和引腳,熟悉指令系統(tǒng),熟悉單片機(jī)的中斷、定時(shí)器/計(jì)數(shù)器和串行通信。掌握單片機(jī)程序設(shè)計(jì)基本方法,熟悉汽車單片機(jī)有關(guān)程序的設(shè)計(jì)原理。第一節(jié)自動(dòng)控制概述一、自動(dòng)控制的基本概念1.自動(dòng)控制的基本方法自動(dòng)控制系統(tǒng)有兩種最基本的形式,即開環(huán)控制和閉環(huán)控制。復(fù)合控制是將開環(huán)控制和閉環(huán)控制適當(dāng)結(jié)合的控制方式,可用來實(shí)現(xiàn)復(fù)雜且控制精度較高的控制任務(wù)。(1)開環(huán)控制開環(huán)控制是指控制裝置與被控對(duì)象之間只有順向作用而沒有反向聯(lián)系的控制過程。即被控量(系統(tǒng)輸出)不影響系統(tǒng)控制的控制方式稱為開環(huán)控制。所以,在開環(huán)控制中,不對(duì)被控量進(jìn)行任何檢測(cè),在輸出端和輸入端之間不存在反饋聯(lián)系。開環(huán)控制系統(tǒng)一般由控制器、執(zhí)行元件和控制對(duì)象組成,如圖1-1所示。下面以汽油發(fā)動(dòng)機(jī)噴油自動(dòng)控制為例說明。圖1-1開環(huán)控制系統(tǒng)方框圖(2)閉環(huán)控制若系統(tǒng)輸出量通過反饋環(huán)節(jié)返回來作用于控制部分,形成閉合環(huán)路,則這樣的控制稱為閉環(huán)控制系統(tǒng),又稱為反饋控制。閉環(huán)控制的方框圖如圖1-2所示。閉環(huán)控制的特點(diǎn)是在控制器和被控對(duì)象之間,不僅存在著正向作用,而且還存在著反饋?zhàn)饔?,即系統(tǒng)的輸出信號(hào)對(duì)被控制量有直接影響。在閉環(huán)控制中,被控量時(shí)刻被檢測(cè),并通過反饋通道送回到比較元件,與給定值進(jìn)行比較。閉環(huán)控制從原理上提供了實(shí)現(xiàn)高精度控制的可能性。圖1-2閉環(huán)控制系統(tǒng)方框圖
2.自動(dòng)控制的分類由于控制技術(shù)的廣泛應(yīng)用以及控制理論自身的發(fā)展,使得控制系統(tǒng)具有各種各樣的形式,從不同的角度出發(fā),分類的方式也不相同。以下簡(jiǎn)介常見的幾種分類。(1)按輸入信號(hào)特征分類①定值控制系統(tǒng):給定信號(hào)(給定值)為一常值的控制系統(tǒng)稱為定值控制系統(tǒng)。這類控制系統(tǒng)的任務(wù)是保證在擾動(dòng)作用下使被控變量始終保持在給定值上。汽車發(fā)動(dòng)機(jī)的缸溫控制是定值即定溫控制,一般缸溫設(shè)定在80OC,當(dāng)缸溫超過設(shè)定溫時(shí),發(fā)動(dòng)機(jī)ECU或溫控器將起動(dòng)冷卻液循環(huán)和風(fēng)扇散熱。②隨動(dòng)控制系統(tǒng):給定信號(hào)是一個(gè)未知變化量的閉環(huán)控制系統(tǒng)稱為隨動(dòng)控制系統(tǒng)。這類控制系統(tǒng)的任務(wù)是保證在各種條件下系統(tǒng)的輸出(被控變量)以一定精度跟隨給定信號(hào)的變化而變化,所以這類控制系統(tǒng)又稱為跟蹤控制系統(tǒng)。發(fā)動(dòng)機(jī)點(diǎn)火提前角的控制是典型的高精度、隨動(dòng)控制。它的給定信號(hào)是隨機(jī)信號(hào),就是發(fā)動(dòng)機(jī)的轉(zhuǎn)速信號(hào),發(fā)動(dòng)機(jī)轉(zhuǎn)速隨噴油量和負(fù)荷量等因素的變化而變化;發(fā)動(dòng)機(jī)轉(zhuǎn)速越高,點(diǎn)火提前角就越大;這是一個(gè)閉環(huán)控制,檢測(cè)反饋元件是發(fā)動(dòng)機(jī)曲軸轉(zhuǎn)速傳感器。③程序控制系統(tǒng):給定信號(hào)是一個(gè)按一定時(shí)間程序變化的時(shí)間函數(shù)的閉環(huán)控制系統(tǒng)稱為程序控制系統(tǒng)。汽車噴漆烤漆房的溫度控制是程序,其升溫、保溫、降溫過程都是按照預(yù)先設(shè)定的規(guī)律進(jìn)行控制的。(2)按變量分類①單變量控制系統(tǒng):如果只有一個(gè)被控變量和一個(gè)控制作用來控制被控對(duì)象,則稱該系統(tǒng)為單變量控制系統(tǒng),又稱為單輸入—單輸出系統(tǒng)。②多變量控制系統(tǒng):如果一個(gè)控制系統(tǒng)中的被控變量多于一個(gè),控制作用也多于一個(gè),而且各控制回路相互之間有耦合關(guān)系,則稱這類控制系統(tǒng)為多變量控制系統(tǒng),也稱為多輸入—多輸出控制系統(tǒng)。汽車發(fā)動(dòng)機(jī)電控系統(tǒng)就是一個(gè)多變量控制系統(tǒng),它有多個(gè)輸入信號(hào),如發(fā)動(dòng)機(jī)轉(zhuǎn)速信號(hào)、空氣流量信號(hào)、缸溫信號(hào)等;它要輸出多個(gè)變量,如噴油量、點(diǎn)火提前角等去控制發(fā)動(dòng)機(jī)。(3)按控制裝置分類①常規(guī)控制器:一般多指采用模擬電路來實(shí)現(xiàn)的控制器。簡(jiǎn)單的控制常采用這種控制器,線路簡(jiǎn)單,成本低。②計(jì)算機(jī)控制器:復(fù)雜的、多變量的、隨動(dòng)的自動(dòng)控制系統(tǒng)多采用以計(jì)算機(jī)為核心的控制器?,F(xiàn)代汽車中各電控單元都是采用以單片機(jī)為核心的控制器。3.對(duì)控制系統(tǒng)的基本要求
(1)穩(wěn)定性:穩(wěn)定性是指系統(tǒng)被控量偏離給定值而振蕩時(shí),系統(tǒng)抑制振蕩的能力。對(duì)于穩(wěn)定的系統(tǒng),隨著時(shí)間的增長(zhǎng),被控量將趨近于希望值。圖1-3(a)所示的系統(tǒng)是穩(wěn)定的,圖1-3(b)所示的系統(tǒng)是不穩(wěn)定的,可見穩(wěn)定性是保證系統(tǒng)正常工作的先決條件。
圖1-3自動(dòng)控制系統(tǒng)穩(wěn)定性示意圖(a)穩(wěn)定系統(tǒng)(b)不穩(wěn)定系統(tǒng)
(2)快速性:快速性是指被控量趨近希望值的快慢程度??焖傩院玫南到y(tǒng),它的過渡過程時(shí)間就短。圖1-4所示的系統(tǒng)②,其快速性要比系統(tǒng)①好。穩(wěn)定性和快速性是反映系統(tǒng)動(dòng)態(tài)過程好壞的尺度。圖1-4自動(dòng)控制系統(tǒng)快速性示意圖
(3)準(zhǔn)確性:準(zhǔn)確性是指過渡過程結(jié)束后被控量與希望值接近的程度。工程上常常從穩(wěn)、快、準(zhǔn)三個(gè)方面來評(píng)價(jià)自動(dòng)控制系統(tǒng)的總體性能。二、計(jì)算機(jī)控制技術(shù)1.計(jì)算機(jī)控制技術(shù)概念如果把自動(dòng)控制系統(tǒng)的控制器用計(jì)算機(jī)來代替,這樣就可以構(gòu)成計(jì)算機(jī)控制系統(tǒng)。如果計(jì)算機(jī)是微型計(jì)算機(jī),就組成微型計(jì)算機(jī)控制系統(tǒng),其基本框圖如圖1-5所示。在微型計(jì)算機(jī)控制系統(tǒng)中,只要運(yùn)用各種指令,就能編出符合某種控制規(guī)律的程序。微處理器執(zhí)行這樣的程序,就能實(shí)現(xiàn)對(duì)被控參數(shù)的控制。在計(jì)算機(jī)控制系統(tǒng)中,由于計(jì)算機(jī)的輸入和輸出信號(hào)都是數(shù)字信號(hào),而大部分被控對(duì)象的被控參數(shù)和控制量都是模擬信號(hào),因此在這樣的控制系統(tǒng)中,需要有將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)的A/D轉(zhuǎn)換器,以及將數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào)的D/A轉(zhuǎn)換器。計(jì)算機(jī)控制系統(tǒng)的控制過程通??蓺w結(jié)為以下三個(gè)步驟:(1)數(shù)據(jù)采集:對(duì)被控參數(shù)的瞬時(shí)值進(jìn)行檢測(cè)、采集,并將數(shù)據(jù)傳送給計(jì)算機(jī)。(2)實(shí)時(shí)決策:對(duì)采集的數(shù)據(jù)按程序進(jìn)行分析,與內(nèi)存數(shù)據(jù)比較,決定下一步控制過程。(3)實(shí)時(shí)控制:并按已定的控制規(guī)律,適時(shí)地對(duì)執(zhí)行單元發(fā)出控制信號(hào)。上述過程不斷重復(fù),使整個(gè)系統(tǒng)能夠按照一定的性能指標(biāo)進(jìn)行工作,并且對(duì)被控參數(shù)和設(shè)備本身出現(xiàn)的異常狀態(tài)及時(shí)監(jiān)督并做出迅速處理。應(yīng)用微型計(jì)算機(jī)控制是一個(gè)實(shí)時(shí)控制系統(tǒng),它包括硬件和軟件兩部分。發(fā)動(dòng)機(jī)的運(yùn)行過程是連續(xù)進(jìn)行的,
圖1-5微型計(jì)算機(jī)控制系統(tǒng)基本框圖
2.計(jì)算機(jī)控制的特點(diǎn)計(jì)算機(jī)控制系統(tǒng)有兩個(gè)類別,一類是通用計(jì)算機(jī)控制系統(tǒng),適用于高速、大量的數(shù)值計(jì)算,系統(tǒng)配置多,體積大。另一類是以單片機(jī)為主的嵌入式計(jì)算機(jī)控制系統(tǒng),它具有微型、嵌入和專用的特點(diǎn)。它以很小的“微型”體積“嵌入”控制對(duì)象的載體中,其配置的硬件和軟件以適用控制對(duì)象為度,系統(tǒng)是“專用”的。在制造工業(yè)、過程控制、通訊、儀器、儀表、家用電器、汽車、船舶、航空、航天、軍事裝備等方面均采用有嵌入式計(jì)算機(jī)控制技術(shù)。現(xiàn)代汽車控制系統(tǒng)均采用單片機(jī)控制系統(tǒng)。單片機(jī)控制系統(tǒng)具有以下特點(diǎn):(1)適合多變量控制。汽車發(fā)動(dòng)機(jī)電控系統(tǒng)是一多變量控制系統(tǒng)。(2)適合數(shù)據(jù)比較、查找控制。發(fā)動(dòng)機(jī)點(diǎn)火提前角度的確定是根據(jù)發(fā)動(dòng)機(jī)轉(zhuǎn)速和負(fù)荷等工況信息,查找內(nèi)存中的數(shù)據(jù)確定的。(3)適合計(jì)數(shù)控制。發(fā)動(dòng)機(jī)點(diǎn)火提前角度的控制執(zhí)行是靠計(jì)數(shù)控制實(shí)現(xiàn)的。(4)適合實(shí)時(shí)隨動(dòng)控制。汽車的加速控制是實(shí)時(shí)隨動(dòng)控制,只有腳踏加速踏板,發(fā)動(dòng)機(jī)的轉(zhuǎn)速隨即提高,這是實(shí)時(shí)控制噴油量實(shí)現(xiàn)的。(5)改變控制模式容易。通過修改軟件或內(nèi)存數(shù)據(jù),可以比較容易改變控制模式。(6)適合網(wǎng)絡(luò)化控制?,F(xiàn)代轎車有發(fā)動(dòng)機(jī)電控單元、防抱死制動(dòng)電控單元、動(dòng)力轉(zhuǎn)向電控單元、主動(dòng)懸架電控單元、防碰撞電控單元、導(dǎo)航電控單元等幾十種電控單元,可以聯(lián)網(wǎng)控制。第二節(jié)微型計(jì)算機(jī)基礎(chǔ)一、計(jì)算機(jī)的發(fā)展概況
人類在對(duì)客觀世界的“數(shù)量”認(rèn)識(shí)上,從記數(shù)、計(jì)數(shù)到計(jì)算,經(jīng)歷了漫長(zhǎng)的歷史階段,即從手工計(jì)算階段、機(jī)械計(jì)算階段,一直發(fā)展到現(xiàn)今的電子計(jì)算機(jī)計(jì)算階段。電子計(jì)算機(jī)的發(fā)展常以電子器件為標(biāo)志劃分為四個(gè)階段。第一代計(jì)算機(jī)(1945年-1958年),以電子管作為邏輯元件。主要用于科學(xué)和工程計(jì)算;運(yùn)算速度每秒幾千次至幾萬次。第二代計(jì)算機(jī)(1958年-1964年),以晶體管作為邏輯元件,用磁芯做主存儲(chǔ)器。體積縮小、功耗降低,提高了速度和可靠性;每秒運(yùn)算可達(dá)幾十萬次。第三代計(jì)算機(jī)(1964年-1971年),以集成電路作為基礎(chǔ)器件。體積、功耗、價(jià)格等進(jìn)一步降低;用半導(dǎo)體存儲(chǔ)代替了磁芯存儲(chǔ)器;運(yùn)算速度每秒可達(dá)幾十萬次到幾百萬次;在軟件方面,操作系統(tǒng)日臻完善。計(jì)算機(jī)設(shè)計(jì)思想已逐步走向標(biāo)準(zhǔn)化、模塊化和系列化,應(yīng)用范圍更加廣泛。第四代計(jì)算機(jī)(1971年至今),采用大規(guī)模集成電路和超大規(guī)模集成電路。用集成度更高的半導(dǎo)體芯片做主存儲(chǔ)器;運(yùn)算速度可達(dá)每秒百萬次至億次。計(jì)算機(jī)網(wǎng)絡(luò)的研究進(jìn)展迅速;系統(tǒng)軟件的發(fā)展不僅實(shí)現(xiàn)了計(jì)算機(jī)運(yùn)行的自動(dòng)化,而且正在向智能化方向邁進(jìn);各種應(yīng)用軟件層出不窮,極大地方便了用戶。現(xiàn)代計(jì)算機(jī)正在向以下四個(gè)方面發(fā)展。(1)巨型化:隨著科學(xué)技術(shù)發(fā)展的需要,許多部門要求計(jì)算機(jī)有更高的速度、更大的存儲(chǔ)容量,從而使計(jì)算機(jī)向巨型化發(fā)展。(2)微型化:計(jì)算機(jī)體積更小、重量更輕、價(jià)格更低、更便于應(yīng)用于各個(gè)領(lǐng)域,尤其是適用儀器儀表、家用電器、通信工具的數(shù)字化和智能化,工業(yè)控制的自動(dòng)化等。(3)網(wǎng)絡(luò)化:計(jì)算機(jī)網(wǎng)絡(luò)是計(jì)算機(jī)技術(shù)和通信技術(shù)互相滲透、不斷發(fā)展的產(chǎn)物。計(jì)算機(jī)連網(wǎng)可以實(shí)現(xiàn)計(jì)算機(jī)之間通信和資源共享。對(duì)于社會(huì),加速社會(huì)信息化的進(jìn)程。對(duì)工業(yè)機(jī)器群或生產(chǎn)線可實(shí)現(xiàn)計(jì)算機(jī)聯(lián)網(wǎng)控制。(4)多媒體化:現(xiàn)代計(jì)算機(jī)可以集文字、聲音、圖形、圖像和視頻處理為一體,使人們面對(duì)有聲有色、圖文并茂的信息交流環(huán)境。二、微型計(jì)算機(jī)和單片機(jī)電子計(jì)算機(jī)高速發(fā)展到今天,通常可分為巨型機(jī)、大型機(jī)、中型機(jī)、小型機(jī)和微型機(jī)五類。它們?cè)谙到y(tǒng)結(jié)構(gòu)和基本工作原理方面并無本質(zhì)的區(qū)別,只是在體積、性能和應(yīng)用領(lǐng)域方面有所不同。微型計(jì)算機(jī)簡(jiǎn)稱微機(jī),是計(jì)算機(jī)的一個(gè)重要分類。微型計(jì)算機(jī)不但具有其它計(jì)算機(jī)快速、精確、程序控制等特點(diǎn),最突出的是它還具有體積小、重量輕、功耗低、價(jià)格便宜等優(yōu)點(diǎn)。個(gè)人計(jì)算機(jī)簡(jiǎn)稱PC(PersonalComputer)機(jī),是微型計(jì)算機(jī)中應(yīng)用最為廣泛的一種,目前,它已經(jīng)像普通家用電器一樣深入到了家庭和社會(huì)生活的各個(gè)方面。圖1-6是關(guān)于微型計(jì)算機(jī)系統(tǒng)組成的示意圖。圖1-6微型計(jì)算機(jī)系統(tǒng)組成
1.微處理器微處理器就是傳統(tǒng)計(jì)算機(jī)的CPU,是集成在同一塊芯片上的具有運(yùn)算和邏輯控制功能的中央處理器,它是構(gòu)成微型計(jì)算機(jī)系統(tǒng)的核心部件。2.微型計(jì)算機(jī)以微處理器為核心,再配上存儲(chǔ)器、輸入和輸出接口電路(簡(jiǎn)稱I/O接口)和中斷系統(tǒng)等構(gòu)成的整體,稱為微型計(jì)算機(jī)。它們可集中裝在同一塊或數(shù)塊印刷電路板上,一般不包括外圍設(shè)備和軟件。3.微型計(jì)算機(jī)系統(tǒng)這是指以微型計(jì)算機(jī)為核心,配上輸入設(shè)備和輸出設(shè)備、電源和軟件等,構(gòu)成能獨(dú)立工作的完整計(jì)算機(jī)系統(tǒng)。軟件系統(tǒng)是微機(jī)系統(tǒng)所使用的各種程序的總稱。人們通過它對(duì)整機(jī)進(jìn)行控制并與微機(jī)系統(tǒng)進(jìn)行信息交換,使微機(jī)按照人的意圖完成預(yù)定的任務(wù)。4.單片微型計(jì)算機(jī)單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī)。單片機(jī)是將微處理器、存儲(chǔ)器、I/O接口和中斷系統(tǒng)集成在同一塊芯片上,具有完整功能的微型計(jì)算機(jī),這塊芯片就是其硬件。在實(shí)際應(yīng)用中,通常很難將單片機(jī)直接和被控對(duì)象進(jìn)行電氣連接,必須外加輸入電路、輸出電路和操作開關(guān)等,才能構(gòu)成一個(gè)單片機(jī)應(yīng)用系統(tǒng)。三、計(jì)算機(jī)中的數(shù)制和碼制為了了解單片機(jī)的基本工作原理,首先簡(jiǎn)介計(jì)算機(jī)中的數(shù)制和碼制。對(duì)計(jì)算機(jī)中的數(shù)據(jù)、地址和指令等的描述,常用到二進(jìn)制數(shù)和十六進(jìn)制數(shù)。(1)二進(jìn)制數(shù)在計(jì)算機(jī)內(nèi)部的基本工作電路是組合邏輯電路和時(shí)序邏輯電路,是按高低電平和二進(jìn)制規(guī)律工作。計(jì)算機(jī)處理和存儲(chǔ)的信息都是二進(jìn)制信息,并以8位二進(jìn)制數(shù)為一個(gè)單位,稱為一個(gè)字節(jié)(Byte,簡(jiǎn)寫B(tài))。對(duì)于一個(gè)較大的信息,可以用若干個(gè)字節(jié)組成。以二進(jìn)制數(shù)表示的數(shù)據(jù)或指令,是計(jì)算機(jī)可以直接使用的,故稱為機(jī)器數(shù),也稱機(jī)器碼。(2)十六進(jìn)制數(shù)在對(duì)計(jì)算機(jī)輸入數(shù)據(jù)、指令碼時(shí),如采用二進(jìn)制數(shù),則因位數(shù)太多,使用比較麻煩。在單片機(jī)上常用十六進(jìn)制數(shù)表示二進(jìn)制數(shù)。十六進(jìn)制數(shù)是微型計(jì)算機(jī)軟件編程時(shí)常采用的一種數(shù)制,其主要特點(diǎn)是:十六進(jìn)制數(shù)由16個(gè)數(shù)符構(gòu)成:0、1、2、…、9、A、B、C、D、E、F,其中A、B、C、D、E、F分別代表十進(jìn)制數(shù)的10、11、12、13、14、15。十六進(jìn)制數(shù)進(jìn)位規(guī)則是“逢十六進(jìn)一”。一般在數(shù)的后面加一個(gè)字母H表示是十六進(jìn)制數(shù)。8位二進(jìn)制數(shù)“00000000~11111111”,可用2位十六進(jìn)制數(shù)“00H~FFH”一一對(duì)應(yīng)來表示,這樣操作的位數(shù)就減少了。當(dāng)然,十六進(jìn)制數(shù)進(jìn)入計(jì)算機(jī)后要經(jīng)專門的電路和軟件再轉(zhuǎn)為二進(jìn)制數(shù)供計(jì)算機(jī)使用。在人工輸入數(shù)據(jù)時(shí),如果數(shù)據(jù)是十進(jìn)制數(shù),一般應(yīng)先人工轉(zhuǎn)為十六進(jìn)制數(shù),然后再輸入。第三節(jié)單片機(jī)的組成盡管各類單片機(jī)很多,但無論是從世界范圍或是從全國范圍來看,使用最為廣泛的應(yīng)屬Intel公司生產(chǎn)的MCS-51系列單片機(jī)。基于這一事實(shí),下面以應(yīng)用最為廣泛的MCS-51系列8位單片機(jī)(8031、8051、8751等)為研究對(duì)象,介紹單片機(jī)的硬件結(jié)構(gòu)和工作原理。MCS-51系列又分為51和52兩個(gè)子系列,并以芯片型號(hào)的最末位數(shù)字作為標(biāo)志。其中,51子系列是基本型,而52子系列則屬增強(qiáng)型。MCS-51單片機(jī)的典型芯片是8031、8051、8751。8051內(nèi)部有4KBROM,8751內(nèi)部有4KBEPROM,8031內(nèi)部無ROM;除此之外,三者的內(nèi)部結(jié)構(gòu)及引腳完全相同。因此,以8051為例,說明本系列單片機(jī)的內(nèi)部組成、信號(hào)引腳和指令系統(tǒng)。一、MCS-51單片機(jī)的基本組成MCS-51單片機(jī)的基本組成如圖1-7所示,從圖中可看出,MCS-51單片機(jī)組成結(jié)構(gòu)中包含CPU、片內(nèi)存儲(chǔ)器、4個(gè)并行I/O口、1個(gè)串行口、2個(gè)定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)和時(shí)鐘振蕩器等功能部件。圖1-78051單片機(jī)的基本組成
1.微處理器(CPU)微處理器是單片機(jī)的核心,如前面的的圖1-6所示,其內(nèi)含運(yùn)算器和控制器。運(yùn)算器是計(jì)算機(jī)的運(yùn)算部件,用于實(shí)現(xiàn)算術(shù)運(yùn)算和邏輯運(yùn)算,計(jì)算機(jī)的數(shù)據(jù)運(yùn)算和處理都在這里進(jìn)行??刂破魇怯?jì)算機(jī)的指揮控制部件,它控制計(jì)算機(jī)各部分自動(dòng)、協(xié)調(diào)地工作。2.存儲(chǔ)器存儲(chǔ)器是計(jì)算機(jī)的記憶部件,用于存放程序和數(shù)據(jù)。存儲(chǔ)器又分為片內(nèi)存儲(chǔ)器和片外存儲(chǔ)器。片外存儲(chǔ)器是片內(nèi)存儲(chǔ)器的擴(kuò)展。1KB=1024B,1MB=1024KB,1GB=1024MB存儲(chǔ)器可分為兩類:隨機(jī)存取存儲(chǔ)器RAM和只讀存儲(chǔ)器ROM。
3.定時(shí)/計(jì)數(shù)器8051共有2個(gè)16位的定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能,并以其定時(shí)或計(jì)數(shù)結(jié)果對(duì)計(jì)算機(jī)進(jìn)行控制。4.并行I/O口8051共有4個(gè)8位的I/O口(P0、P1、P2、P3),以實(shí)現(xiàn)數(shù)據(jù)的并行輸入/輸出。5.串行口MCS-51單片機(jī)有一個(gè)全雙工的串行口,以實(shí)現(xiàn)單片機(jī)和其它設(shè)備之間的串行數(shù)據(jù)傳送。該串行口功能較強(qiáng),既可作為全雙工異步通信收發(fā)器使用,也可作為同步移位器使用。6.中斷控制系統(tǒng)MCS-51單片機(jī)的中斷功能較強(qiáng),以滿足控制應(yīng)用的需要。8051共有5個(gè)中斷源,即外中斷兩個(gè),定時(shí)/計(jì)數(shù)中斷兩個(gè),串行中斷一個(gè)。全部中斷分為高級(jí)和低級(jí)共兩個(gè)優(yōu)先級(jí)別。7.時(shí)鐘電路MCS-51芯片的內(nèi)部有時(shí)鐘電路,但石英晶體和微調(diào)電容需外接。時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列。MCS-51芯片允許的晶振頻率一般為6MHz和12MHz。從上述內(nèi)容可以看出,MCS-51雖然是一個(gè)單片機(jī)芯片,但作為計(jì)算機(jī)應(yīng)該具有的基本部件它都包括,因此,實(shí)際上它已是一個(gè)簡(jiǎn)單的微型計(jì)算機(jī)了。8.內(nèi)部總線總線是用于傳送信息的公共途徑??偩€可分為數(shù)據(jù)總線、地址總線、控制總線。單片機(jī)內(nèi)的CPU、存儲(chǔ)器、I/O接口等單元部件都是通過總線連接到一起的。采用總線結(jié)構(gòu)可以減少信息傳輸線的根數(shù),提高系統(tǒng)可靠性,增強(qiáng)系統(tǒng)靈活性。二、MCS-51單片機(jī)的信號(hào)引腳MCS-51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,引腳排列如圖1-8所示。由于工藝及標(biāo)準(zhǔn)化等原因,芯片的引腳數(shù)目是有限制的,為了增加引腳的功能,有些引腳具有第二功能,帶括號(hào)的符號(hào)是第二功能符號(hào)。圖1-8MCS-51引腳排列圖
1.電源引腳VCC(40腳):芯片電源正極端,接+5V電源;VSS(20腳):芯片電源負(fù)極端或接地端。2.時(shí)鐘引腳XTAL1(19腳)和XTAL2(18腳):當(dāng)使用芯片內(nèi)部時(shí)鐘時(shí),外接石英晶體和微調(diào)電容;采用外部振蕩器時(shí),XTAL1接地,XTAL2為外部振蕩信號(hào)的輸入端。3.I/O口引腳8051共有4個(gè)8位的并行I/O口,即P0口、P1口、P2口、P3口。P0口:P0.0~P0.7(39~32腳),8位雙向I/O口線。此口在CPU的控制下,可以選為雙向數(shù)據(jù)總線口,可以輸出或輸入數(shù)據(jù);也可選為地址總線的低8位輸出線口。P1口:P1.0~P1.7(1~8腳),8位雙向I/O口線。僅有雙向數(shù)據(jù)總線口功能。P2口:P2.0~P2.7(28~21腳),8位雙向I/O口線。此口在CPU的控制下,可以選為雙向數(shù)據(jù)總線口;也可選為地址總線的高8位輸出線口。P3口:P3.0~P3.7(10~17腳),8位雙向I/O口線。雙向數(shù)據(jù)總線口和第二功能口。第二功能口見表1-1。
引腳第二功能符號(hào)與名稱引腳第二功能符號(hào)與名稱P3.0RXD串行數(shù)據(jù)接收端P3.4T0定時(shí)器/計(jì)數(shù)器0外部輸入端P3.1TXD串行數(shù)據(jù)發(fā)送端P3.5T1定時(shí)器/計(jì)數(shù)器1外部輸入端P3.2外部中斷0請(qǐng)求輸入端P3.6外部數(shù)據(jù)存儲(chǔ)器寫選通信號(hào)輸出端P3.3外部中斷1請(qǐng)求輸入端P3.7外部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸出端表1-1P3口各引腳與第二功能表4.控制信號(hào)引腳ALE/(30腳):ALE是地址鎖存控制信號(hào)。在訪問外部存儲(chǔ)器(RAM或ROM)時(shí),ALE用于控制把P0口輸出的低8位地址鎖存起來,以實(shí)現(xiàn)低位地址和數(shù)據(jù)的隔離。此外,由于ALE是以晶振1/6的固定頻率輸出的正脈沖,因此,可作為外部時(shí)鐘或外部定時(shí)脈沖使用。第二功能是在對(duì)8751的EPROM編程時(shí),是編程脈沖的輸入端。
(29腳):在訪問外部程序存儲(chǔ)器時(shí),此端輸出低電平,作為外部程序存儲(chǔ)器的讀選通信號(hào)。
/VPP(31腳):為內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器的選擇控制信號(hào)。=1,訪問內(nèi)部程序存儲(chǔ)器,并可延至外部程序存儲(chǔ)器。=0,訪問外部程序存儲(chǔ)器。第二功能VPP是在對(duì)8751的EPROM編程時(shí),是編程電壓(21V)的輸入端。RST/VPD(9腳):復(fù)位信號(hào)輸入端,用以完成單片機(jī)的復(fù)位初始化操作。第二功能VPD是備用電源輸入端,當(dāng)主電源VCC端口斷電期間,備用電源經(jīng)VPD端向片內(nèi)RAM供電,保證存儲(chǔ)在RAM中的數(shù)據(jù)不至丟失。三、存儲(chǔ)器和地址空間MCS-51單片機(jī)存儲(chǔ)器結(jié)構(gòu)采用哈佛型結(jié)構(gòu),即將程序存儲(chǔ)器(ROM)和數(shù)據(jù)存儲(chǔ)器(RAM)分開,它們有各自獨(dú)立的存儲(chǔ)空間、尋址機(jī)構(gòu)和尋址方式。其典型結(jié)構(gòu)如圖1-9所示。1.程序存儲(chǔ)器計(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位,因此,可尋址的地址空間為64KB。8051程序存儲(chǔ)器的空間地址使用有三種方法,如圖1-9(a)所示。第一種方法:?jiǎn)为?dú)使用片內(nèi)ROM。第二種方法:片內(nèi)ROM+片外ROM。第三種方法:完全使用片外ROM。MCS-51單片機(jī)有6個(gè)程序的特殊入口地址,1個(gè)單片機(jī)復(fù)位入口和5個(gè)中斷入口,如圖1-9(a)中左側(cè)所示,每一個(gè)入口有一個(gè)確定的地址。單片機(jī)上電或復(fù)位后,程序從復(fù)位入口0000H開始執(zhí)行。程序在執(zhí)行過程中,5個(gè)中斷源中如果有中斷請(qǐng)求,程序則轉(zhuǎn)到相應(yīng)的中斷入口地址,執(zhí)行中斷程序。圖1-98051存儲(chǔ)器的地址空間2.數(shù)據(jù)存儲(chǔ)器MCS-51單片機(jī)片內(nèi)、外數(shù)據(jù)存儲(chǔ)器是兩個(gè)獨(dú)立的地址空間,分別單獨(dú)編址,如圖1-9(b)所示。片內(nèi)數(shù)據(jù)存儲(chǔ)器分為兩部分:一部分是用戶存儲(chǔ)數(shù)據(jù)空間:共有128個(gè)字節(jié),地址范圍00H~7FH。內(nèi)有工作寄存器區(qū)(00H~1FH)、位尋址區(qū)(20H~2FH)和數(shù)據(jù)區(qū)存儲(chǔ)區(qū)(30H~7FH)。另一部分是專用寄存器空間:共有128個(gè)字節(jié),地址范圍80H~FFH,內(nèi)有特殊功能寄存器SFR。SFR呈離散分布。各有關(guān)區(qū)分述如下。(1)工作寄存器區(qū)00H~1FH存儲(chǔ)單元為工作寄存器區(qū)。工作寄存器也稱通用寄存器。工作寄存器分成4組,每組都有8個(gè)寄存器,用R0~R7來表示。程序中每次指令只用1組。工作寄存器用于臨時(shí)寄存8位數(shù)據(jù),常用來存放程序需要的初始數(shù)據(jù)。(2)位尋址區(qū)20H~2FH存儲(chǔ)單元是位尋址區(qū),即可按字節(jié)尋址,又可按位尋址。這16個(gè)單元共有16×8=128位,每一位都賦予了一個(gè)位地址,位地址編號(hào)00H~7FH,位地址編號(hào)在位尋址指令中使用。位尋址區(qū)的每一位都可當(dāng)作軟件觸發(fā)器或軟件開關(guān),由程序直接進(jìn)行位處理。通常可以把各種程序狀態(tài)標(biāo)志、位控制變量存于位尋址區(qū)內(nèi)。(3)數(shù)據(jù)存儲(chǔ)區(qū)30H~7FH數(shù)據(jù)存儲(chǔ)區(qū),也是用戶RAM區(qū),共80個(gè)單元。由于工作寄存器區(qū)、位尋址區(qū)、數(shù)據(jù)存儲(chǔ)區(qū)統(tǒng)是統(tǒng)一編址,使用同樣的指令訪問,這三個(gè)區(qū)的單元既有自己獨(dú)特的功能,又可統(tǒng)一調(diào)度使用。因此,前兩個(gè)區(qū)未使用的單元也可作為用戶RAM單元使用,使容量較小的片內(nèi)RAM得以充分利用。堆棧所需要的存儲(chǔ)單元由設(shè)計(jì)者在數(shù)據(jù)存儲(chǔ)區(qū)內(nèi)選定。(4)特殊功能寄存器特殊功能寄存器SFR專用于控制、管理片內(nèi)算術(shù)邏輯部件、并行I/O口、串行I/O口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等功能模塊的工作。用戶在編程時(shí)可以置數(shù)設(shè)定。在51系列單片機(jī)中,各專用寄存器(PC例外)與片內(nèi)RAM統(tǒng)一編址,每個(gè)SFR占有一個(gè)存儲(chǔ)單元,它們呈離散分布。尋址的方式有寄存器尋址、直接字節(jié)尋址和位尋址。特殊功能寄存器(SFR)的名稱、符號(hào)和地址見表1-2。特殊功能寄存器名稱SFR符號(hào)地址累加器ACCE0HB寄存器BF0H程序狀態(tài)字DSWD0H堆棧指針SP81H數(shù)據(jù)寄存器指針(低8位)DPL82H數(shù)據(jù)寄存器指針(高8位)DPH83HP0口鎖存器P080HPl口鎖存器P190HP2口鎖存器P2A0H表1-2特殊功能寄存器(SFR)的名稱、符號(hào)和地址P3口鎖存器P3B0H中斷優(yōu)先級(jí)控制寄存器IPB8H中斷允許控制寄存器IEA8H定時(shí)器/計(jì)數(shù)器方式選擇寄存器TMOD89H定時(shí)器/計(jì)數(shù)器控制寄存器TCON88H定時(shí)器/計(jì)數(shù)器0(高字節(jié))TH08CH定時(shí)器/計(jì)數(shù)器0(高字節(jié))TL08AH定時(shí)器/計(jì)數(shù)器1(高字節(jié))TH18DH定時(shí)器/計(jì)數(shù)器1(低字節(jié))TL18BH串行控制寄存器SCON98H串行數(shù)據(jù)緩沖器SBUF99H電源控制寄存器PCON87H片外數(shù)據(jù)存儲(chǔ)器一般是16位編址,51單片機(jī)可擴(kuò)展片外64KB空間的數(shù)據(jù)存儲(chǔ)器,地址范圍為0000H~FFFFH,它與程序存儲(chǔ)器的地址空間是重合的,但兩者的尋址指令和控制線不同。四、并行輸入/輸出端口MCS-51有4個(gè)并行輸入/輸出端口,分別命名為P0、P1、P2、P3。每個(gè)端口都由8位數(shù)據(jù)輸出鎖存器和驅(qū)動(dòng)電路、8位數(shù)據(jù)輸入緩沖器組成。每個(gè)端口的8位數(shù)據(jù)輸出鎖存器也是該端口的特殊功能寄存器,與端口的命名同名,也稱為P0、P1、P2、P3,見表1-2。CPU輸出數(shù)據(jù)可以在8位數(shù)據(jù)輸出鎖存器中鎖存,外來數(shù)據(jù)輸入可以在8位數(shù)據(jù)輸入緩沖器中得到緩沖。MCS-51單片機(jī)有不少指令可直接進(jìn)行端口操作。1.P0口(P0.0~P0.7,第39~32腳)(1)P0口結(jié)構(gòu)P0口是一個(gè)三態(tài)雙向口,可作為地址/數(shù)據(jù)分時(shí)復(fù)用口,也可作為通用I/O接口。其1位的結(jié)構(gòu)原理如圖1-10中所示。圖中虛線的左側(cè)為單片機(jī)內(nèi)部電路,右側(cè)為外部電路。P0口由8個(gè)這樣的電路組成。鎖存器起輸出鎖存作用,8個(gè)鎖存器構(gòu)成了特殊功能寄存器P0;場(chǎng)效應(yīng)管V1、V2組成輸出驅(qū)動(dòng)器,以增大帶負(fù)載能力;三態(tài)門1是引腳輸入緩沖器;三態(tài)門2用于讀鎖存器端口;與門3、反相器4及轉(zhuǎn)換開關(guān)MUX構(gòu)成了輸出控制電路。圖1-10P0口的一位結(jié)構(gòu)原理圖P0口工作原理如下:(1)作為通用I/O接口的輸出口當(dāng)CPU向端口輸出數(shù)據(jù)時(shí),對(duì)“控制”端輸出“0”電平信號(hào),轉(zhuǎn)換開關(guān)MUX把輸出級(jí)V1與鎖存器的端接通,同時(shí)因?yàn)榕c門3輸出為“0”,使V2截止,此時(shí),輸出級(jí)是漏極開路電路。當(dāng)寫脈沖加在鎖存器時(shí)鐘端CLK上時(shí),與內(nèi)部總線相連的D端數(shù)據(jù)取反后出現(xiàn)在端,再經(jīng)V1反相輸出,在P0引腳上出現(xiàn)的數(shù)據(jù)正好是內(nèi)部總線的數(shù)據(jù)。圖中實(shí)箭頭線為輸出數(shù)據(jù)路徑。在輸出數(shù)據(jù)時(shí),由于V2截止,輸出級(jí)是漏極開路電路,要使信號(hào)正常輸出,必須在P0口的引腳上外接上拉電阻,如圖1-10中虛線的右側(cè)所示。(2)作為通用I/O接口的輸入口P0口在輸入數(shù)據(jù)時(shí),由CPU先對(duì)鎖存器的D端置“1”,此時(shí)鎖存器的端為“0”,使輸出級(jí)的兩個(gè)場(chǎng)效應(yīng)管V1、V2均截止,使引腳P0.x處于懸浮高阻狀態(tài)。輸入信號(hào)從引腳輸入后,經(jīng)三態(tài)門輸入緩沖器1;“讀引腳”信號(hào)使輸入緩沖器1開通,輸入信號(hào)進(jìn)入內(nèi)部總線。圖中虛箭頭線為輸入數(shù)據(jù)路徑。P0口是一個(gè)準(zhǔn)雙向口。(3)作為地址/數(shù)據(jù)總線輸出在訪問片外存儲(chǔ)器時(shí),需從P0口輸出地址或數(shù)據(jù)信號(hào),CPU對(duì)“控制”端輸出高電平信號(hào)“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)輸出。P0口作為地址/數(shù)據(jù)分時(shí)復(fù)用總線時(shí),輸出的是地址信號(hào),還是數(shù)據(jù)信號(hào)?主要由指令決定。在同一時(shí)刻,輸出的只能是一種信號(hào)。可以分時(shí)輸出兩種信號(hào)。P0口作為地址總線時(shí),輸出的是16位地址線的低8位地址線。2.P1口(P1.0~P1.7,第1~8腳)P1口僅作為通用I/O口,其結(jié)構(gòu)比P0口簡(jiǎn)單。把圖1-10中的與門3、反相器4、轉(zhuǎn)換開關(guān)MUX、場(chǎng)效應(yīng)管V2去掉。鎖存器的端直接與場(chǎng)效應(yīng)管V1連接;外接上拉電阻移入單片機(jī)內(nèi)部,就是P1口的結(jié)構(gòu)。P1口僅具有數(shù)據(jù)輸入/輸出功能,是一個(gè)準(zhǔn)雙向口。3.P2口(P2.0~P2.7,第28~21腳)P2口的結(jié)構(gòu)和功能與P0口基本相同,也是地址/數(shù)據(jù)分時(shí)復(fù)用口:一是作為通用I/O口,具有數(shù)據(jù)輸入/輸出功能,是一個(gè)準(zhǔn)雙向口;二是作為地址總線時(shí),輸出的是16位地址線的高8位地址線。4.P3口(P3.0~P3.7,第10~17腳)P3口的一位結(jié)構(gòu)如圖1-11所示。P3口具有兩種功能:一是作為通用I/O口,具有數(shù)據(jù)輸入/輸出功能,是一個(gè)準(zhǔn)雙向口;二是作為第二功能使用,其原理如下:第二功能輸出原理:當(dāng)P3口的某一位作為第二功能輸出時(shí),CPU將該位鎖存器置“1”,使與非門3的輸出狀態(tài)只受“第二功能輸出”信號(hào)控制。“第二功能輸出”信號(hào)經(jīng)與非門3和場(chǎng)效應(yīng)管V1兩次反相后輸出到P3.x的引腳上。第二功能輸入原理:當(dāng)P3口的某一位作為第二功能輸入時(shí),CPU將該位“第二功能輸出”和鎖存器均置“1”,場(chǎng)效應(yīng)管V1截止,P3.x引腳上的輸入信號(hào)經(jīng)緩沖器4進(jìn)入單片機(jī)內(nèi)的相應(yīng)控制電路。P3口各引腳的第二功能見表1-3。圖1-11P3口的一位結(jié)構(gòu)
五、CPU時(shí)序單片機(jī)內(nèi)各部件之間有條不紊的協(xié)調(diào)工作,其控制信號(hào)是在一種基本脈沖節(jié)拍的指揮下按一定時(shí)間順序發(fā)出的,這些控制信號(hào)在時(shí)間上的相互關(guān)系就是CPU時(shí)序。而產(chǎn)生這種基本節(jié)拍的電路就是振蕩器和時(shí)鐘電路。1.振蕩器和振蕩周期(1)振蕩器和振蕩周期的意義振蕩器的振蕩頻率是單片機(jī)中頻率最高的、唯一的脈沖源,其振蕩周期最短。單片機(jī)中的所有控制信號(hào)脈沖、輸出數(shù)據(jù)脈沖、輸入數(shù)據(jù)脈沖(輸入轉(zhuǎn)換后)、地址脈沖、指令脈沖等都是來源于振蕩器,由振蕩器輸出的脈沖經(jīng)分頻器分頻得到。振蕩器的振蕩頻率決定單片機(jī)的工作速度,振蕩頻率越高,單片機(jī)的工作速度越高。振蕩器如果停止振蕩,單片機(jī)也就停止工作。單片機(jī)常用的振蕩器頻率為6MHz或12MHz。振蕩脈沖波形如圖1-13所示。(2)單片機(jī)振蕩器單片機(jī)內(nèi)部有一個(gè)石英振蕩器的基本電路,由于石英晶體元件和電容器不能集成到單片機(jī)內(nèi),只能外接。如圖1-12所示,外部電路與單片機(jī)的XTAL1和XTAL2引腳相連。在多單片機(jī)組成的網(wǎng)絡(luò)系統(tǒng)中,為了使各單片機(jī)之間振蕩脈沖信號(hào)同步,往往引入一個(gè)外部振蕩器的信號(hào),外部振蕩信號(hào)從XTAL2引腳輸入。圖1-12內(nèi)部振蕩器的外部元件連接2.時(shí)鐘周期振蕩脈沖經(jīng)二分頻器分頻后,得到二倍振蕩脈沖周期的脈沖,稱為時(shí)鐘脈沖,對(duì)應(yīng)的周期稱為時(shí)鐘周期,也稱為狀態(tài)周期,用S表示。兩個(gè)振蕩周期作為兩個(gè)節(jié)拍分別稱為節(jié)拍P1和節(jié)拍P2。在狀態(tài)周期的前半周期P1有效時(shí),通常完成算術(shù)邏輯操作;在后半周期P2有效時(shí),一般進(jìn)行內(nèi)部寄存器之間的傳輸。時(shí)鐘脈沖即S信號(hào)的波形如圖1-13所示。3.機(jī)器周期一個(gè)機(jī)器周期由6個(gè)狀態(tài)周期(12個(gè)振蕩周期)組成,6個(gè)狀態(tài)周期用S1~S6表示,每一狀態(tài)周期的兩個(gè)節(jié)拍用P1、P2表示,則一個(gè)機(jī)器周期的12個(gè)節(jié)拍就可用S1P1、S1P2、S2P1、…、S6P1、S6P2來表示。4.指令周期執(zhí)行一條指令所占用的全部時(shí)間。一個(gè)指令周期通常由1~4個(gè)機(jī)器周期組成。若外接晶振頻率為fosc=12MHZ,則四個(gè)基本周期的具體數(shù)值為:
(1)振蕩周期=1/12μs(2)時(shí)鐘周期=1/6μs(3)機(jī)器周期=1μs(4)指令周期=1~4μs單片機(jī)執(zhí)行任何一條指令都分為取指令階段和執(zhí)行指令階段。圖1-13是ALE信號(hào)與振蕩器信號(hào)、時(shí)鐘信號(hào)S的關(guān)系圖。ALE是地址鎖存控制引腳。ALE引腳上出現(xiàn)的信號(hào)是周期性的。每個(gè)機(jī)器周期ALE信號(hào)出現(xiàn)2次高電平,第一次出現(xiàn)在S1P2和S2P1期間,第二次出現(xiàn)在S24P2和S5P1期間。圖1-13ALE信號(hào)與振蕩器信號(hào)、時(shí)鐘信號(hào)的關(guān)系圖
六、復(fù)位方式單片機(jī)在開機(jī)時(shí)或在工作中因干擾而使程序失控或工作中程序處于某種死循環(huán)狀態(tài)等情況下都需要復(fù)位。復(fù)位的作用是使中央處理器CPU以及其他功能部件都恢復(fù)到一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。單片機(jī)的復(fù)位靠外部電路實(shí)現(xiàn),信號(hào)由復(fù)位引腳RST輸入,高電平有效,在振蕩器工作時(shí),只要保持RST引腳高電平兩個(gè)機(jī)器周期,單片機(jī)即復(fù)位。復(fù)位后,PC程序計(jì)數(shù)器的內(nèi)容為0000H,片內(nèi)RAM中內(nèi)容不變。復(fù)位電路一般有上電復(fù)位和手動(dòng)開關(guān)復(fù)位,如圖1-14所示。圖1-14(a)為上電復(fù)位電路,上電復(fù)位是利用單片機(jī)上電初始對(duì)電容C充電,使RST引腳獲得高電平而觸發(fā)復(fù)位的。高電平觸發(fā)時(shí)間持續(xù)10ms有效。圖1-14(b)為手動(dòng)復(fù)位電路,手動(dòng)復(fù)位是利用短暫按壓按鈕開關(guān)給RST引腳直接施加高電平觸發(fā)復(fù)位的。此外,還有一種稱為“看門狗”的自動(dòng)復(fù)位電路,需要相應(yīng)軟件支持。其基本原理是通過一個(gè)周期性觸發(fā)程序,每隔一定的時(shí)間(如1.6s),給RST引腳輸入一個(gè)大于10ms的高電平脈沖,觸發(fā)RST復(fù)位。當(dāng)主程序受干擾發(fā)生程序“跑飛”或“死循環(huán)”時(shí),在極短的時(shí)間內(nèi)可以自動(dòng)復(fù)位,不至于系統(tǒng)停機(jī)。自動(dòng)復(fù)位電路特別適用干擾大、周期性循環(huán)工作的系統(tǒng)的實(shí)時(shí)監(jiān)控,如對(duì)發(fā)動(dòng)機(jī)的實(shí)時(shí)監(jiān)控。圖1-14復(fù)位電路(a)上電復(fù)位電路(b)手動(dòng)復(fù)位電路第四節(jié)單片機(jī)指令系統(tǒng)指令是CPU用于控制功能部件完成某一指定操作的命令。一臺(tái)單片機(jī)所具有的所有指令的集合,就構(gòu)成了指令系統(tǒng)。指令系統(tǒng)越豐富,說明CPU的功能越強(qiáng)。一臺(tái)單片機(jī)能執(zhí)行什么樣的操作,是在單片機(jī)設(shè)計(jì)時(shí)有硬件電路確定的。一條指令對(duì)應(yīng)著一種基本操作。不同類型的單片機(jī)有不同的機(jī)器語言。一、單片機(jī)語言單片機(jī)的指令描述形式有兩種:機(jī)器語言形式和匯編語言形式。1.機(jī)器語言由于計(jì)算機(jī)只能識(shí)別二進(jìn)制數(shù),所以計(jì)算機(jī)中所有的指令和數(shù)據(jù)都是用二進(jìn)制代碼來表示。用二進(jìn)制代碼表示的指令稱為機(jī)器指令或機(jī)器碼,又稱為機(jī)器語言。為了書寫和輸入程序方便,機(jī)器語言的二進(jìn)制代碼常用十六進(jìn)制代碼表示。采用機(jī)器語言編寫的程序稱之為目標(biāo)程序。目標(biāo)程序的十六進(jìn)制代碼指令經(jīng)相關(guān)的硬件電路可以轉(zhuǎn)為二進(jìn)制代碼指令,直接輸入給單片機(jī)的程序存儲(chǔ)器運(yùn)行。用機(jī)器語言在編寫程序、分析程序和輸入程序等方面效率較低。2.匯編語言由于機(jī)器語言不便被人們識(shí)別、記憶、理解和使用,因此給每條機(jī)器語言指令賦予助記符號(hào)來表示,這就形成了匯編語言。助記符號(hào)多用英文字母和數(shù)字組成。也就是說,匯編語言是便于人們識(shí)別、記憶、理解和使用的一種指令形式,它和機(jī)器語言指令一一對(duì)應(yīng),也是由計(jì)算機(jī)的硬件特性所決定的。采用匯編語言編寫的程序稱之為源程序。匯編語言在編寫程序、分析程序和輸入程序等方面效率較高。但匯編語言程序不能被單片機(jī)直接識(shí)別并執(zhí)行,必須經(jīng)過一個(gè)中間環(huán)節(jié)把它翻譯成機(jī)器語言程序,這個(gè)中間過程叫做匯編。匯編有兩種方式:機(jī)器匯編和手工匯編。手工匯編是編程員把匯編語言指令逐條翻譯成機(jī)器語言指令,然后輸入單片機(jī)。機(jī)器匯編是用專門的編譯程序,在PC計(jì)算機(jī)上進(jìn)行翻譯,翻譯后的機(jī)器語言經(jīng)專用通信線路傳輸給單片機(jī)。這種方式在編寫程序、分析程序和輸入程序等方面效率較高。3.高級(jí)語言除了匯編語言,還有高級(jí)語言,如BASIC、PASCAL、C語言等,可以用來對(duì)單片機(jī)編程。高級(jí)語言接近自然語言(英語)和數(shù)學(xué)語言的算法語言,具有直觀、通用等特點(diǎn)。相對(duì)于高級(jí)語言,機(jī)器語言和匯編語言屬于低級(jí)語言。用低級(jí)語言編寫程序需要完全了解CPU硬件結(jié)構(gòu),對(duì)程序設(shè)計(jì)人員要求較高,且程序不能移植。但高級(jí)語言程序不能被單片機(jī)直接識(shí)別并執(zhí)行,所以也需要編譯程序?qū)⒏呒?jí)語言“翻譯”為機(jī)器語言,因此用高級(jí)語言的速度慢,且占用內(nèi)存空間大。具體用哪一級(jí)語言對(duì)單片機(jī)編程和控制,由系統(tǒng)的復(fù)雜程度、所編程序的大小、機(jī)器的內(nèi)存和編程者所熟悉的語言而決定。對(duì)嵌入式單片機(jī)控制系統(tǒng),主要使用匯編語言編程,由機(jī)器語言直接控制單片機(jī),所占內(nèi)存小,運(yùn)行速度快,效果好。對(duì)有上位計(jì)算機(jī)(如PC機(jī)或工業(yè)計(jì)算機(jī))控制、由單片機(jī)組成的控制系統(tǒng),用高級(jí)語言易于編程、調(diào)試、修改和監(jiān)控。二、MCS-51單片機(jī)指令系統(tǒng)MCS-51單片機(jī)指令系統(tǒng)共有111條指令。其中有49條單字節(jié)指令、46條雙字節(jié)指令和16條三字節(jié)指令。按功能可以劃分為以下5類:數(shù)據(jù)傳送指令(28條),算術(shù)運(yùn)算指令(24條),邏輯運(yùn)算指令(25條),控制轉(zhuǎn)移指令(12條),位操作指令(17條),子程序調(diào)用、返回和空操作指令(5條)。1.匯編語言指令格式:指令系統(tǒng)中的指令描述了不同的操作,不同操作對(duì)應(yīng)不同的指令。但結(jié)構(gòu)上,每條指令通常由操作碼和操作數(shù)兩部分組成。匯編語言指令格式如下:格式:[標(biāo)號(hào):]操作碼助記符[第一操作數(shù)][,第二操作數(shù)][;注釋]2.指令常用符號(hào)(1)Rn(n=0~7):表示八個(gè)通用寄存器R0~R7。(2)Ri(i=0,1):表示兩個(gè)寄存器R0、R1,它們常在間接尋址中作為8位地址指針。(3)#data:表示8位立即數(shù),即包含在指令中的8位常數(shù),如#30H。(4)#data16:表示16位立即數(shù),即包含在指令中的16位常數(shù),如#2010H。(5)direct:表示片內(nèi)RAM(含特殊功能寄存器)的直接地址。(6)addr11:表示11位目的地址。(7)addr16:表示16位目的地址。(8)rel:表示帶符號(hào)的8位地址偏移量(9)bit:表示位地址。(10)@:作為寄存器的前綴,表示間接尋址。(11)(×):表示×存儲(chǔ)器單元的內(nèi)容。(12)((×)):表示以X單元的內(nèi)容為地址的存儲(chǔ)器單元內(nèi)容。(13)→:表示將箭頭左邊內(nèi)容送入箭頭右邊。(14)/:表示對(duì)該位操作數(shù)取反,但不影響該位的原值。3.尋址方式操作數(shù)是指令的重要組成部分,指出了參與操作的數(shù)據(jù)或數(shù)據(jù)的地址。尋找存放操作數(shù)的地址并將其提取出來的方式稱為尋址方式。一條指令采用什么樣的尋址方式,是由指令的功能決定的。尋址方式越多,指令功能就越強(qiáng)。MCS-51指令系統(tǒng)共使用了7種尋址方式。(1)立即尋址操作數(shù)直接出現(xiàn)在指令中,緊跟在操作碼的后面,作為指令的一部分與操作碼一起存放在程序存儲(chǔ)器中,可以立即得到并執(zhí)行,故稱為立即尋址。匯編指令中,在一個(gè)數(shù)的前面冠以"#"符號(hào)作前綴,就表示該數(shù)為立即尋址。例如指令:MOV
A,#30H指令中30H就是立即數(shù)。指令的功能是將立即數(shù)30H傳送到累加器A中。(2)直接尋址直接尋址是指在指令中直接給出操作數(shù)所在存儲(chǔ)單元的地址。該指令的功能是從該地址中直接獲取操作數(shù)。例如指令:MOVA,40H該指令中40H為操作數(shù)的直接地址。指令的功能是把片內(nèi)RAM地址為40H單元的內(nèi)容送到A中。(3)寄存器尋址寄存器尋址是指把寄存器的內(nèi)容作為操作數(shù)。寄存器可以是通用寄存器R0~R7,也可以是ACC、B、DPTR等寄存器。例如指令:MOV
A,R0該指令是寄存器尋址。指令的功能是把工作寄存器R0中的內(nèi)容傳送到累加器A中,如R0中的內(nèi)容為30H,則執(zhí)行該指令后A的內(nèi)容也為30H。(4)寄存器間接尋址在寄存器間接尋址中,指令中的一個(gè)操作數(shù)是加了前綴“@”的寄存器,“@”表示該寄存器中的內(nèi)容是操作數(shù)的地址??捎糜陂g接尋址的寄存器是R0、R1、DPTR。其中,R0和R1用于8位地址尋址,DPTR用于16位地址尋址。圖1-15是寄存器間接尋址示意圖。例如:指令:MOVA,@R0如圖1-15所示,是該指令寄存器間接尋址示意圖。該指令的功能是把寄存器R0中的內(nèi)容20H作為要尋找的地址,將內(nèi)部RAM20單元的內(nèi)容58H傳送到累加器A中,A的內(nèi)容變?yōu)?8H。
圖1-15寄存器間接尋址示意圖
(5)變址尋址(基址寄存器+變址寄存器)變址尋址是指以寄存器的內(nèi)容作為基地址,然后在這個(gè)基地址的基礎(chǔ)上加上地址偏移量形成操作數(shù)的地址,并在這個(gè)地址中取出操作數(shù)。在變址尋址中只能用DPTR和PC作為基址寄存器,累加器A作為偏移量寄存器。變址尋址用于讀取程序存儲(chǔ)器的數(shù)據(jù),常用于查表操作。例如:指令:MOVA,@R0圖1-16是該指令變址尋址示意圖。指令的功能是把16位數(shù)據(jù)寄存器DPTR的內(nèi)容2000H作為基址,累加器A的內(nèi)容20H作為偏移量,二者相加后作為程序存儲(chǔ)器ROM的地址2020H,將ROM2020H單元的內(nèi)容47H傳送到累加器A中,A的內(nèi)容變?yōu)?7H。圖1-16變址尋址示意圖(6)相對(duì)尋址相對(duì)尋址是將程序計(jì)數(shù)器PC中的當(dāng)前值與指令第二字節(jié)給出的偏移量rel相加,其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址。相對(duì)尋址主要用于轉(zhuǎn)移類指令,尋址范圍是程序存儲(chǔ)器。偏移量rel是有符號(hào)的單字節(jié)數(shù)。以補(bǔ)碼表示,其偏移范圍是-128~+127。負(fù)數(shù)表示從當(dāng)前地址向前轉(zhuǎn)移,正數(shù)表示從當(dāng)前地址向后轉(zhuǎn)移。所以,相對(duì)轉(zhuǎn)移指令滿足條件后,轉(zhuǎn)移的地址(目的地址)為:目的地址=指令存儲(chǔ)地址+指令字節(jié)數(shù)+rel(7)位尋址位尋址是指指令的操作數(shù)為8位二進(jìn)制數(shù)的某一位,指令中給出的是操作數(shù)的位地址。可用于位尋址的區(qū)域是片內(nèi)RAM20H~2FH單元和部分特殊功能寄存器。二、指令系統(tǒng)1.數(shù)據(jù)傳送類指令數(shù)據(jù)傳送指令把“源操作數(shù)”中的數(shù)據(jù)傳送到“目的操作數(shù)”中去,而源操作數(shù)的內(nèi)容保持不變。這類指令在程序中占有較大的比重,是最常用的操作,如表1-4所示。類別操作碼助記符操作數(shù)功能簡(jiǎn)介機(jī)器碼指令字節(jié)機(jī)器周期片內(nèi)RAM數(shù)據(jù)傳送指令MOVA,Rn寄存器Rn內(nèi)容送AE8-EF11MOVA,direct直接地址單元內(nèi)容送AE521MOVA,@Ri間接地址單元內(nèi)容送AE6、E711MOVA,#data立即數(shù)送A74data21MOVRn,AA內(nèi)容送寄存器RnF8~FF11MOVRn,direct直接地址單元內(nèi)容送寄存器A8-AFdirect21MOVRn,#data立即數(shù)送寄存器Rn78-7Fdata21MOVdirect,AA內(nèi)容送直接地址單元F5direct21MOVdirect,Rn寄存器Rn內(nèi)容送直接地址88~8Fdirect21表1-4數(shù)據(jù)傳送指令MOVdirect1,direct2直接地址單元2內(nèi)容送直接地址單元185direct1direct232MOVdirect,@Ri間接地址單元內(nèi)容送直接地址86-87direct22MOVdirect,#data立即數(shù)送直接地址單元75directdata32MOV@Ri,AA內(nèi)容送間接地址單元@RiF6-F711MOV@Ri,direct直接地址送間接地址單元@RiA6-A7direct22MOV@Ri,#data立即數(shù)送間接地址單元@Ri76-77data21MOVDPTR,#data1616位立即數(shù)送數(shù)據(jù)指針90data15-8data7-032片外RAM數(shù)據(jù)傳送指令MOVXA,@Ri外部間接地址單元(8位地址)@Ri內(nèi)容送AE2-E312MOVX@Ri,AA內(nèi)容送外部間接地址單元@Ri(8位地址)F2-F312MOVXA,@DPTR外部間接地址單元@DPTR(16位地址)內(nèi)容送AE012MOVX@DPTR,AA內(nèi)容送外部間接地址單元@DPTR(16位地址)F012查表指令MOVCA,@A+PCA+PC尋址程序單元內(nèi)容送A8312MOVCA,@A+DPTRA+DPTR尋址程序單元內(nèi)容送A9312交換指令XCHA,RnA和寄存器Rn交換內(nèi)容C8-CF11XCHA,direct直接地址和A交換內(nèi)容C5direct21XCHA,@RiA和間接地址單元@Ri交換內(nèi)容C6-C711XCHDA,@RiA和間接地址單元@Ri低4位交換內(nèi)容D6-D711堆棧指令PUSHdirect直接地址內(nèi)容單元進(jìn)棧C0direct22POPdirect堆棧內(nèi)容到直接地址D0direct22(1)片內(nèi)RAM數(shù)據(jù)傳送指令MCS-51片內(nèi)RAM和特殊功能寄存器各個(gè)存儲(chǔ)單元之間的數(shù)據(jù)交換,通常用MOV指令操作。例如指令“MOVA,R1;”指令助記符:MOVA,R1;指令注釋:操作碼目的操作數(shù)源操作數(shù)指令中MOV是操作碼,第一個(gè)操作數(shù)A是目的操作數(shù),第二個(gè)操作數(shù)R1是源操作數(shù)。數(shù)據(jù)傳送指令的的功能是把源操作數(shù)中的數(shù)據(jù)傳送給目的操作數(shù)所代表的存儲(chǔ)單元。如果A內(nèi)的數(shù)據(jù)是07H,R1內(nèi)的數(shù)據(jù)是C4H,執(zhí)行該指令后,R1的數(shù)據(jù)傳送給A,A內(nèi)的數(shù)據(jù)就變?yōu)镃4H,R1內(nèi)的數(shù)據(jù)不變,仍是C4H。16條片內(nèi)RAM數(shù)據(jù)傳送指令中,15條是8位數(shù)據(jù)傳送指令,1條是16位立即數(shù)傳送指令,用來給16位數(shù)據(jù)指針寄存器DPTR賦值。(2)片外RAM數(shù)據(jù)傳送指令CPU與片外RAM或I/O口進(jìn)行數(shù)據(jù)傳送,必須采用寄存器間接尋址的方法,通過累加器A來完成,指令操作碼助記符是MOVX。[例1.1]將片外RAM2000H單元內(nèi)容送入片內(nèi)RAM20H單元中,注意各條指令的尋址方式。程序如下:MOVDPTR,#2000H;將片外16位地址以立即數(shù)傳送給數(shù)據(jù)指針DPTRMOVXA,@DPTR;將片外2000H單元內(nèi)容傳送給累加器AMOV20H,A;將A內(nèi)容傳送給20H單元(3)查表指令訪問程序存儲(chǔ)器的數(shù)據(jù)傳送指令又稱作查表指令,采用基址寄存器加變址寄存器間接尋址方式,把程序存儲(chǔ)器中存放的表格數(shù)據(jù)讀出,傳送到累加器A。查表指令操作碼助記符為MOVC。指令“MOVCA,@A+DPTR”的功能,是將累加器A的值與DPTR的值相加得到一個(gè)16位的地址,并將該地址指向的程序存儲(chǔ)器單元的內(nèi)容送入累加器A中。[例1.2]從片外程序存儲(chǔ)器2000H單元開始存放0~9的平方值,以DPTR為基址寄存器進(jìn)行查表得7的平方值。程序如下:MOVDPTR,2000H;將表的首地址2000H傳送給數(shù)據(jù)指針DPTRMOVA,07H;將數(shù)值7傳送給累加器AMOVCA,@A+DPTR;將09H+2000H=2009H單元的平方值傳送給A平方值表所在片外程序存儲(chǔ)器地址(表中平方值用十進(jìn)制數(shù)表示)
2000H:00;2001H:01;2002H:04;2003H:09;2004H:16;2005H:25;2006H:36;2007H:49;2008H:64;2009H:81;在發(fā)動(dòng)機(jī)電控技術(shù)中,多數(shù)控制值是通過查表獲得,例如點(diǎn)火提前角的確定,在一定負(fù)荷下,發(fā)動(dòng)機(jī)轉(zhuǎn)速越高,點(diǎn)火提前角越大。單片機(jī)得到發(fā)動(dòng)機(jī)轉(zhuǎn)速后,通過查表獲得點(diǎn)火提前角。一臺(tái)新設(shè)計(jì)出來的發(fā)動(dòng)機(jī),不同工況下的最佳點(diǎn)火提前角是在反復(fù)試驗(yàn)后得來的,然后以表的形式存入程序存儲(chǔ)器中。(4)交換指令XCH指令是將源操作數(shù)的值與目的操作數(shù)累加器A的值全字節(jié)交換;XCHD指令是將源操作數(shù)與目的操作數(shù)累加器A低4位內(nèi)容交換,而高4位不變;[例1.3]設(shè)(A)=47H,(R0)=58H,(58H)=36H,分別執(zhí)行下列指令,寫出累加器A和各寄存器的值。指令 執(zhí)行結(jié)果①XCHA,R0 ;(A)=58H,(R0)=47H②XCHA,@R0 ;(A)=36H,(58H)=47H③XCHDA,@R0;(A)=46H,(58H)=37H(5)堆棧指令堆棧是在片內(nèi)數(shù)據(jù)儲(chǔ)存區(qū)中開辟的一端相對(duì)固定,一端活動(dòng)的存儲(chǔ)空間,活動(dòng)端稱為棧頂,固定端稱為棧底,所有數(shù)據(jù)的存入和取出都從棧頂進(jìn)行。堆棧主要用于進(jìn)行數(shù)據(jù)保護(hù),存取數(shù)據(jù)依據(jù)“先進(jìn)后出,后進(jìn)先出”的原則。堆棧操作有進(jìn)棧和出棧,即壓入和彈出數(shù)據(jù)。2.算術(shù)運(yùn)算指令算術(shù)指令包括加、減、乘、除法指令,數(shù)據(jù)運(yùn)算功能較強(qiáng)。如表1-5所示。算術(shù)運(yùn)算結(jié)果存放在目的操作數(shù)所代表的單元內(nèi)。
表1-5算術(shù)運(yùn)算類指令
類別助記符操作數(shù)功能簡(jiǎn)介機(jī)器碼指令字節(jié)機(jī)器周期不帶進(jìn)位加法指令A(yù)DDA,RnA和寄存器相加28-2F11ADDA,directA和直接地址相加25direct21ADDA,@RiA和間接地址RAM單元相加26-2711ADDA,#dataA和立即數(shù)相加24data21帶進(jìn)位加法指令A(yù)DDCA,RnA和寄存器帶進(jìn)位相加38-3F11ADDCA,directA和直接地址帶進(jìn)位相加35direct21ADDCA,@RiA和間接地址單元帶進(jìn)位相加36-3711ADDCA,#dataA和立即數(shù)帶進(jìn)位相加34data21減法指令SUBBA,RnA減去寄存器帶借位98-9F11SUBBA,directA減去直接地址帶借位95direct21SUBBA,@RiA減去間接地址單元帶借位96-9711SUBBA,#dataA減去立即數(shù)帶借位94data21加1指令I(lǐng)NCAA加10411INCRn寄存器加108-0F11INCdirect直接地址單元加105direct21INC@Ri間接地址單元加106-0711INCDPTR數(shù)據(jù)指針加1A312減1指令DECRn寄存器減118-1F11DECdirect直接地址單元減115direct21DECAA減11411DEC@Ri間接RAM減116-1711乘除指令MULABA和B相乘A414DIVABA和B相除8414調(diào)整指令DAA二-十進(jìn)制調(diào)整D411(1)不帶進(jìn)位加法指令A(yù)DD是不帶進(jìn)位的加法運(yùn)算指令,其功能是將累加器A的內(nèi)容與源操作數(shù)的內(nèi)容相加,結(jié)果送入累加器A中,源操作數(shù)指定單元的內(nèi)容不變。該指令執(zhí)行結(jié)果影響標(biāo)志位CY、OV、AC、P。兩個(gè)數(shù)相加時(shí),可通過對(duì)CY的檢測(cè)判斷運(yùn)算結(jié)果是否有進(jìn)位,如果最高位有進(jìn)位時(shí),CY為1,否則為0。(2)帶進(jìn)位的加法指令A(yù)DDC是帶進(jìn)位的加法運(yùn)算指令,其功能是同時(shí)把源操作數(shù)所指出的內(nèi)容、進(jìn)位標(biāo)志CY和累加器A的內(nèi)容相加,結(jié)果存入累加器A中。ADDC指令一般用于多字節(jié)加法運(yùn)算,在多字節(jié)加法運(yùn)算中,低字節(jié)加法結(jié)果可能產(chǎn)生進(jìn)位,用ADDC指令可使高字節(jié)相加的同時(shí)加上低字節(jié)的進(jìn)位。該指令執(zhí)行結(jié)果影響標(biāo)志位CY、OV、AC、P。(3)帶借位減法指令
SUBB是帶借位減法運(yùn)算指令,其功能是將累加器A中內(nèi)容減去源操作數(shù)的內(nèi)容及借位CY的值,結(jié)果送入累加器A中。該指令影響標(biāo)志位CY、OV、AC、P。(4)加1指令
INC是加1指令,其功能是將操作數(shù)的內(nèi)容加1。指令除影響奇偶標(biāo)志位P外,不會(huì)對(duì)其他任何標(biāo)志位產(chǎn)生影響。[例1.4]設(shè)(A)=07H,(R0)=19H,(50H)=3FH,分別執(zhí)行下列指令,寫出執(zhí)行結(jié)果。指令 執(zhí)行結(jié)果①INCA;使A內(nèi)容由07H變?yōu)?H②INCR0;使R0的內(nèi)容由19H變?yōu)?AH③INC58H;使50H單元內(nèi)容由3FH變?yōu)?0H(5)減1指令DEC是減1指令,其功能是將操作數(shù)的內(nèi)容減1。與INC指令相同,僅影響奇偶標(biāo)志位P。(6)乘法指令MUL是乘法指令,其功能是將累加器A的內(nèi)容和寄存器B的內(nèi)容相乘,結(jié)果是16位二進(jìn)制數(shù)。其中高8位保存在寄存器B中,低8位保存在累加器A中。若乘積大于0FFH,溢出標(biāo)志OV=1,否則為0。[例1.5]設(shè)(A)=50H(80),B=80H(128),執(zhí)行指令:MULAB。結(jié)果為:(B)=28H,(A)=00H,表示積(BA)=2800H(10240),
OV=1。(7)除法指令DIV除法指令,其功能是用累加器A的內(nèi)容(被除數(shù))除以寄存器B的內(nèi)容(除數(shù))。指令執(zhí)行后,商保存在累加器A中,余數(shù)保存在寄存器B中。相除之后,標(biāo)志位CY一定為0,OV只是在除數(shù)B=0時(shí)為1,其他情況下都為0。(8)十進(jìn)制調(diào)整指令DA是一條對(duì)累加器A中的BCD碼進(jìn)行調(diào)整的指令。應(yīng)用時(shí)必須跟在ADD或ADDC指令后面。因?yàn)楫?dāng)兩個(gè)壓縮的BCD碼按二進(jìn)制作加法運(yùn)算時(shí),其結(jié)果不一定是壓縮的BCD碼,所以必須用DA指令進(jìn)行調(diào)整,實(shí)現(xiàn)十進(jìn)制的加法運(yùn)算。3.邏輯運(yùn)算指令邏輯運(yùn)算指令可分為四類:對(duì)字節(jié)變量的邏輯與、或、異或操作,對(duì)累加器A單獨(dú)邏輯操作和移位等操作。指令中的操作數(shù)都是8位,它們?cè)谶M(jìn)行邏輯運(yùn)算操作時(shí)都不影響除奇偶標(biāo)志外的其他標(biāo)志位。如表1-6所示。類別助記符操作數(shù)功能簡(jiǎn)介機(jī)器碼指令字節(jié)機(jī)器周期邏輯與指令A(yù)NLA,RnA和寄存器相與58-5F11ANLA,directA和直接地址單元相與55direct21ANLA,@RiA和間址單元相與56-5711ANLA,#dataA和立即數(shù)相與54data21ANLdirect,A直接地址單元與A相與52direct21ANLdirect,#data直接地址單元與立即數(shù)相與53directdata32邏輯或指令ORLA,RnA和寄存器相或48-4F11ORLA,directA和直接地址單元相或45direct21ORLA,@RiA和間址單元相或46-4711ORLA,#dataA和立即數(shù)相或44data21ORLdirect,A直接地址單元與A相或42direct21ORLdirect,#data直接地址單元與立即數(shù)相或43directdata32表1-6邏輯運(yùn)算與循環(huán)指令邏輯異或指令XRLA,RnA和寄存器相異或68-6F11XRLA,directA和直接地址單元相異或65direct21XRLA,@RiA和間址單元相異或66-6711XRLA,#dataA和立即數(shù)相異或64data21XRLdirect,A直接地址單元與A相異或62direct32XRLdirect,#data直接地址單元與立即數(shù)相異或63directdata11單對(duì)A指令CLRAA清零E411CPLAA求反F411SWAPA累加器A半字節(jié)交換C411循環(huán)移位指令RLAA不帶進(jìn)位左循環(huán)2311RLCAA帶進(jìn)位左循環(huán)3311RRAA不帶進(jìn)位右循環(huán)0311RRCAA帶進(jìn)位右循環(huán)1311(1)邏輯與指令邏輯與指令的操作碼是ANL,“與”指令是將源操作數(shù)與目的操作數(shù)按位相與,其結(jié)果送入目的操作數(shù)中。“與”指令可以屏蔽操作數(shù)的某些位,即使操作數(shù)某些位清零,其他位保持不變。(2)邏輯或指令邏輯或指令的操作碼是ORL,“或”指令是將源操作數(shù)與目的操作數(shù)按位相或,其結(jié)果送入目的操作數(shù)中?!盎颉敝噶羁梢允共僮鲾?shù)的數(shù)據(jù)位置1,即使操作數(shù)某些位置1,其他位保持不變。(3)邏輯異或指令邏輯異或指令的操作碼是XRL,“異或”指令是將源操作數(shù)與目的操作數(shù)按位相異或,即不同為1,相同為0,其結(jié)果送入目的操作數(shù)?!爱惢颉敝噶羁梢允共僮鲾?shù)的數(shù)據(jù)位取反,即使操作數(shù)某些位取反,其他位保持不變。清零指令“CLRA”是將累加器A的內(nèi)容清零。取反指令“CPLA”是將累加器A的內(nèi)容按位取反,即累加器A中各位1變0,0變1。半字節(jié)交換指令“SWAPA”是將累加器A的兩個(gè)半字節(jié)(高4位和低4位)內(nèi)容交換。(5)循環(huán)移位指令循環(huán)移位指令有4種,都是對(duì)累加器A進(jìn)行操作。這組移位指令只能對(duì)累加器A的內(nèi)容逐位移一位,若要移多位,則要通過編寫程序完成。①左循環(huán)移位指令“RLA”的功能是將累加器A的內(nèi)容左循環(huán)移位。如圖1-17所示,累加器A的最高位移入最低位,同時(shí)其他各位依次左移。圖1-17左循環(huán)移位指令示意圖
②帶進(jìn)位左循環(huán)移位指令“RLCA”的功能是將累加器A的內(nèi)容和進(jìn)位標(biāo)志一起左循環(huán)移位。累加器A的最高位移入進(jìn)位位CY,同時(shí)其他各位依次左移,CY位移入累加器A的最低位。③右循環(huán)移位指令“RRA”和“RRCA”與左循環(huán)移位指令功能相同,只是移位方向向右。4.控制轉(zhuǎn)移指令控制轉(zhuǎn)移類指令包括無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令,如表1-7所示。類別助記符操作數(shù)功能簡(jiǎn)介機(jī)器碼指令字節(jié)機(jī)器周期無條件轉(zhuǎn)移指令A(yù)JMPaddr11絕對(duì)轉(zhuǎn)移&0addr7-022LJMPaddr16長(zhǎng)轉(zhuǎn)移02addr15-8addr7-032SJMPrel相對(duì)轉(zhuǎn)移80rel22JMP@A+DPTR間接轉(zhuǎn)移7312判A轉(zhuǎn)移指令JZrelA=0轉(zhuǎn)移60rel22JNZrelA≠0轉(zhuǎn)移70rel22表1-7控制轉(zhuǎn)移指令減1不為0轉(zhuǎn)移指令DJNZRn,rel寄存器Rn減1不為0轉(zhuǎn)移D8-DFrel22DJNZdirect,rel直接地址單元減1不為0轉(zhuǎn)移D5directrel32比較不相等轉(zhuǎn)移指令CJNEA,#data,relA與立即數(shù)比較不相等轉(zhuǎn)移B4datarel32CJNEA,direct,relA與直接地址單元比較不相等轉(zhuǎn)移B5datarel32CJNERn,#data,rel寄存器與立即數(shù)比較不相等轉(zhuǎn)移B8-BFdatarel32CJNE@Ri,#data,rel間接地址單元與立即數(shù)比較不相等轉(zhuǎn)移B6-B7datarel32(1)無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令是指當(dāng)程序執(zhí)行到這條指令時(shí),程序?qū)o條件地轉(zhuǎn)移到指令指向的地址單元取指運(yùn)行?!癆JMPaddr11”為11位地址短轉(zhuǎn)移指令?!癓JMPaddr16”為16位地址長(zhǎng)轉(zhuǎn)移指令。“SJMPrel”為相對(duì)轉(zhuǎn)移指令。rel是帶符號(hào)的8位地址偏移量。“JMP@A+DPTR”為間接相對(duì)長(zhǎng)轉(zhuǎn)移指令,它是以數(shù)據(jù)指針DPTR的內(nèi)容為基址,以累加器A的內(nèi)容為相對(duì)偏移量,在64KB范圍內(nèi)無條件轉(zhuǎn)移。用它可實(shí)現(xiàn)分支轉(zhuǎn)移。(2)判零條件轉(zhuǎn)移指令JZ指令的功能是判斷累加器A的值。若累加器A的值為0,則程序轉(zhuǎn)移到目標(biāo)地址;否則,順序執(zhí)行程序。JNZ指令的功能是判斷累加器A的值。若累加器A的值不為0,則程序轉(zhuǎn)移到目標(biāo)地址;否則,順序執(zhí)行程序。(3)減1條件轉(zhuǎn)移指令
DJNZ這組指令的功能是先將操作數(shù)的內(nèi)容減1,然后判斷結(jié)果,如果不為0,則轉(zhuǎn)移到目標(biāo)地址;為0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級(jí)數(shù)學(xué)教學(xué)工作總結(jié)-15篇
- 畢業(yè)生求職自我介紹(15篇)
- 評(píng)課的優(yōu)點(diǎn)和缺點(diǎn)及改進(jìn)建議集合7篇
- 2022大學(xué)軍訓(xùn)心得體會(huì)感悟-大學(xué)軍訓(xùn)個(gè)人心得體會(huì)10篇
- 人事部月度工作總結(jié)8篇
- 烏丟丟奇遇記讀后感15篇
- 幼兒園安全學(xué)期總結(jié)10篇
- 項(xiàng)目合作意向書(匯編15篇)
- 2024年知識(shí)產(chǎn)權(quán)許可與轉(zhuǎn)讓合同標(biāo)的及權(quán)益分配
- 服務(wù)員個(gè)人總結(jié)15篇
- 《汽車傳感器》課件
- 中醫(yī)內(nèi)科學(xué)課件-癲狂
- 分享會(huì)之蹲馬步管理工坊
- 讀書分享讀書交流會(huì)《人生海?!?/a>
- 水土保持監(jiān)理實(shí)施細(xì)則
- 第9課小測(cè)-2023-2024學(xué)年初中日語人教版第三冊(cè)(含答案)
- 2023年諸暨市重點(diǎn)高中提前招生選拔考試科學(xué)試卷
- 學(xué)術(shù)規(guī)范與學(xué)術(shù)倫理學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 部編版三年級(jí)上冊(cè)道德與法治期末測(cè)試卷(全優(yōu))
- 2022年北京語言大學(xué)教師招聘考試真題
- 不良資產(chǎn)清收處置手段及流程
評(píng)論
0/150
提交評(píng)論