大學(xué)課件-單片機(jī)原理_第1頁(yè)
大學(xué)課件-單片機(jī)原理_第2頁(yè)
大學(xué)課件-單片機(jī)原理_第3頁(yè)
大學(xué)課件-單片機(jī)原理_第4頁(yè)
大學(xué)課件-單片機(jī)原理_第5頁(yè)
已閱讀5頁(yè),還剩252頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章預(yù)備知識(shí)(數(shù)制與碼制)1.1進(jìn)位計(jì)數(shù)制及各計(jì)數(shù)制間的轉(zhuǎn)換1.2二進(jìn)制數(shù)的運(yùn)算1.3帶符號(hào)數(shù)的表示方法——

原碼、反碼、補(bǔ)碼1.4定點(diǎn)數(shù)與浮點(diǎn)數(shù)1.5BCD碼和ASCII碼

1.1進(jìn)位計(jì)數(shù)制及各計(jì)數(shù)制間的轉(zhuǎn)換

數(shù)制是人們對(duì)事物數(shù)量計(jì)數(shù)的一種統(tǒng)計(jì)規(guī)律。在日常生活中最常用的是十進(jìn)制,但在計(jì)算機(jī)中,由于其電氣元件最易實(shí)現(xiàn)的是兩種穩(wěn)定狀態(tài):器件的“開(kāi)”與“關(guān)”;電平的“高”與“低”。因此,采用二進(jìn)制數(shù)的“0”和“1”可以很方便地表示機(jī)內(nèi)的數(shù)據(jù)運(yùn)算與存儲(chǔ)。在編程時(shí),為了方便閱讀和書寫,人們還經(jīng)常用八進(jìn)制數(shù)或十六進(jìn)制來(lái)表示二進(jìn)制數(shù)。雖然一個(gè)數(shù)可以用不同計(jì)數(shù)制形式表示它的大小,但該數(shù)的量值則是相等的。1.1.1進(jìn)位計(jì)數(shù)制當(dāng)進(jìn)位計(jì)數(shù)制采用位置表示法時(shí),同一數(shù)字在不同的數(shù)位所代表的數(shù)值是不同的。每一種進(jìn)位計(jì)數(shù)應(yīng)包含兩個(gè)基本的因素:(1)基數(shù)R(Radix):它代表計(jì)數(shù)制中所用到的數(shù)碼個(gè)數(shù)。如:二進(jìn)制計(jì)數(shù)中用到0和1兩個(gè)數(shù)碼;而八進(jìn)制計(jì)數(shù)中用到0~7共八個(gè)數(shù)碼。一般地說(shuō),基數(shù)為R的計(jì)數(shù)制(簡(jiǎn)稱R進(jìn)制)中,包含0、1、…、R-1個(gè)數(shù)碼,進(jìn)位規(guī)律為“逢R進(jìn)1”。(2)位權(quán)W(Weight):進(jìn)位計(jì)數(shù)制中,某個(gè)數(shù)位的值是由這一位的數(shù)碼值乘以處在這一位的固定常數(shù)決定的,通常把這一固定常數(shù)稱之為位權(quán)值,簡(jiǎn)稱位權(quán)。各位的位權(quán)是以R為底的冪。如十進(jìn)制數(shù)基數(shù)R=10,則個(gè)位、十位、百位上的位權(quán)分別為100,101,102。一個(gè)R進(jìn)制數(shù)N,可以用以下兩種形式表示:(1)并列表示法,或稱位置計(jì)數(shù)法:

(N)R=(Kn-1Kn-2…K1K0K-1K-2…K-m)R(2)多項(xiàng)式表示法,或稱以權(quán)展開(kāi)式:(N)R=Kn-1Rn-1+Kn-2Rn-2+…+K1R1+K0R0+

K-1R-1+…+K-mR-m=

其中:m、n為正整數(shù),n代表整數(shù)部分的位數(shù);m代表小數(shù)部分的位數(shù);Ki代表R進(jìn)制中的任一個(gè)數(shù)碼,0≤Ki≤R-1。

1.二進(jìn)制數(shù)二進(jìn)制數(shù),R=2,Ki取0或1,進(jìn)位規(guī)律為“逢2進(jìn)1”。任一個(gè)二進(jìn)制數(shù)N可表示為:(N)2=Kn-12n-1+Kn-22n-2+…+K121+K020+K-12-1+…+K-m2-m(1―1)

例如:(1001.101)2=1×23+0×22+0×21+1×20+1×2-1+0×2-22.八進(jìn)制數(shù)八進(jìn)制,R=8,Ki可取0~7共8個(gè)數(shù)碼中的任意1個(gè),進(jìn)位規(guī)律為“逢8進(jìn)1”。任意一個(gè)八進(jìn)制數(shù)N可以表示為:(N)8=Kn-18n-1+Kn-28n-2+…+K181+K080+

K-18-1+…+K-m8-m(1―2)例如:(246.12)8=2×82+4×81+6×80+1×8-1+2×8-23.十六進(jìn)制數(shù)十六進(jìn)制數(shù),R=16,Ki可取0~15共16個(gè)數(shù)碼中的任一個(gè),但10~15分別用A、B、C、D、E、F表示,進(jìn)位規(guī)律為“逢16進(jìn)1”。任意一個(gè)十六進(jìn)制數(shù)N可表示為:

(N)16=Kn-116n-1+Kn-216n-2+…+K1161+K0160+K-116-1+…+K-m16–m(1―3)

例如:(2D07.A)16=2×163+13×162+0×161+7×160+10×16-1

表1―1給出了以上3種進(jìn)制數(shù)與十進(jìn)制數(shù)的對(duì)應(yīng)關(guān)系。為避免混淆,除用(N)R的方法區(qū)分不同進(jìn)制數(shù)外,還常用數(shù)字后加字母作為標(biāo)注。其中字母B(Binary)表示二進(jìn)制數(shù);字母Q(Octal的縮寫為字母O,為區(qū)別數(shù)字0故寫成Q)表示八進(jìn)制數(shù);字母D(Decimal)或不加字母表示十進(jìn)制數(shù);字母H(Hexadecimal)表示十六進(jìn)制數(shù)。表1―1二、八、十、十六進(jìn)制數(shù)碼對(duì)應(yīng)表1.1.2各種進(jìn)制數(shù)間的相互轉(zhuǎn)換

1.各種進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)各種進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法是:將各進(jìn)制數(shù)先按權(quán)展成多項(xiàng)式,再利用十進(jìn)制運(yùn)算法則求和,即可得到該數(shù)對(duì)應(yīng)的十進(jìn)制數(shù)。例1:將數(shù)1001.101B,246.12Q,2D07.AH轉(zhuǎn)換為十進(jìn)制數(shù)。

1001.101B=1×23+0×22+0×21+1×20+1×21+0×2-2+1×2-3

=8+1+0.5+0.125=9.625246.12Q=2×82+4×81+6×80+1×8-1+2×8-2

=128+32+6+0.125+0.03125=166.156252D07.AH=2×163+13×162+0×161+7×160+10×16-1

=8192+3328+7+0.625=11527.6252.十進(jìn)制數(shù)轉(zhuǎn)換為二、八、十六進(jìn)制數(shù)任一十進(jìn)制數(shù)N轉(zhuǎn)換成q進(jìn)制數(shù),先將整數(shù)部分與小數(shù)部分分為兩部分,并分別進(jìn)行轉(zhuǎn)換,然后再用小數(shù)點(diǎn)將這兩部分連接起來(lái)。

1)整數(shù)部分轉(zhuǎn)換整數(shù)部分轉(zhuǎn)換步驟為:第1步:用q去除N的整數(shù)部分,得到商和余數(shù),記余數(shù)為q進(jìn)制整數(shù)的最低位數(shù)碼K0;

第2步:再用q去除得到的商,求出新的商和余數(shù),余數(shù)又作為q進(jìn)制整數(shù)的次低位數(shù)碼K1;第3步:再用q去除得到的新商,再求出相應(yīng)的商和余數(shù),余數(shù)作為q進(jìn)制整數(shù)的下一位數(shù)碼Ki;第4步:重復(fù)第3步,直至商為零,整數(shù)轉(zhuǎn)換結(jié)束。此時(shí),余數(shù)作為轉(zhuǎn)換后q進(jìn)制整數(shù)的最高位數(shù)碼Kn-1。2|1682|84余數(shù)0,K0=02|42余數(shù)0,K1=02|21余數(shù)0,K2=02|10余數(shù)1,K3=12|5余數(shù)0,K4=08|168

2|2余數(shù)1,K5=18|21余數(shù)0,K0=016|1682|1余數(shù)0,K6=08|2余數(shù)5,K1=51616|10余數(shù)8,K0=80余數(shù)1,K7=1

0余數(shù)2,K2=20余數(shù)10,K1=A168=10101000B168=250Q168=A8H2)小數(shù)部分轉(zhuǎn)換小數(shù)部分轉(zhuǎn)換步驟為:第1步:用q去乘N的純小數(shù)部分,記下乘積的整數(shù)部分,作為q進(jìn)制小數(shù)的第1個(gè)數(shù)碼K-1;第2步:再用q去乘上次積的純小數(shù)部分,得到新乘積的整數(shù)部分,記為q進(jìn)制小數(shù)的次位數(shù)碼K-i;第3步:重復(fù)第2步,直至乘積的小數(shù)部分為零,或者達(dá)到所需要的精度位數(shù)為止。此時(shí),乘積的整數(shù)位作為q進(jìn)制小數(shù)位的數(shù)碼K-m。

例3:將0.686轉(zhuǎn)換成二、八、十六進(jìn)制數(shù)(用小數(shù)點(diǎn)后5位表示)。0.686×2=1.372K-1=10.686×8=5.488K-1=50.686×16=10.976K-1=A0.372×2=0.744K-2=00.488×8=3.904K-2=30.976×16=15.616K-2=F0.744×2=1.488K-3=10.904×8=7.232K-3=70.616×16=9.856K-3=90.488×2=0.976K-4=00.232×8=1.856K-4=10.856×16=13.696K-4=D0.976×2=1.952K-5=10.856×8=6.848K-5=60.696×16=11.136K-5=B0.686≈0.10101B0.686≈0.53716Q0.686≈0.AF9DBH

例4:將168.686轉(zhuǎn)換為二、八、十六進(jìn)制數(shù)。根據(jù)例2、例3可得:

168.686≈10101000.10101B168.686≈250.53716Q168.686≈A8.AF9DBH

從以上例子可以看出,二進(jìn)制表示的數(shù)愈精確,所需的數(shù)位就愈多,這樣,不利于書寫和記憶,而且容易出錯(cuò)。另外,若用同樣數(shù)位表示數(shù),則八、十六進(jìn)制數(shù)所表示數(shù)的精度較高。所以在匯編語(yǔ)言編程中常用八進(jìn)制或十六進(jìn)制數(shù)作為二進(jìn)制數(shù)的縮碼,來(lái)書寫和記憶二進(jìn)制數(shù),便于人—機(jī)信息交換。在MCS-51系列單片機(jī)編程中,通常采用十六進(jìn)制數(shù)。3.二進(jìn)制數(shù)與八進(jìn)制數(shù)之間的相互轉(zhuǎn)換由于23=8,故可采用“合3為1”的原則,即從小數(shù)點(diǎn)開(kāi)始分別向左、右兩邊各以3位為1組進(jìn)行二—八換算;若不足3位的以0補(bǔ)足,便可將二進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)。

例5:將1111011.0101B轉(zhuǎn)換為八進(jìn)制數(shù)。解:根據(jù)“合3為1”和不足3位以0補(bǔ)足的原則,將此二進(jìn)制數(shù)書寫為:

001111011.010100173.24

因此,其結(jié)果為1111011.0101B=173.24Q。

例6:將1357.246Q轉(zhuǎn)換成二進(jìn)制數(shù)。解:根據(jù)“1分為3”的原則,可將該十進(jìn)制數(shù)書寫為:

1357.246001011101111.010100110

其結(jié)果為1357.246Q=1011101111.01010011B。

4.二進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的相互轉(zhuǎn)換由于24=16,故可采用“合4為1”的原則,從小數(shù)點(diǎn)開(kāi)始分別向左、右兩邊各以4位為1組進(jìn)行二—十六換算;若不足4位以0補(bǔ)足,便可將二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)。

例7:將1101000101011.001111B轉(zhuǎn)換成十六進(jìn)制數(shù)。解:根據(jù)“合4為1”的原則,可將該二進(jìn)制數(shù)書寫為:

0001101000101011.001111001A2B.3C

其結(jié)果為1101000101011.001111B=1A2B.3CH。反之,采用“1分為4”的原則,每位十六進(jìn)制數(shù)用4位二進(jìn)制數(shù)表示,便可將十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。

例8:將4D5E.6FH轉(zhuǎn)換成二進(jìn)制數(shù)。解:根據(jù)“1分為4”的原則,可將該十六進(jìn)制數(shù)書寫為:

4D5E.6F0100110101011110.01101111

其結(jié)果為4D5E.6FH=100110101011110.01101111B。1.2二進(jìn)制數(shù)的運(yùn)算1.2.1二進(jìn)制數(shù)的算術(shù)運(yùn)算二進(jìn)制數(shù)不僅物理上容易實(shí)現(xiàn),而且算術(shù)運(yùn)算也比較簡(jiǎn)單,其加、減法遵循“逢2進(jìn)1”、“借1當(dāng)2”的原則。以下通過(guò)4個(gè)例子說(shuō)明二進(jìn)制數(shù)的加、減、乘、除運(yùn)算過(guò)程。

1.二進(jìn)制加法

1位二進(jìn)制數(shù)的加法規(guī)則為:0+0=00+1=11+0=11+1=10(有進(jìn)位)

例1:求11001010B+11101B。解:被加數(shù)11001010

加數(shù)11101

進(jìn)位+)00110000

和11100111

則11001010B+11101B=11100111B。由此可見(jiàn),兩個(gè)二進(jìn)制數(shù)相加時(shí),每1位有3個(gè)數(shù)參與運(yùn)算(本位被加數(shù)、加數(shù)、低位進(jìn)位),從而得到本位和以及向高位的進(jìn)位。2.二進(jìn)制減法

1位二進(jìn)制數(shù)減法規(guī)則為:1-0=11-1=00-0=00-1=1(有借位)

例2:求10101010B-10101B。

解:被減數(shù)10101010

減數(shù)10101

借位-)00101010

差10010101

則10101010B-10101B=10010101B。3.二進(jìn)制乘法

1位二進(jìn)制乘法規(guī)則為:0×0=00×1=01×0=01×1=1

例3:求110011B×1011B。

解:被乘數(shù)110011

乘數(shù)×)1011110011110011000000

+)110011

積1000110001

則110011B×1011B=1000110001B。由運(yùn)算過(guò)程可以看出,二進(jìn)制數(shù)乘法與十進(jìn)制數(shù)乘法相類似,可用乘數(shù)的每1位去乘被乘數(shù),乘得的中間結(jié)果的最低有效位與相應(yīng)的乘數(shù)位對(duì)齊,若乘數(shù)位為1,則中間結(jié)果為被乘數(shù);若乘數(shù)位為0,則中間結(jié)果為0,最后把所有中間結(jié)果同時(shí)相加即可得到乘積。顯然,這種算法計(jì)算機(jī)實(shí)現(xiàn)時(shí)很不方便。對(duì)于沒(méi)有乘法指令的微型計(jì)算機(jī)來(lái)說(shuō),常采用比較、相加、與部分積右移相結(jié)合的方法進(jìn)行編程來(lái)實(shí)現(xiàn)乘法運(yùn)算。4.二進(jìn)制除法二進(jìn)制除法的運(yùn)算過(guò)程類似于十進(jìn)制除法的運(yùn)算過(guò)程。例4:求100100B÷101B。解:00011110110010010110001011101011

則100100B÷101B=111B,余1B。二進(jìn)制數(shù)除法是二進(jìn)制數(shù)乘法的逆運(yùn)算,在沒(méi)有除法指令的微型計(jì)算機(jī)中,常采用比較、相減、余數(shù)左移相結(jié)合的方法進(jìn)行編程來(lái)實(shí)現(xiàn)除法運(yùn)算。由于MCS-51系列單片機(jī)指令系統(tǒng)中包含有加、減、乘、除指令,因此給用戶編程帶來(lái)了許多方便,同時(shí)也提高了機(jī)器的運(yùn)算效率。1.2.2二進(jìn)制數(shù)的邏輯運(yùn)算

1.“與”運(yùn)算(AND)

“與”運(yùn)算又稱邏輯乘,運(yùn)算符為·或∧?!芭c”運(yùn)算的規(guī)則如下:0·0=00·1=1·0=01·1=1

例5:若二進(jìn)制數(shù)X=10101111B,Y=01011110B,求

X·Y。

10101111∧0101111000001110

則X·Y=00001110B。2.“或”運(yùn)算(OR)

“或”運(yùn)算又稱邏輯加,運(yùn)算符為+或∨?!盎颉边\(yùn)算的規(guī)則如下:0+0=00+1=1+0=11+1=1

例6:若二進(jìn)制數(shù)X=10101111B,Y=01011110B,求X

+Y。

10101111∨0101111011111111

則X+Y=11111111B。3.“非”運(yùn)算(NOT)

“非”運(yùn)算又稱邏輯非,如變量A的“非”運(yùn)算記作?!胺恰边\(yùn)算的規(guī)則如下:

例7:若二進(jìn)制數(shù)A=10101111B,求。==01010000B

由此可見(jiàn),邏輯“非”可使A中各位結(jié)果均發(fā)生反變化,即0變1,1變0。

4.“異或”運(yùn)算(XOR)

“異或”運(yùn)算的運(yùn)算符為或,其運(yùn)算規(guī)則如下:00=001=10=111=0

例8:若二進(jìn)制數(shù)X=10101111B,Y=01011110B,求

XY。

1010111101011110

11110001

則XY=11110001B。1.3帶符號(hào)數(shù)的表示方法——

原碼、反碼、補(bǔ)碼1.3.1機(jī)器數(shù)與真值在1.2.1、1.2.2節(jié)中討論的二進(jìn)制數(shù)運(yùn)算均為無(wú)符號(hào)數(shù)運(yùn)算,但實(shí)際的數(shù)值是帶有符號(hào)的,既可能是正數(shù),也可能是負(fù)數(shù),前者符號(hào)用“+”號(hào)表示,后者符號(hào)用“-”號(hào)表示,運(yùn)算的結(jié)果也可能是正數(shù),也可能是負(fù)數(shù)。于是在計(jì)算機(jī)中就存在著如何表示正、負(fù)數(shù)的問(wèn)題。

由于計(jì)算機(jī)只能識(shí)別0和1,因此,在計(jì)算機(jī)中通常把一個(gè)二進(jìn)制數(shù)的最高位作為符號(hào)位,以表示數(shù)值的正與負(fù)(若用8位表示一個(gè)數(shù),則D7位為符號(hào)位;若用16位表示一個(gè)數(shù),則D15位為符號(hào)位),并用0表示“+”;用1表示“-”。例如:N1=+1011,N2=-1011在計(jì)算機(jī)中用8位二進(jìn)制數(shù)可分別表示為:D7D6D5D4D3D2D1D0

00001011符號(hào)

數(shù)值部分1.3.2原碼、補(bǔ)碼與反碼

1.原碼正數(shù)的符號(hào)位用0表示,負(fù)數(shù)的符號(hào)位用1表示,數(shù)值部分用真值的絕對(duì)值來(lái)表示的二進(jìn)制機(jī)器數(shù)稱之為原碼,用[X]原表示。

(1)正數(shù)的原碼。D7D6D5D4D3D2D1D010001011符號(hào)

數(shù)值部分若真值為正數(shù)X=+Kn-2Kn-3…K1K0(即n-1位二進(jìn)制正數(shù)),

則[X]原=0Kn-2Kn-3…K1K0(1―4)2)負(fù)數(shù)的原碼。若真值為負(fù)數(shù)X=-Kn-2Kn-3…K1K0(即n-1位二進(jìn)制負(fù)數(shù)),

則[X]原=0Kn-2Kn-3…K1K0

=2n-1+Kn-2Kn-3…K1K0

=2n-1

-(-Kn-2Kn-3…K1K0)

=2n-1

-X(1―5)

例如:+115和-115在計(jì)算機(jī)中(設(shè)機(jī)器字長(zhǎng)為8位),其原碼可分別表示為:

[+115]原=01110011B;[-115]原=11110011B(3)零的原碼。若真值為零,則原碼有兩種表示法:

[+0]原=000…00

[-0]原=100…00

由此可得原碼與真值的關(guān)系為

X,0≤X<2n

2n-1-X-2n<X≤0(1―6)[X]原=2.補(bǔ)碼與反碼

1)補(bǔ)碼的概念在日常生活中有許多“補(bǔ)”數(shù)的事例。如鐘表,假設(shè)標(biāo)準(zhǔn)時(shí)間為6點(diǎn)整,而某鐘表卻指在9點(diǎn),若要把表?yè)軠?zhǔn),可以有兩種撥法,一種是倒撥3小時(shí),即9-3=6;另一種是順撥9小時(shí),即9+9=6。盡管將表針倒撥或順撥不同的時(shí)數(shù),但卻得到相同的結(jié)果,即9-3與9+9是等價(jià)的。這是因?yàn)殓姳聿捎?2小時(shí)進(jìn)位,超過(guò)12就從頭算起,即:9+9=12+6,該12稱之為模(mod)。

模(mod)為一個(gè)系統(tǒng)的量程或此系統(tǒng)所能表示的最大數(shù),它會(huì)自然丟掉,如:9-3=9+9=12+6→6(mod12自然丟掉)

通常稱+9是-3在模為12時(shí)的補(bǔ)數(shù)。于是,引入補(bǔ)數(shù)后使減法運(yùn)算變?yōu)榧臃ㄟ\(yùn)算。

例如:11-7=11+5→4(mod12)+5是-7在模為12時(shí)的補(bǔ)數(shù),減7與加5的效果是一樣的。

一般情況下,任一整數(shù)X,在模為K時(shí)的補(bǔ)數(shù)可用下式表示:

[X]補(bǔ)數(shù)=X+K(modK)X0≤X<KK-|X|-K≤X≤0(1―7)=

由補(bǔ)碼的概念引伸,當(dāng)用n位二進(jìn)制數(shù)表示整數(shù)X(1位為符號(hào)位,n-1位為數(shù)值位),模為2n時(shí),數(shù)X的補(bǔ)碼可表示為:X0≤X<2n-1

2n+X-2n-1≤X≤0(mod2n)[X]補(bǔ)=(1―8)從式(1―8)可見(jiàn):①正數(shù)的補(bǔ)碼與其原碼相同,即[X]補(bǔ)=[X]原;②零的補(bǔ)碼為零,[+0]補(bǔ)=[-0]補(bǔ)=000…00;③負(fù)數(shù)才有求補(bǔ)碼的問(wèn)題。2)負(fù)數(shù)補(bǔ)碼的求法補(bǔ)碼的求法一般有兩種:①用補(bǔ)碼定義式:[X]補(bǔ)=2n+X=2n-|X|-2n-1≤X≤0(整數(shù))(1―9)

在用補(bǔ)碼定義式求補(bǔ)碼的過(guò)程中,由于做一次減法很不方便,故該法一般不用。例如:X=-0101111B,n=8,則[X]補(bǔ)=28+(-0101111B)

=100000000B-0101111B

=11010001B(mod28)②用原碼求反碼,再在數(shù)值末位加1可得到補(bǔ)碼,即:[X]補(bǔ)=[X]反+1。3)反碼一個(gè)正數(shù)的反碼,等于該數(shù)的原碼;一個(gè)負(fù)數(shù)的反碼,等于該負(fù)數(shù)的原碼符號(hào)位不變(即為1),數(shù)值位按位求反(即0變1,1變0);或者在該負(fù)數(shù)對(duì)應(yīng)的正數(shù)原碼上連同符號(hào)位逐位求反。反碼用[X]反表示。

X0≤X<2n-1

(2n-1)+X-2n-1<X≤0(1―10)[X]反=

從式(1―10)可見(jiàn):①正數(shù)的反碼:[X]反=[X]原;②負(fù)數(shù)的反碼:[X]反=③零的反碼:[+0]反=000…00

[-0]反=111…11

例1:假設(shè)X1=+83,X2=-76,當(dāng)用8位二進(jìn)制數(shù)表示一個(gè)數(shù)時(shí),求X1、X2的原碼、反碼及補(bǔ)碼。解:[X1]原=[X1]反=[X1]補(bǔ)=01010011B

[X2]原=11001100B[X2]反=10110011B[X2]補(bǔ)=[X]反+1=10110100B

綜上所述可歸納為:

正數(shù)的原碼、反碼、補(bǔ)碼就是該數(shù)本身;負(fù)數(shù)的原碼其符號(hào)位為1,數(shù)值位不變;負(fù)數(shù)的反碼其符號(hào)位為1,數(shù)值位逐位求反;負(fù)數(shù)的補(bǔ)碼其符號(hào)位為1,數(shù)值位逐位求反并在末位加1。1.3.3補(bǔ)碼的運(yùn)算規(guī)則與溢出判別

1.補(bǔ)碼的運(yùn)算規(guī)則補(bǔ)碼的運(yùn)算規(guī)則如下:1)[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)該運(yùn)算規(guī)則說(shuō)明:任何兩個(gè)數(shù)相加,無(wú)論其正負(fù)號(hào)如何,只要對(duì)它們各自的補(bǔ)碼進(jìn)行加法運(yùn)算,就可得到正確的結(jié)果,該結(jié)果是補(bǔ)碼形式。2)[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)該運(yùn)算規(guī)則說(shuō)明:任意兩個(gè)數(shù)相減,只要對(duì)減數(shù)連同“-”號(hào)求補(bǔ),就變成[被減數(shù)]補(bǔ)與[-減數(shù)]補(bǔ)相加,該結(jié)果是補(bǔ)碼形式。

3)[[X]補(bǔ)]補(bǔ)=[X]原對(duì)于運(yùn)算產(chǎn)生的補(bǔ)碼結(jié)果,若要轉(zhuǎn)換為原碼表示,則正數(shù)的結(jié)果[X]補(bǔ)=[X]原;負(fù)數(shù)結(jié)果,只要對(duì)該補(bǔ)結(jié)果再進(jìn)行一次求補(bǔ)運(yùn)算,就可得到負(fù)數(shù)的原碼結(jié)果。例2:用補(bǔ)碼求X+Y。解:若[X]補(bǔ)=00100101,

[Y]補(bǔ)=00110011,可得[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=00100101+00110011=01011000由于符號(hào)位為0是正數(shù),所以[X+Y]原=[X+Y]補(bǔ)=01011000

則X+Y=(01011000)2=+88例3:用補(bǔ)碼求X-Y。解:若[-Y]補(bǔ)=11001101,可得[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)=00100101+11001101=11110010由于符號(hào)位為1是負(fù)數(shù),所以[X-Y]原=[[X-Y]補(bǔ)]補(bǔ)=10001110則X-Y=-(00001110)2=-14例4:用補(bǔ)碼求Y-X。解:若[-X]補(bǔ)=11011011,可得[Y-X]補(bǔ)=[Y]補(bǔ)+[-X]補(bǔ)=00110011+11011011=100001110(模28自然丟失)則Y-X=(00001110)2=+14

例5:用補(bǔ)碼求(-X)+(-Y)。解:[(-X)+(-Y)]補(bǔ)=[-X]補(bǔ)+[-Y]補(bǔ)=11011011+11001101=110101000(模28自然丟失)

[(-X)+(-Y)]原=[(-X)+(-Y)補(bǔ)]補(bǔ)=11011000

則(-X)+(-Y)=-(01011000)2=-88

上述運(yùn)算結(jié)果是正確的,但有時(shí)在補(bǔ)碼運(yùn)算中可能會(huì)出現(xiàn)錯(cuò)誤的結(jié)果,請(qǐng)看下面例子。例6:設(shè)X=+100,Y=+50,用補(bǔ)碼運(yùn)算求X+Y,(-X)+(-Y)。解:[X]補(bǔ)=01100100[Y]補(bǔ)=00110010

[-X]補(bǔ)=10011100[-Y]補(bǔ)=11001110[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=01100100+00110010=10010110

[X+Y]原=[[X+Y]補(bǔ)]補(bǔ)=11101010X+Y=-(01101010)2=-106而[-X]補(bǔ)+[-Y]補(bǔ)=10011100+11001110=01101010[[-X]補(bǔ)+[-Y]補(bǔ)]原=(01101010)2=01101010(-X)+(-Y)=+(01101010)=+1062.溢出的判別計(jì)算機(jī)中判別溢出的方法通常采用雙高位判別法。雙高位判別法利用符號(hào)位(Kn-1位)

及最高數(shù)值位(Kn-2位)的進(jìn)位情況來(lái)判斷是否發(fā)生了溢出。為此,需引進(jìn)兩個(gè)符號(hào):CS和CP。

CS:若符號(hào)位發(fā)生進(jìn)位,則CS

=1;否則CS

=0。

CP:若最高數(shù)值位發(fā)生進(jìn)位,則CP

=1;否則CP

=0。

當(dāng)兩個(gè)正數(shù)補(bǔ)碼相加時(shí),若數(shù)值部分之和大于2n-1,則數(shù)值部分必有進(jìn)位CP=1;而符號(hào)位卻無(wú)進(jìn)位CS=0。這時(shí)CSCP的狀態(tài)為“01”,發(fā)生正溢出。當(dāng)兩個(gè)負(fù)數(shù)補(bǔ)碼相加時(shí),若數(shù)值部分絕對(duì)值之和大于2n-1,則數(shù)值部分補(bǔ)碼之和必小于2n-1,CP=0;而符號(hào)位肯定有進(jìn)位CS=1,這時(shí)CSCP的狀態(tài)為“10”,發(fā)生負(fù)溢出。當(dāng)不發(fā)生溢出時(shí),CS和CP的狀態(tài)是相同的,即CSCP的狀態(tài)為“00”或“11”。

例7:01011001(+89)10010010(-110)01101100(+108)10100100(-92)+)011110000(進(jìn)位)+)100000000(進(jìn)位)011000101(-59)100110110(+54)CS=0,CP=1,正溢出CS=1,CP=0,負(fù)溢出

例8:00110010(+50)11101100(-20)01000110(+70)11100010(-30)+)000001100(進(jìn)位)+)111000000(進(jìn)位)001111000(+120)111001110(-50)CS=0,CP=0,無(wú)溢出CS=1,CP=1,無(wú)溢出例9:01010101(+85)10111100(-68)11011101(-35)00011101(+29)+)110111010(進(jìn)位)+)001111000(進(jìn)位)100110010(+50)011011001(-39)CS=1,CP=1,無(wú)溢出CS=0,CP=0,無(wú)溢出

綜上所述,對(duì)計(jì)算機(jī)而言,補(bǔ)碼的引入使帶符號(hào)數(shù)的運(yùn)算都按加法處理。如果CS和CP的值相等,則表示運(yùn)算結(jié)果正確,沒(méi)有溢出,運(yùn)算結(jié)果的正與負(fù)由符號(hào)位決定(如例8、例9);如果CS和CP的值不等,則表示運(yùn)算結(jié)果不正確,發(fā)生了溢出現(xiàn)象(如例7)。

在計(jì)算機(jī)中,常用“異或”電路來(lái)判別有無(wú)溢出發(fā)生,即CSCP=1表示有溢出發(fā)生,否則無(wú)溢出發(fā)生。1.4定點(diǎn)數(shù)與浮點(diǎn)數(shù)1.4.1定點(diǎn)表示法在計(jì)算機(jī)中,如將小數(shù)點(diǎn)的位置固定不變,稱為定點(diǎn)表示法。這個(gè)固定的位置是事先約定好的,不必用符號(hào)表示。用定點(diǎn)法表示的實(shí)數(shù)叫做定點(diǎn)數(shù)。通常,定點(diǎn)表示采用以下兩種方法。1.定點(diǎn)整數(shù)表示法小數(shù)點(diǎn)固定在最低數(shù)值位之后,機(jī)器中能表示的所有數(shù)都是整數(shù),這種方法稱之為定點(diǎn)整數(shù)表示法。其格式如下:

符號(hào)位

數(shù)值位

其中“.”為設(shè)定的小數(shù)點(diǎn)位置

當(dāng)用n位表示數(shù)N時(shí),1位為符號(hào)位,n-1位為數(shù)值位,則N的范圍是:

-2n-1≤N≤2n-1-1(1―11)

若n=8,則-128≤N≤127;若n=16,則-32768≤N≤32767。例如:若N=+1011011,n=8,則在計(jì)算機(jī)內(nèi)用定點(diǎn)整數(shù)法可將N表示為:010110112.定點(diǎn)小數(shù)表示法小數(shù)點(diǎn)固定在最高數(shù)值位之前,機(jī)器中能表示的所有數(shù)即為純小數(shù),這種方法稱之為定點(diǎn)小數(shù)表示法。其格式如下:

符號(hào)位

數(shù)值位

其中“.”為設(shè)定的小數(shù)點(diǎn)位置。當(dāng)用n位表示數(shù)N時(shí),1位為符號(hào)位,n-1位為數(shù)值位,則N的范圍是:

-(1-21-n)≤N≤1-21-n(1―12)

例如:若N=-0.1011011,n=8,則在計(jì)算機(jī)內(nèi)用定點(diǎn)小數(shù)法可將N表示為:010110111.4.2浮點(diǎn)表示法在計(jì)算機(jī)中,小數(shù)點(diǎn)位置并不是固定不變的,而是可以改變的,這種表示法稱為浮點(diǎn)表示法。用浮點(diǎn)法表示的實(shí)數(shù),叫做浮點(diǎn)數(shù)。任意一個(gè)二進(jìn)制數(shù)N可以表示成如下形式:N=±M·2±E(1―13)

稱作數(shù)符,表示數(shù)的正、負(fù);E稱為階碼,它前面的符號(hào)稱為階符,指明尾數(shù)小數(shù)點(diǎn)向右或向左浮動(dòng)的方向,而階碼E指明尾數(shù)小數(shù)點(diǎn)移動(dòng)的位數(shù),所以階符和階碼表明了數(shù)值N小數(shù)點(diǎn)的位置。

設(shè)階碼E的位數(shù)為m位,尾數(shù)M的位數(shù)為n位,則浮點(diǎn)數(shù)N的取值范圍為:2-n·2-(2m-1)≤|N|≤(1-2-n)·2(2m-1)(1―14)

例如:對(duì)16位表示的浮點(diǎn)原碼數(shù),當(dāng)m=7,n=7時(shí),它所能表示的最大絕對(duì)值為:|N|max=(1-2-n)·2(2m-1)

=(1-2-7)·2(27-1)≈2127

它所能表示的除0以外的最小絕對(duì)值為:|N|min=2-n·2-(2m-1)=2-7·2-(27-1)

=2-134(1―15)

由此可見(jiàn),由于浮點(diǎn)數(shù)能表示的數(shù)值范圍很大,因此,在科學(xué)計(jì)算時(shí)不需要比例因子。為了提高精度,發(fā)揮尾數(shù)有效位的最大作用,還規(guī)定二進(jìn)制浮點(diǎn)數(shù)其尾數(shù)數(shù)字部分原碼的最高位為1,叫做規(guī)格化表示法。如:0.0010101可表示為2-2×0.1010100稱為規(guī)格化浮點(diǎn)數(shù)。

1.5BCD碼和ASCII碼

1.5.1BCD碼(BinaryCodedDecimal)

二進(jìn)制數(shù)以其物理易實(shí)現(xiàn)和運(yùn)算簡(jiǎn)單的優(yōu)點(diǎn)在計(jì)算機(jī)中得到了廣泛應(yīng)用,但人們?nèi)粘A?xí)慣最熟悉的還是十進(jìn)制。為了既滿足人們的習(xí)慣,又能讓計(jì)算機(jī)接受,便引入了BCD碼。它用二進(jìn)制數(shù)碼按照不同規(guī)律編碼來(lái)表示十進(jìn)制數(shù),這樣的十進(jìn)制數(shù)的二進(jìn)制編碼,既具有二進(jìn)制的形式,又具有十進(jìn)制的特點(diǎn),便于傳遞處理。1位十進(jìn)制數(shù)有0~9共10個(gè)不同數(shù)碼,需要由4位二進(jìn)制數(shù)來(lái)表示。4位二進(jìn)制數(shù)有16種組合,取其10種組合分別代表10個(gè)十進(jìn)制數(shù)碼。最常用的方法是8421BCD碼,其中8、4、2、1分別為4位二進(jìn)制數(shù)的位權(quán)值。表1―2給出了十進(jìn)制數(shù)和8421BCD碼的對(duì)應(yīng)關(guān)系。

表1―28421BCD碼

從表1―2中可看出8421BCD碼與十進(jìn)制數(shù)關(guān)系直觀,二—十間相互轉(zhuǎn)換容易。例如:將78.43轉(zhuǎn)換成相應(yīng)的BCD碼,而將(01101001.00010101)BCD轉(zhuǎn)換成十進(jìn)制數(shù)。

78.43=(01111000.01000011)BCD(01101001.00010101)BCD=69.151.5.2BCD碼運(yùn)算及十進(jìn)制調(diào)整若想讓計(jì)算機(jī)直接用十進(jìn)制的規(guī)律進(jìn)行運(yùn)算,則將數(shù)據(jù)用BCD碼來(lái)存儲(chǔ)和運(yùn)算即可。例如:4+3即:(0100)BCD+(0011)BCD=(0111)BCD=715+12即:(00010101)BCD+(00010010)BCD

=(00100111)BCD=27

但是,8421BCD碼可表示數(shù)的范圍為0000~1111(即十進(jìn)制的0~15),而十進(jìn)制數(shù)為0000~1001(即0~9)。所以,在運(yùn)算時(shí),必須注意以下兩點(diǎn):①當(dāng)兩個(gè)BCD數(shù)相加結(jié)果大于1001(即大于十進(jìn)制數(shù)9)時(shí),為使其符合十進(jìn)制運(yùn)算和進(jìn)位規(guī)律,需對(duì)BCD碼的二進(jìn)制運(yùn)算結(jié)果加0110(加6)調(diào)整。例如:4+8(0100)BCD+(1000)BCD=(1100)BCD>1001,

調(diào)整后,其結(jié)果為:(1100)BCD+(0110)BCD=(00010010)BCD=12。②當(dāng)兩個(gè)BCD數(shù)相加結(jié)果在本位上并不大于1001,但有低位進(jìn)位發(fā)生,使得兩個(gè)BCD數(shù)與進(jìn)位一起相加,其結(jié)果大于1001,這時(shí)也要作加0110(加6)調(diào)整。例如:用BCD數(shù)完成54+48的運(yùn)算。解:54=(01010100)BCD,48=(01001000)BCD01010100+)01001000

10011100(低4位大于9)+)0110(低4位加6調(diào)整)10100010(低4位有進(jìn)位)+)0110(高4位加6調(diào)整)000100000010

則(000100000010)BCD=1021.5.3ASCII碼與奇偶校驗(yàn)在計(jì)算機(jī)的應(yīng)用過(guò)程中,如操作系統(tǒng)命令,各種程序設(shè)計(jì)語(yǔ)言以及計(jì)算機(jī)運(yùn)算和處理信息的輸入輸出,經(jīng)常用到某些字母,數(shù)字或各種符號(hào),如:英文字母的大、小寫;0~9數(shù)字符;+、-、*、/運(yùn)算符;<、>、=關(guān)系運(yùn)算符等等。但在計(jì)算機(jī)內(nèi),任何信息都是用代碼表示的,因此,這些符號(hào)也必須要有自己的編碼。ASCII碼采用7位二進(jìn)制數(shù)對(duì)字符進(jìn)行編碼,它包括10個(gè)十進(jìn)制數(shù)0~9;大寫和小寫英文字母各26個(gè);32個(gè)通用控制符號(hào);34個(gè)專用符號(hào),共128個(gè)字符。其中數(shù)字0~9的ASCII編碼分別為30H~39H,英文大寫字母A~Z的ASCII編碼從41H開(kāi)始依次編至5AH。ASCII編碼從20H~7EH均為可打印字符,而00H~1FH為通用控制符,它們不能被打印出來(lái),只起控制或標(biāo)志的作用,如0DH表示回車(CR),0AH表示換行控制(LF),04H(EOT)為傳送結(jié)束標(biāo)志。

第2章單片機(jī)基礎(chǔ)

2.1概述2.2MCS—51系列單片機(jī)基本結(jié)構(gòu)2.3中央處理器CPU2.4MCS—51單片機(jī)存儲(chǔ)器及存儲(chǔ)空間2.5并行輸入/輸出接口

2.1概述2.1.1單片機(jī)的產(chǎn)生與發(fā)展單片機(jī)出現(xiàn)的歷史并不長(zhǎng),但發(fā)展十分迅猛。它的產(chǎn)生與發(fā)展和微處理器的產(chǎn)生與發(fā)展大體同步,自1971年美國(guó)Intel公司首先推出4位微處理器以來(lái),它的發(fā)展到目前為止大致可分為5個(gè)階段:

第1階段(1971~1976):單片機(jī)發(fā)展的初級(jí)階段。1971年11月Intel公司首先設(shè)計(jì)出集成度為2000只晶體管/片的4位微處理器Intel4004,并配有RAM、ROM和移位寄存器,構(gòu)成了第一臺(tái)MCS—4微處理器,而后又推出了8位微處理器Intel8008,以及其它各公司相繼推出的8位微處理器。

第2階段(1976~1980):低性能單片機(jī)階段。以1976年Intel公司推出的MCS—48系列為代表,采用將8位CPU、8位并行I/O接口、8位定時(shí)/計(jì)數(shù)器、RAM和ROM等集成于一塊半導(dǎo)體芯片上的單片結(jié)構(gòu),雖然其尋址范圍有限(不大于4KB),也沒(méi)有串行I/O,RAM、ROM容量小,中斷系統(tǒng)也較簡(jiǎn)單,但功能可滿足一般工業(yè)控制和智能化儀器、儀表等的需要。

第3階段(1980~1983):高性能單片機(jī)階段。這一階段推出的高性能8位單片機(jī)普遍帶有串行口,有多級(jí)中斷處理系統(tǒng),多個(gè)16位定時(shí)器/計(jì)數(shù)器。片內(nèi)RAM、ROM的容量加大,且尋址范圍可達(dá)64KB,個(gè)別片內(nèi)還帶有A/D轉(zhuǎn)換接口。

第4階段(1983~80年代末):16位單片機(jī)階段。1983年Intel公司又推出了高性能的16位單片機(jī)MCS—96系列,由于其采用了最新的制造工藝,使芯片集成度高達(dá)12萬(wàn)只晶體管/片。第5階段(90年代):單片機(jī)在集成度、功能、速度、可靠性、應(yīng)用領(lǐng)域等全方位向更高水平發(fā)展。2.1.2單片機(jī)的應(yīng)用由于單片機(jī)具有體積小、重量輕、價(jià)格便宜、功耗低,控制功能強(qiáng)及運(yùn)算速度快等特點(diǎn),因而在國(guó)民經(jīng)濟(jì)建設(shè)、軍事及家用電器等各個(gè)領(lǐng)域均得到了廣泛的應(yīng)用。按照單片機(jī)的特點(diǎn),其應(yīng)用可分為單機(jī)應(yīng)用與多機(jī)應(yīng)用。

1.單機(jī)應(yīng)用在一個(gè)應(yīng)用系統(tǒng)中,只使用1片單片機(jī)稱為單機(jī)應(yīng)用,這是目前應(yīng)用最多的一種方式。單片機(jī)應(yīng)用的主要領(lǐng)域有:(1)測(cè)控系統(tǒng)。用單片機(jī)可以構(gòu)成各種不太復(fù)雜的工業(yè)控制系統(tǒng)、自適應(yīng)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)等,達(dá)到測(cè)量與控制的目的。

(2)智能儀表。用單片機(jī)改造原有的測(cè)量、控制儀表,促進(jìn)儀表向數(shù)字化、智能化、多功能化、綜合化、柔性化方向發(fā)展。

(3)機(jī)電一體化產(chǎn)品。單片機(jī)與傳統(tǒng)的機(jī)械產(chǎn)品相結(jié)合,使傳統(tǒng)機(jī)械產(chǎn)品結(jié)構(gòu)簡(jiǎn)化,控制智能化。(4)智能接口。在計(jì)算機(jī)控制系統(tǒng),特別是在較大型的工業(yè)測(cè)、控系統(tǒng)中,用單片機(jī)進(jìn)行接口的控制與管理,加之單片機(jī)與主機(jī)的并行工作,大大提高了系統(tǒng)的運(yùn)行速度。

(5)智能民用產(chǎn)品。如在家用電器、玩具、游戲機(jī)、聲像設(shè)備、電子秤、收銀機(jī)、辦公設(shè)備、廚房設(shè)備等許多產(chǎn)品中,單片機(jī)控制器的引入,不僅使產(chǎn)品的功能大大增強(qiáng),性能得到提高,而且獲得了良好的使用效果。2.多機(jī)應(yīng)用單片機(jī)的多機(jī)應(yīng)用系統(tǒng)可分為功能集散系統(tǒng)、并行多機(jī)處理及局部網(wǎng)絡(luò)系統(tǒng)。

(1)功能集散系統(tǒng)。多功能集散系統(tǒng)是為了滿足工程系統(tǒng)多種外圍功能的要求而設(shè)置的多機(jī)系統(tǒng)。

(2)并行多機(jī)控制系統(tǒng)。并行多機(jī)控制系統(tǒng)主要解決工程應(yīng)用系統(tǒng)的快速性問(wèn)題,以便構(gòu)成大型實(shí)時(shí)工程應(yīng)用系統(tǒng)。

(3)局部網(wǎng)絡(luò)系統(tǒng)。2.1.3單片機(jī)系列簡(jiǎn)介目前世界上單片機(jī)生產(chǎn)廠商很多,如:Intel、Motorola、Philips、Siemens、NEC、ADM、Zilog等公司,其主流產(chǎn)品有幾十個(gè)系列,幾百個(gè)品種。盡管其各具特色,名稱各異,但作為集CPU、RAM、ROM(或EPROM)、I/O接口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)為一體的單片機(jī),其原理大同小異。現(xiàn)以Intel公司的系列產(chǎn)品為例,說(shuō)明各系列之間的區(qū)別。

Intel公司從其生產(chǎn)單片機(jī)開(kāi)始,發(fā)展到現(xiàn)在,大體上可分為3大系列:MCS—48系列、MCS—51系列、MCS—96系列。該3大系列的性能簡(jiǎn)介見(jiàn)表2―1。表2―1Intel單片機(jī)系列性能簡(jiǎn)介2.2MCS—51系列單片機(jī)基本結(jié)構(gòu)2.2.1MCS—51單片機(jī)系列

MCS—51系列單片機(jī)雖已有10多種產(chǎn)品,但可分為兩大系列:MCS—51子系列與MCS—52子系列。MCS—51子系列中主要有8031、8051、8751三種類型。而MCS—52子系列也有3種類型8032、8052、8752。各子系列配置見(jiàn)表2―2所示。表2―2MCS—51系列單片機(jī)配置一覽表

表2―2中列出了MCS—51系列單片機(jī)的兩個(gè)子系列,在4個(gè)性能上略有差異。由此可見(jiàn),在本子系列內(nèi)各類芯片的主要區(qū)別在于片內(nèi)有無(wú)ROM或EPROM;MCS—51與MCS—52子系列間所不同的是片內(nèi)程序存儲(chǔ)器ROM從4KB增至8KB;片內(nèi)數(shù)據(jù)存儲(chǔ)器由128個(gè)字節(jié)增至256個(gè)字節(jié);定時(shí)器/計(jì)數(shù)器增加了一個(gè);中斷源增加了1~2個(gè)。另外,對(duì)于制造工藝為CHMOS的單片機(jī),由于采用CMOS技術(shù)制造,因此具有低功耗的特點(diǎn),如8051功耗約為630mW,而80C51的功耗只有120mW。2.2.2MCS—51系列單片機(jī)內(nèi)部結(jié)構(gòu)及功能部件

MCS—51系列單片機(jī)的內(nèi)部結(jié)構(gòu)框圖如圖2―1所示。分析圖2―1,并按其功能部件劃分可以看出,MCS—51系列單片機(jī)是由8大部分組成的。圖2―2為按功能劃分的MCS—51系列單片機(jī)內(nèi)部結(jié)構(gòu)簡(jiǎn)化框圖。這8大部分是:·一個(gè)8位中央處理機(jī)CPU。

·128個(gè)字節(jié)(MCS—52子系列為256字節(jié))的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM。

·4KB(MCS—52子系列為8KB)的片內(nèi)程序只讀存儲(chǔ)器ROM或EPROM(8031和8032無(wú))。

·18個(gè)(MCS—52子系列為21個(gè))特殊功能寄存器SFR。

·4個(gè)8位并行輸入輸出I/O接口:P0口、P1口、P2口、P3口(共32線),用于并行輸入或輸出數(shù)據(jù)。

·1個(gè)串行I/O接口。

·2個(gè)(MCS—52子系列為3個(gè))16位定時(shí)器/計(jì)數(shù)器。

·1個(gè)具有5個(gè)(MCS—52子系列為6個(gè)或7個(gè))中斷源,可編程為2個(gè)優(yōu)先級(jí)的中斷系統(tǒng)。它可以接收外部中斷申請(qǐng),定時(shí)器/計(jì)數(shù)器中斷申請(qǐng)和串行口中斷申請(qǐng)。圖2―1MCS—51系列單片機(jī)內(nèi)部結(jié)構(gòu)框圖圖2―2MCS—51系列單片機(jī)內(nèi)部結(jié)構(gòu)簡(jiǎn)化框圖2.2.3單片機(jī)外部引腳說(shuō)明

MCS—51系列單片機(jī)芯片均為40個(gè)引腳,HMOS工藝制造的芯片采用雙列直插(DIP)方式封裝,其引腳示意及功能分類如圖2―3所示。CMOS工藝制造的低功耗芯片也有采用方型封裝的,但為44個(gè)引腳,其中4個(gè)引腳是不使用的。圖2―3MCS—51系列單片機(jī)引腳及總線結(jié)構(gòu)

(a)管腳圖;(b)引腳功能分類1.主電源引腳Vcc和VssVCC(40腳):接+5V電源正端;VSS(20腳):接+5V電源地端。

2.外接晶體引腳XTAL1和XTAL2XTAL1(19腳):接外部石英晶體的一端。在單片機(jī)內(nèi)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成了片內(nèi)振蕩器。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接地;對(duì)于CHMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。XTAL2(18腳):接外部晶體的另一端。在單片機(jī)內(nèi)部,接至片內(nèi)振蕩器的反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端;對(duì)于CHMOS芯片,該引腳懸空不接。3.控制信號(hào)或與其它電源復(fù)用引腳控制信號(hào)或與其它電源復(fù)用引腳有RST/VPD、、和等4種形式。(1)RST/VPD(9腳):RST即為RESET,VPD為備用電源,所以該引腳為單片機(jī)的上電復(fù)位或掉電保護(hù)端。(2)(30腳):當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),ALE(允許地址鎖存信號(hào))以每機(jī)器周期兩次的信號(hào)輸出,用于鎖存出現(xiàn)在P0口的低8位地址。

(3)(29腳):片外程序存儲(chǔ)器讀選通信號(hào)輸出端,低電平有效。(4)(31腳):為訪問(wèn)外部程序存儲(chǔ)器控制信號(hào)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論