- 51單片機(jī)應(yīng)用基礎(chǔ)(C51版)
- 胡進(jìn)德 丁如春 劉愛榮
- 1831字
- 2019-11-27 11:56:47
學(xué)習(xí)單元二 單片機(jī)的“解剖圖”
一、單片機(jī)的抽象結(jié)構(gòu)
圖3-7所示為單片機(jī)內(nèi)部電路的抽象結(jié)構(gòu)。它完整地“解剖”了單片機(jī)的內(nèi)部結(jié)構(gòu)和引腳的關(guān)系等內(nèi)容,充分理解這個(gè)結(jié)構(gòu)將很好地幫助我們理解單片機(jī)的工作過(guò)程,但我們并不奢望初學(xué)者短時(shí)間內(nèi)能把此圖的內(nèi)部結(jié)構(gòu)全部弄清楚,在此只需要初學(xué)者有一個(gè)大概的印象即可。

圖3-7 單片機(jī)的抽象結(jié)構(gòu)
圖中最外側(cè)的虛線框代表單片機(jī)的塑料外殼。以虛線框?yàn)榻纾騼?nèi)為其內(nèi)部結(jié)構(gòu),框外部為外露的40個(gè)引腳。這40個(gè)引腳分別是:4組I/O口共32個(gè)引腳(P0.0~P0.7、P1.0~P1.7、P2.0~P2.7、P3.0~P3.7)、2個(gè)電源引腳Vcc和GND、2個(gè)接晶振的引腳XTAL1和XTAL2、其余4個(gè)時(shí)序與控制引腳、ALE/
、
/VPP和RST。
為了更快地理解這個(gè)結(jié)構(gòu),我們先從熟悉的四個(gè)端口P0~P3入手。首先是P1口,它在結(jié)構(gòu)圖的左下方,其中I/O口P1.0~P1.7的8根雙向細(xì)箭頭代表著8個(gè)引腳,這8個(gè)引腳與“P1口的驅(qū)動(dòng)”相連,而“P1口的驅(qū)動(dòng)”與“P1口鎖存器”相連,這一點(diǎn)與剛才圖3-6的分析是相同的。
同樣的分析方法可應(yīng)用于P0、P2和P3口。從圖中看到,P0和P2口的驅(qū)動(dòng)通過(guò)總線與“程序地址寄存器”相連,說(shuō)明P0和P2口的第二“角色”是作為地址和數(shù)據(jù)線與“程序地址寄存器”打交道;而P3口的驅(qū)動(dòng)與中斷、串行口通信和定時(shí)器寄存器通過(guò)總線相連,可以猜想P3口的第二“角色”就是與中斷、串行口通信和定時(shí)器有關(guān)的操作。此外P0、P1、P2和P3口的鎖存器都相連到單片機(jī)內(nèi)部一條主要的總線上。從圖中還可以看到幾乎每一個(gè)方框都與這一條主要的總線發(fā)生關(guān)系。例如程序狀態(tài)字PSW、累加器ACC、B寄存器等。在單片機(jī)運(yùn)行過(guò)程中,這條主要的總線上傳輸著各種各樣的數(shù)據(jù)。例如執(zhí)行指令“MOV P1, A”時(shí),把累加器ACC的數(shù)據(jù)載入P1中。這時(shí),數(shù)據(jù)從累加器ACC中出來(lái),“跑進(jìn)”總線上,并沿著總線來(lái)到P1口鎖存器附近,P1鎖存器也接到MOV指令的“通知”,知道有數(shù)據(jù)送來(lái)需要接收,于是P1口鎖存器把總線上這段從ACC送出的數(shù)據(jù)接收下來(lái),并送到P1口驅(qū)動(dòng)上,這樣在單片機(jī)的P1口就出現(xiàn)了與累加器ACC中相同的8位數(shù)據(jù)。
有人可能會(huì)說(shuō)從ACC送到總線上的數(shù)據(jù)在總線上“跑”了一圈,為什么其他的功能模塊如P1~P3口鎖存器或程序狀態(tài)字PSW等不接收而偏偏只有P1口接收到呢?這是單片機(jī)執(zhí)行指令“MOV P1, A”的結(jié)果,原因是只有P1口鎖存器接到了MOV指令發(fā)出的接收數(shù)據(jù)的“通知”。
圖3-7除了展示單片機(jī)的4組I/O口,還展現(xiàn)了振蕩器(OSC)如何與外部的晶振和電容連接,以及4個(gè)控制引腳、ALE/
、
/VPP和RST與內(nèi)部結(jié)構(gòu)的關(guān)系等。
二、深入“解剖”單片機(jī)的CPU
在計(jì)算機(jī)中,CPU是計(jì)算機(jī)的核心器件,它完成高速的算術(shù)和邏輯運(yùn)算。在單片機(jī)中也有CPU,為了簡(jiǎn)化單片機(jī)的CPU,可以把圖3-7中ALU看成是單片機(jī)的CPU,只是ALU的結(jié)構(gòu)和功能比CPU簡(jiǎn)單得多。
對(duì)圖3-7中的單片機(jī)內(nèi)部功能模塊——ALU(Arithmetic Logic Unit,算術(shù)邏輯單元,簡(jiǎn)稱ALU)進(jìn)行放大處理后如圖3-8所示。

圖3-8 算術(shù)邏輯單元ALU
ALU更通俗易懂的名字是“進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算的處理單元”。ALU由數(shù)字電路構(gòu)成,它能進(jìn)行加、減法等算術(shù)運(yùn)算,也能做與、或、異或等邏輯運(yùn)算。
為了方便講解,在圖3-8中我們把ALU的兩個(gè)輸入分別標(biāo)注為輸入1和輸入2, ALU的兩個(gè)輸出分別標(biāo)注為輸出1和輸出2,其中輸入1來(lái)自暫存器1,輸入2來(lái)自暫存器2,輸出1輸出到程序狀態(tài)字PSW,輸出2輸出到總線。這里,有幾點(diǎn)需要了解:
(1)輸入1和輸入2的數(shù)據(jù)來(lái)自總線,送入ALU中運(yùn)算后,運(yùn)算結(jié)果通過(guò)輸出2又輸出到總線上。
(2)ALU的狀態(tài)通過(guò)輸出1送往程序狀態(tài)字PSW(Program State Word,簡(jiǎn)稱PSW),所以,程序狀態(tài)字PSW隨著ALU的運(yùn)算過(guò)程發(fā)生相應(yīng)的變化。如執(zhí)行加法指令A(yù)DD時(shí),當(dāng)最高位有進(jìn)位時(shí),程序狀態(tài)字中PSW的CY就被置1,這都?xì)w功于ALU通過(guò)輸出1向程序狀態(tài)字PSW中的CY位輸出高電平。
從圖中還看到,在輸入1和輸入2之前,有兩個(gè)單元電路——暫存器1和暫存器2,它們是緩存,用于數(shù)據(jù)的緩沖。之所以使用緩沖機(jī)制,原因是當(dāng)總線上傳來(lái)數(shù)據(jù)時(shí),ALU有可能還沒有完成前一個(gè)運(yùn)算。這時(shí),總線上的數(shù)據(jù)就可以先存儲(chǔ)在暫存器1和暫存器2中,當(dāng)ALU完成前一個(gè)運(yùn)算后,就把暫存器1和暫存器2中的數(shù)據(jù)通過(guò)輸入1和輸入2讀進(jìn)來(lái)進(jìn)行運(yùn)算。
本單元針對(duì)單片機(jī)的抽象結(jié)構(gòu)重點(diǎn)介紹了I/O口和ALU,還有一些很重要的功能模塊和概念如RAM、ROM等有待在后續(xù)的學(xué)習(xí)中介紹。本單元的內(nèi)容可能一開始不好理解,其實(shí)不用擔(dān)心,因?yàn)樯厦娴姆治鰧?duì)單片機(jī)應(yīng)用來(lái)說(shuō)用處不大,只是有助于理解其內(nèi)部結(jié)構(gòu)。盡管這樣,我們還是把圖3-7所示的單片機(jī)的抽象結(jié)構(gòu)分析了很大一部分,如4組I/O口和單片機(jī)的CPU——算術(shù)邏輯單元ALU等,并把總線上的數(shù)據(jù)傳輸機(jī)制解釋清楚了。這樣對(duì)于單片機(jī)內(nèi)部結(jié)構(gòu)的初步了解已經(jīng)足夠了。
- 嵌入式實(shí)時(shí)操作系統(tǒng)原理與最佳實(shí)踐
- 單片機(jī)基礎(chǔ)及應(yīng)用項(xiàng)目式教程
- 用Proteus可視化設(shè)計(jì)玩轉(zhuǎn)Arduino
- 單片機(jī)應(yīng)用項(xiàng)目化教程
- 嵌入式Linux接口開發(fā)技術(shù)
- 嵌入式Qt實(shí)戰(zhàn)教程
- 單片機(jī)應(yīng)用技術(shù)
- 嵌入式虛擬化技術(shù)與應(yīng)用:ACRN開源項(xiàng)目實(shí)踐
- AVR單片機(jī)實(shí)用程序設(shè)計(jì)
- 基于STM32的嵌入式系統(tǒng)設(shè)計(jì)與實(shí)踐
- 單片機(jī)原理與應(yīng)用技術(shù)
- 51單片機(jī)工程師是怎樣煉成的:基于C語(yǔ)言+Proteus仿真
- 嵌入式系統(tǒng)與Qt程序開發(fā)
- 單片機(jī)開發(fā)從入門到實(shí)踐
- 單片機(jī)技術(shù)及應(yīng)用(C語(yǔ)言版)