《單片機(jī)原理與應(yīng)用技術(shù)》課件1第1章_第1頁(yè)
《單片機(jī)原理與應(yīng)用技術(shù)》課件1第1章_第2頁(yè)
《單片機(jī)原理與應(yīng)用技術(shù)》課件1第1章_第3頁(yè)
《單片機(jī)原理與應(yīng)用技術(shù)》課件1第1章_第4頁(yè)
《單片機(jī)原理與應(yīng)用技術(shù)》課件1第1章_第5頁(yè)
已閱讀5頁(yè),還剩154頁(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章單片機(jī)原理1.1單片機(jī)運(yùn)算基礎(chǔ)及結(jié)構(gòu)基礎(chǔ)簡(jiǎn)介1.2MCS-51單片機(jī)的功能結(jié)構(gòu)1.3MCS-51單片機(jī)存儲(chǔ)器1.4單片機(jī)最小系統(tǒng)1.5小結(jié)習(xí)題與思考題1.1單片機(jī)運(yùn)算基礎(chǔ)及結(jié)構(gòu)基礎(chǔ)簡(jiǎn)介單片機(jī)中的數(shù)以器件的物理狀態(tài)表示,由于具有兩個(gè)狀態(tài)的物理器件容易制造,有10個(gè)狀態(tài)的物理器件難于制成,因此在單片機(jī)中廣泛使用二進(jìn)制數(shù)。二進(jìn)制數(shù)的N次方所對(duì)應(yīng)的十進(jìn)制數(shù)如表1-1所示。閱讀和記憶二進(jìn)制數(shù)極易出錯(cuò),考慮到4位二進(jìn)制數(shù)就是1位十六進(jìn)制數(shù),因此在單片機(jī)中幾乎全用十六進(jìn)制數(shù)書寫二進(jìn)制數(shù)。而在大型機(jī)中還經(jīng)常用八進(jìn)制數(shù)書寫二進(jìn)制數(shù)。相應(yīng)各種進(jìn)制數(shù)之間的關(guān)系如表1-2所示。單片機(jī)中區(qū)別不同數(shù)制的方法是在數(shù)的后面加一個(gè)字母:二進(jìn)制數(shù)用B(Binary);八進(jìn)制數(shù)用Q(Octal),手寫時(shí)O、0易混淆,故用Q;十進(jìn)制數(shù)用D(Decimal)或省略D;十六進(jìn)制數(shù)用H(Hexadecimal)。也可以直接將數(shù)制寫在數(shù)的右下角。單片機(jī)中為了簡(jiǎn)化表示,常用K表示210,用M表示220,用G表示230,用T表示240。即

1K=210=1024 1M=220=1KK=1048576 1G=230=1KM=1073741824 1T=240=1MM=10995116277761.1.1運(yùn)算基礎(chǔ)

1.?dāng)?shù)制轉(zhuǎn)換將各種進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法是按權(quán)展開(kāi)然后相加:

101.1H=1×162+0×161+1×160+1×16-1=257.0625D 101.1B=1×22+0×21+1×20+1×2-1=5.5D將十進(jìn)制整數(shù)轉(zhuǎn)換成其它進(jìn)制數(shù),使用除進(jìn)率取余法,即用進(jìn)率不停地去除需轉(zhuǎn)換的十進(jìn)制數(shù),直至商為0,把每次相除所得余數(shù)倒序排放,就是所需轉(zhuǎn)換的數(shù)。例如,將298D轉(zhuǎn)換成十六進(jìn)制數(shù):第一次除法:298÷16=18余10(最低位),10的十六進(jìn)制數(shù)是AH;第二次除法:18÷16=1余2(次低位);第三次除法:1÷16=0余1。所以298D=12AH把二進(jìn)制數(shù)轉(zhuǎn)換成十六(八)進(jìn)制數(shù),只需從最低位向左每4(3)位為一組,每組用1位十六(八)進(jìn)制數(shù)表示,最高位不足4(3)位的補(bǔ)足4(3)位,湊成一組,如:

1011010110111B→0001011010110111B ↓↓↓↓? 16B?7H所以1011010110111B=16B7H

十六(八)進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),只需每位用相應(yīng)的二進(jìn)制數(shù)代替:

372Q→372 ↓↓↓ 011111010=11111010B

2.有符號(hào)二進(jìn)制數(shù)的符號(hào)表示方法無(wú)符號(hào)數(shù)在單片機(jī)中表示成二進(jìn)制數(shù)時(shí),所有的二進(jìn)制位都是數(shù)值位。有符號(hào)數(shù)要想在單片機(jī)中表示出來(lái),必須將符號(hào)數(shù)碼化,通常用“0”表示正號(hào),用“1”表示負(fù)號(hào)。例如,使用8位二進(jìn)制數(shù)表示+1001001B,就表示成

01001001B

符號(hào)位數(shù)值位或?qū)懗墒M(jìn)制數(shù)49H。而-1001001B就表示成

11001001B

符號(hào)位數(shù)值位或?qū)懗墒M(jìn)制數(shù)C9H。無(wú)論有符號(hào)二進(jìn)制數(shù)是用8位、16位、32位,還是用64位表示,都只用一位表示符號(hào)位,就是最高位,而其余位全部都是數(shù)值位。已經(jīng)把符號(hào)數(shù)碼化了的二進(jìn)制數(shù)被稱為機(jī)器數(shù),相應(yīng)二進(jìn)制數(shù)或十進(jìn)制數(shù)的值被稱為機(jī)器數(shù)的真值。機(jī)器數(shù)有原碼、反碼和補(bǔ)碼三種表示方法。

1)原碼最高位為符號(hào)位,其余位為數(shù)值位的二進(jìn)制數(shù)碼叫做機(jī)器數(shù)的原碼。例如X=+76=+1001100B,則[X]原=01001100B=4CH這里用8位二進(jìn)制數(shù)表示,最高位為符號(hào)位,其余7位為數(shù)值位。如果用16位二進(jìn)制數(shù)表示,則[X]原=0000000001001100B=004CH又假設(shè)Y=-76=-1001100B,則[Y]原=11001100B=CCH如果用16位二進(jìn)制數(shù)表示,則[Y]原=1000000001001100B=804CH在書寫機(jī)器數(shù)的時(shí)候,必須首先指明二進(jìn)制數(shù)用多少位,一般不加申明時(shí)常用8位。從原碼的表示中可以看出:如果一個(gè)十六進(jìn)制數(shù)的首位大于等于8,那它必然是一個(gè)負(fù)數(shù)的原碼。例如CCH、83H等就是負(fù)數(shù)的原碼,因?yàn)樗鼈兓啥M(jìn)制數(shù)后最高位是1。

2)反碼正數(shù)的反碼與正數(shù)的原碼相同;負(fù)數(shù)的反碼等于負(fù)數(shù)的原碼除符號(hào)位外逐位求反。例如X=+76=+1001100B,則[X]反=[X]原=4CH又如Y=-76=-1001100B,則因[Y]原=11001100B=CCH,所以[Y]反=10110011B=B3H

3)補(bǔ)碼正數(shù)的補(bǔ)碼與原碼相同;負(fù)數(shù)的補(bǔ)碼等于其反碼加1。例如:

[+76]補(bǔ)=[+76]反=[+76]原=4CH [-76]補(bǔ)=[-76]反+1=10110100=B4H

【例1-1】

已知[X]補(bǔ)=A7H,求X。

解:因X的符號(hào)位為1,故X<0,

[X]反=[X]補(bǔ)-1=A6H=10100110B所以[X]原=11011001B→X=-1011001B=-89雖然原碼與真值轉(zhuǎn)換簡(jiǎn)單,但兩數(shù)相減時(shí),需要減法器硬件電路的支持。而單片機(jī)為了簡(jiǎn)化硬件結(jié)構(gòu),CPU內(nèi)只設(shè)計(jì)了一個(gè)加法器,為此引進(jìn)了補(bǔ)碼的概念。反碼正是為了計(jì)算補(bǔ)碼而設(shè)立的一種表示法。

3.二進(jìn)制數(shù)及補(bǔ)碼運(yùn)算

1)二進(jìn)制數(shù)數(shù)學(xué)運(yùn)算加法運(yùn)算規(guī)則是逢二進(jìn)一。例如:

101B

+11B 1000B減法運(yùn)算規(guī)則是向高位借1到本位的大小等于十進(jìn)制數(shù)的2。例如:

101B

-11B 10B乘法運(yùn)算規(guī)則是只有當(dāng)兩個(gè)1相乘時(shí),部分積才為1,否則為0。例如:

101B

×11B 101

+101 ?1111B除法運(yùn)算規(guī)則是夠減商為1,不夠減商為0且把被除數(shù)下一位移至除數(shù)。例如:

1B

11B?101B

11B

余?10B

2)二進(jìn)制數(shù)邏輯運(yùn)算“與”運(yùn)算規(guī)則為只有兩個(gè)1相“與”時(shí),結(jié)果才為1,否則為0。例如:101B∧011B=001B“或”運(yùn)算規(guī)則為只要“或”的雙方有一個(gè)為1時(shí),結(jié)果就為1。例如:101B∨011B=111B“非”運(yùn)算規(guī)則為“非0即1,非1即0”。例如:A=1010B,則=0101B“異或”運(yùn)算規(guī)則為兩個(gè)相同邏輯變量“異或”,結(jié)果為0;不同邏輯變量“異或”,結(jié)果為1。例如:101B001B=100B

3)補(bǔ)碼運(yùn)算補(bǔ)碼運(yùn)算規(guī)律是有符號(hào)數(shù)的符號(hào)位和數(shù)值位具有相同的進(jìn)位規(guī)則,這就意味著如果參加運(yùn)算的二進(jìn)制數(shù)是補(bǔ)碼形式,那么在進(jìn)位時(shí),有符號(hào)數(shù)完全同于無(wú)符號(hào)數(shù),而運(yùn)算的結(jié)果也是補(bǔ)碼。

【例1-2】設(shè)[X]補(bǔ)=36H,[Y]補(bǔ)=20H,求[X]補(bǔ)+[Y]補(bǔ)。解:[X]補(bǔ)+[Y]補(bǔ)=36H+20H=56H,相加結(jié)果是56H的補(bǔ)碼。

【例1-3】設(shè)[X]補(bǔ)=63H,[Y]補(bǔ)=F4H,求[X]補(bǔ)+[Y]補(bǔ)。解:[X]補(bǔ)+[Y]補(bǔ)=63H+F4H,列豎式如下:

01100011B

+11110100B 101010111B=157H=57H最高進(jìn)位位1將自然丟失。相加前,[X]補(bǔ)=63H是X=+99的補(bǔ)碼,[Y]補(bǔ)=F4H是-12的補(bǔ)碼;相加后,結(jié)果57H是87的補(bǔ)碼。補(bǔ)碼運(yùn)算有兩個(gè)特征:一個(gè)是能把減法轉(zhuǎn)換成加法,另一個(gè)是存在溢出問(wèn)題。

【例1-4】利用補(bǔ)碼完成64-11。直接相減結(jié)果為53,化成十六進(jìn)制數(shù)是35H。

解:

64-11=64+[-11]

=[64]補(bǔ)+[-11]補(bǔ)

=40H+F5H

=135H在最高位進(jìn)位自然丟失后,結(jié)果為35H,恰是十進(jìn)制數(shù)53的補(bǔ)碼,與直接相減結(jié)果相同。

【例1-5】溢出問(wèn)題舉例。設(shè)[X]補(bǔ)=40H,[Y]補(bǔ)=41H,此時(shí),X=+64,Y=+65,直接相加后結(jié)果為+129。但如果用補(bǔ)碼相加,有[X]補(bǔ)+[Y]補(bǔ)=81H=10000001B,最高位為1表明和是負(fù)數(shù),81H是-127的補(bǔ)碼。兩個(gè)正數(shù)相加,結(jié)果成了負(fù)數(shù),說(shuō)明補(bǔ)碼相加出了問(wèn)題。出問(wèn)題的原因在于8位二進(jìn)制數(shù)補(bǔ)碼所能表示數(shù)的范圍是-128~+127,如果相加的和超出了這個(gè)范圍,結(jié)果必然出錯(cuò),這種情況稱為溢出。本例就是溢出的例子,40H與41H的和+129>+127。

8位、16位二進(jìn)制數(shù)表示無(wú)符號(hào)數(shù)和有符號(hào)數(shù)的范圍如表1-3所示。判斷補(bǔ)碼運(yùn)算是否產(chǎn)生溢出,有一個(gè)比較簡(jiǎn)單的方法。假設(shè)參加相加的兩個(gè)數(shù)及結(jié)果都用補(bǔ)碼,且將結(jié)果的進(jìn)位位丟失,則有:兩個(gè)正數(shù)相加得負(fù)數(shù),有正溢出;兩個(gè)負(fù)數(shù)相加得正數(shù),有負(fù)溢出;有三種情況下無(wú)溢出:①兩個(gè)正數(shù)相加得正數(shù);②兩個(gè)負(fù)數(shù)相加得負(fù)數(shù);③一個(gè)正數(shù)與一個(gè)負(fù)數(shù)相加。溢出的判斷方法如表1-4所示。兩個(gè)無(wú)符號(hào)數(shù)相加時(shí)無(wú)溢出問(wèn)題,只存在進(jìn)位問(wèn)題。兩個(gè)8位二進(jìn)制數(shù)相加,結(jié)果為9位,其中相加的和為8位,進(jìn)位位為1位(或?yàn)?,或?yàn)?)。

【例1-6】無(wú)符號(hào)數(shù)9AH+81H,結(jié)果為11BH,進(jìn)位位1不能丟失。1.1.2二進(jìn)制編碼

1.BCD碼

BCD碼(BinaryCodedDecimal)的全稱是用二進(jìn)制編碼的十進(jìn)制數(shù)。用4位二進(jìn)制數(shù)表示1位十進(jìn)制數(shù),由于4位二進(jìn)制數(shù)可以區(qū)分16種不同的狀態(tài),因此表示方法很多,其中用得最多的是8421BCD碼,如表1-5所示。要注意BCD碼的4位不能省略,例如5的BCD碼是0101BCD,而不是101BCD。使用4位二進(jìn)制數(shù)表示1位十進(jìn)制數(shù)的BCD碼稱為壓縮BCD碼。例如十進(jìn)制數(shù)265用壓縮BCD碼表示為

001001100101BCD使用8位二進(jìn)制數(shù)表示1位十進(jìn)制數(shù)的BCD碼稱為非壓縮BCD碼,其中的高4位為0000。十進(jìn)制數(shù)265用非壓縮BCD碼表示為

000000100000011000000101BCD

2.ASCII碼

ASCII碼(AmericanStandardCodeforInformationInterchange)是美國(guó)標(biāo)準(zhǔn)信息交換代碼的縮寫。它用6位、7位或8位二進(jìn)制數(shù)表示一個(gè)字符,其中7位二進(jìn)制數(shù)表示字符的ASCII碼用得最多,為了書寫成8位二進(jìn)制數(shù),最高位通常寫“0”。7位二進(jìn)制數(shù)能表示128個(gè)字符,其中最常用的字符如表1-6所示。如十進(jìn)制數(shù)符號(hào)0~9用30H~39H表示,它們的高4位全為“3”,低4位與BCD碼相同,這種表示方法又稱為ASCIIBCD碼。英文字母ASCII碼分大、小寫,其中A~Z用41H~5AH表示,a~z表示成61H~7AH。

BCD碼和ASCII碼都能參加運(yùn)算,運(yùn)算時(shí)它們遵循各自的運(yùn)算規(guī)則。壓縮BCD碼運(yùn)算的基本規(guī)則是:先按二進(jìn)制數(shù)加法規(guī)則進(jìn)行;再根據(jù)相加過(guò)程或結(jié)果決定是否要調(diào)整。調(diào)整的方法是:只有當(dāng)?shù)?位向高4位有進(jìn)位或低4位和大于9時(shí),才加6調(diào)整;同理,只有當(dāng)高4位有進(jìn)位或高4位和大于9時(shí),才加60H調(diào)整。

【例1-7】27+38=00100111BCD+00111000BCD

=01011111B低4位相加得15>9,故加6調(diào)整得:

27+38=01011111B+0110B=01100101BCD=65非壓縮BCD碼運(yùn)算的基本規(guī)則與壓縮BCD碼相同,但要注意個(gè)位向十位的進(jìn)位問(wèn)題。因?yàn)樗?位二進(jìn)制數(shù)表示1位十進(jìn)制數(shù),且高4位始終是0000B,不能參加運(yùn)算。

【例1-8】27+38=0000001000000111BCD+0000001100001000BCD

=0000010100001111B

=0000010100001111B+00000110B =0000011000000101BCD =65在ASCII碼中,只有代表數(shù)字符號(hào)的字符可以參加加減運(yùn)算,其它字符不能參加加減運(yùn)算。但可以進(jìn)行傳送、比較、查詢等非數(shù)值處理。ASCII碼的運(yùn)算規(guī)則與壓縮BCD碼完全相同,僅注意高4位始終要保持為0011B,不參與相加,否則將出錯(cuò)。

【例1-9】27+38變成ASCII碼數(shù)字字符運(yùn)算。

27+38→3237H+3338H=353FH=353FH+36H(加6調(diào)整) →3635H=651.1.3微型計(jì)算機(jī)的一般結(jié)構(gòu)微型計(jì)算機(jī)(Microcomputer)簡(jiǎn)稱微機(jī),記為MC,是指以微處理器為核心,配以內(nèi)部存儲(chǔ)器、I/O(輸入/輸出)接口電路和系統(tǒng)總線的計(jì)算機(jī)。

1.常用術(shù)語(yǔ)

位(Bit):二進(jìn)制位,只有0、1兩種狀態(tài),是信息存儲(chǔ)的最小數(shù)據(jù)單位。若干個(gè)二進(jìn)制位可以表示各種數(shù)據(jù)和字符。字節(jié)(Byte):簡(jiǎn)寫為B,相鄰8位二進(jìn)制數(shù)為1個(gè)字節(jié)。1B=8位,或說(shuō)1個(gè)字節(jié)的長(zhǎng)度為8位。存儲(chǔ)器1個(gè)存儲(chǔ)單元通常為1B。字(Word):簡(jiǎn)寫為W,是微機(jī)內(nèi)進(jìn)行數(shù)據(jù)處理的基本單位。一般情況下,相鄰16位二進(jìn)制數(shù)為1個(gè)字。1W=2B=16位。1個(gè)字可分成低字節(jié)和高字節(jié)。雙字(DoubleWord):簡(jiǎn)寫為DW,由相鄰32位二進(jìn)制數(shù)組成。1DW=2W=4B=32位。可分成低位字和高位字。

●四字(QuadWord):簡(jiǎn)寫為QW,由相鄰64位二進(jìn)制數(shù)組成。1QW=2DW=4W=8B=64位。可分成低位雙字和高位雙字。

●雙四字(DoubleQuadWord):簡(jiǎn)寫為DQW,由相鄰128位二進(jìn)制數(shù)組成。1DQW=2QW=4DW=8W=16B=128位。可分成低位四字和高位四字。雙四字用于具有SSE擴(kuò)展的PentiumⅢ及以上的CPU結(jié)構(gòu)。

●字長(zhǎng):基本數(shù)據(jù)單元所包含的二進(jìn)制位數(shù),通常和微機(jī)內(nèi)部寄存器、運(yùn)算器、數(shù)據(jù)總線寬度相一致。8位機(jī)、16位機(jī)和32位機(jī)就是指字長(zhǎng)分別為8位、16位和32位的機(jī)器。

●位串(BitString):若干二進(jìn)制數(shù)位的集合。一個(gè)位串最短是1位,最長(zhǎng)包含232位。從“位”到“雙四字”都可以看做是位串的一種。位串存放在存儲(chǔ)器中,1個(gè)字節(jié)位串占1個(gè)存儲(chǔ)單元,1個(gè)字位串占2個(gè)存儲(chǔ)單元。依此類推,1個(gè)雙四字位串占16個(gè)存儲(chǔ)單元。

●字符串(CharacterString):字節(jié)、字和雙字的相鄰序列,分別有字節(jié)串、字串和雙字串。使用專用的字符串操作指令(可加重復(fù)前綴)完成傳送、比較和查詢。位于最低位的串地址就是該字符串的起始地址。

●微處理器(Processor):簡(jiǎn)稱為MPU或μp,是由一片或多片超大規(guī)模集成電路組成的具有運(yùn)算控制功能的中央處理單元邏輯部件。中央處理單元(CentralProcessingUnit)簡(jiǎn)稱CPU。CPU是一個(gè)比MPU更為廣泛的概念,CPU可以是MPU中的一部分,也可以包括1片或幾片功能不同的MPU,形成多處理器芯片。

●微型計(jì)算機(jī)系統(tǒng)(MicrocomputerSystem):簡(jiǎn)稱微機(jī)系統(tǒng),記為MCS或μcs,是以微型計(jì)算機(jī)為核心,配以相應(yīng)的I/O硬件設(shè)備和連接它們的信息公共通道,以及系統(tǒng)軟件、應(yīng)用軟件等構(gòu)成的系統(tǒng)。一些典型的I/O設(shè)備有CRT顯示器、鍵盤、打印機(jī)、磁盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器、電源、機(jī)架等。信息公共通道為各種不同功能的總線。系統(tǒng)軟件是統(tǒng)一指揮各邏輯電路正常工作的監(jiān)控程序,應(yīng)用軟件是用戶為解題或控制自行編制的程序。微機(jī)系統(tǒng)是硬件電路和軟件程序相互結(jié)合的產(chǎn)物,硬軟件缺一不可。

●網(wǎng)絡(luò)(Network):是一種按一定的協(xié)議規(guī)則,把一個(gè)又一個(gè)微機(jī)系統(tǒng)以資源共享為目的連接在一起,實(shí)現(xiàn)通信和交換數(shù)據(jù)功能的系統(tǒng)。網(wǎng)絡(luò)按照覆蓋的地域、接入微機(jī)數(shù)量的多少和交換信息規(guī)模的程度,分為局域網(wǎng)、城域網(wǎng)和廣域網(wǎng)。

2.微機(jī)的三總線結(jié)構(gòu)微機(jī)由CPU、內(nèi)部存儲(chǔ)器、I/O接口和系統(tǒng)總線四部分組成,如圖1-1所示。中央處理單元CPU的功能是完成算術(shù)邏輯運(yùn)算和實(shí)現(xiàn)對(duì)微機(jī)各邏輯電路的控制。存儲(chǔ)器(Memory)的功能是存放各種程序代碼、數(shù)據(jù)代碼和運(yùn)算結(jié)果。存儲(chǔ)器按照所在位置有內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器之分,其中片內(nèi)RAM和片內(nèi)ROM是單片機(jī)芯片內(nèi)部的存儲(chǔ)器,片外RAM和片外ROM是單片機(jī)芯片外部的存儲(chǔ)器。對(duì)于PC機(jī),內(nèi)存條是微機(jī)的內(nèi)部存儲(chǔ)器(簡(jiǎn)稱內(nèi)存);硬盤、磁盤、光盤、U盤等則是它的外部存儲(chǔ)器(簡(jiǎn)稱外存)。圖1-1微機(jī)基本結(jié)構(gòu)輸入設(shè)備和輸出設(shè)備簡(jiǎn)稱I/O設(shè)備。I/O接口(Input/OutputInterface)電路是I/O設(shè)備連接微機(jī)的惟一通道,其功能是轉(zhuǎn)換信息格式、傳送CPU的控制命令和反映I/O設(shè)備自身的狀態(tài)。I/O接口電路又叫適配器。系統(tǒng)總線(SystemBus)是連接各邏輯部件且能傳送信息的公共通道,包括地址總線(AB)、數(shù)據(jù)總線(DB)和控制總線(CB)。

3.中央處理單元CPU

CPU是一個(gè)比微處理器更為廣泛的概念,CPU可以是MPU中的一部分,也可以含有1片或幾片MPU。它的基本結(jié)構(gòu)如圖1-2所示,由運(yùn)算器、控制器和內(nèi)部寄存器陣列三部分組成。運(yùn)算器又稱算術(shù)邏輯單元ALU(ArithmeticLogicalUnit),功能是執(zhí)行算術(shù)、邏輯和移位操作,運(yùn)算結(jié)果送CPU芯片內(nèi)部寄存器或經(jīng)數(shù)據(jù)總線送存儲(chǔ)單元,運(yùn)算結(jié)果的一些特殊位送標(biāo)志寄存器。圖1-2微處理器的基本結(jié)構(gòu)控制器(Controller)由指令寄存器IR(InstructionRegister)、指令譯碼和時(shí)序控制電路組成。指令寄存器IR用于暫時(shí)存放從存儲(chǔ)器中取出的指令代碼;指令譯碼電路的功能是把指令代碼翻譯成相關(guān)的控制和定時(shí)信號(hào),確定執(zhí)行什么操作,使用哪種尋址方式,如何根據(jù)尋址方式取得操作數(shù)等;時(shí)序控制電路的功能是:發(fā)出一系列的控制命令和時(shí)序命令,開(kāi)啟相關(guān)的組合邏輯門電路,觸發(fā)相關(guān)的時(shí)序邏輯電路,指揮微機(jī)各邏輯部件統(tǒng)一協(xié)調(diào)工作,完成指令的操作。要想順利執(zhí)行指令,必須準(zhǔn)確地找到操作數(shù)或操作數(shù)的地址。操作數(shù)可能出現(xiàn)在四個(gè)地方:①直接在指令中給出;②在CPU內(nèi)部寄存器中;③在微機(jī)存儲(chǔ)器中;④在I/O端口中。內(nèi)部寄存器(Register)陣列含有累加器A、標(biāo)志寄存器FLAGS、程序計(jì)數(shù)器PC、堆棧指示器SP、地址寄存器AR、數(shù)據(jù)寄存器DR等。累加器A(Accumulator)用于存放參加運(yùn)算的一個(gè)操作數(shù)和運(yùn)算結(jié)果。累加器A使用最頻繁,算術(shù)邏輯運(yùn)算通常以累加器A為核心進(jìn)行。標(biāo)志寄存器FLAGS提供兩類標(biāo)志:運(yùn)算標(biāo)志和控制標(biāo)志。運(yùn)算標(biāo)志記錄運(yùn)算結(jié)果的一些特征,常見(jiàn)的有六種:①有無(wú)進(jìn)(借)位;②有無(wú)半進(jìn)(借)位;③有無(wú)溢出;④結(jié)果是否為“0”;⑤“1”的個(gè)數(shù)是奇是偶;⑥符號(hào)是正還是負(fù)??刂茦?biāo)志記錄程序的走向,常見(jiàn)的有三種:①是否需要跟蹤;②是否允許中斷;③串操作指令是按增址方向還是按減址方向執(zhí)行。程序計(jì)數(shù)器PC(ProgramCounter)又稱指令指針I(yè)P(InstructionPointer),功能是存放下一條要執(zhí)行指令的地址。程序存放在存儲(chǔ)器的代碼段中,當(dāng)CPU從存儲(chǔ)器取出1個(gè)指令字節(jié)時(shí),IP的值將自動(dòng)加1。

SP用于指示堆棧棧頂?shù)牡刂?,AR、DR分別用于暫存和緩沖地址及數(shù)據(jù)信息。

4.存儲(chǔ)器存儲(chǔ)器是存放程序和數(shù)據(jù)的部件。

1)存儲(chǔ)器的基本結(jié)構(gòu)存儲(chǔ)器分為一個(gè)個(gè)存儲(chǔ)單元。每個(gè)存儲(chǔ)單元有兩個(gè)屬性:一個(gè)是為便于存取而建立的地址編碼;一個(gè)是它存放的內(nèi)容。存儲(chǔ)單元的地址和內(nèi)容雖然都是二進(jìn)制代碼,但卻是兩個(gè)完全不同的概念。圖1-3給出了256B存儲(chǔ)器的結(jié)構(gòu),該存儲(chǔ)器由256個(gè)單元組成,每單元字長(zhǎng)8位。256個(gè)單元地址編號(hào)從00H到FFH(從0到255)。存儲(chǔ)器和CPU之間用三組總線連接,其中8/256地址譯碼器接收CPUAB送來(lái)的地址碼。當(dāng)?shù)刂肪€上出現(xiàn)8位地址信息時(shí),經(jīng)譯碼器選中相應(yīng)一個(gè)單元,該單元的數(shù)據(jù)線與DB相連。在控制總線的讀/寫信號(hào)控制下,數(shù)據(jù)經(jīng)由DB完成存儲(chǔ)單元內(nèi)容的存取操作。圖1-3存儲(chǔ)器的基本結(jié)構(gòu)存儲(chǔ)器的基本結(jié)構(gòu)為存儲(chǔ)體、地址譯碼器和控制電路。存儲(chǔ)體是存儲(chǔ)單元的集合;地址譯碼器負(fù)責(zé)選中存儲(chǔ)單元;控制電路控制讀/寫操作過(guò)程。

2)存儲(chǔ)單元的地址和內(nèi)容尋找存儲(chǔ)單元的地址,簡(jiǎn)稱尋址。存儲(chǔ)單元的地址是存儲(chǔ)單元的順序號(hào),地址與存儲(chǔ)單元一一對(duì)應(yīng),是存儲(chǔ)單元的惟一標(biāo)志。要想訪問(wèn)存儲(chǔ)單元,必須首先尋址。幾乎所有微機(jī)的存儲(chǔ)器都是按字節(jié)編址的,存儲(chǔ)器的每個(gè)存儲(chǔ)單元固定存放1個(gè)字節(jié)(8位二進(jìn)制數(shù))。CPU從存儲(chǔ)器中取出信息(簡(jiǎn)稱“讀”),或往存儲(chǔ)器中存放信息(簡(jiǎn)稱“寫”),稱為訪問(wèn)存儲(chǔ)器。訪問(wèn)過(guò)程為:地址信息經(jīng)譯碼器譯碼后選中某一存儲(chǔ)單元,再根據(jù)控制總線送來(lái)的“讀”、“寫”命令將數(shù)據(jù)信息經(jīng)數(shù)據(jù)總線完成“讀”、“寫”。下面以256B存儲(chǔ)器為例,分析將78H單元的內(nèi)容讀出到CPU、將15H寫入到B3H單元的訪問(wèn)存儲(chǔ)器過(guò)程。

(1)讀出操作。存儲(chǔ)器讀出操作示意圖如圖1-4所示。首先按照指令由CPU的地址寄存器AR給出地址號(hào)78H,然后地址總線上出現(xiàn)地址信號(hào)A7~A0=78H=01111000B送到譯碼器,譯碼后選中78H單元;再由CPU的控制總線發(fā)出“讀”控制命令,存儲(chǔ)器在接收“讀”命令后,78H單元的內(nèi)容3AH出現(xiàn)在數(shù)據(jù)總線DB上,并進(jìn)入CPU的數(shù)據(jù)寄存器DR。存儲(chǔ)器的讀出是非破壞性的。數(shù)據(jù)從存儲(chǔ)單元讀出后,存儲(chǔ)單元的內(nèi)容應(yīng)保持不變。如果存儲(chǔ)器由雙極型或CMOS雙穩(wěn)態(tài)觸發(fā)器等構(gòu)成,會(huì)自動(dòng)保持不變。如果存儲(chǔ)器由動(dòng)態(tài)電容構(gòu)成,則需要及時(shí)補(bǔ)充電荷,定時(shí)給那些該充電的電容充電,保證二進(jìn)制信息不發(fā)生變化。圖1-4存儲(chǔ)器讀出操作示意圖

(2)寫入操作。存儲(chǔ)器寫入操作示意圖如圖1-5所示。首先按照指令由CPU的地址寄存器AR給出地址號(hào)B3H,然后地址總線上出現(xiàn)地址信號(hào)A7~A0=B3H送到譯碼器,譯碼后選中B3H單元;接著數(shù)據(jù)寄存器DR的內(nèi)容15H進(jìn)入數(shù)據(jù)總線DB;隨后CPU發(fā)出“寫”命令,DB上的數(shù)據(jù)15H寫入B3H。數(shù)據(jù)寫入后,存儲(chǔ)單元原先的內(nèi)容被改寫。圖1-5存儲(chǔ)器寫入操作示意圖

3)程序和數(shù)據(jù)在存儲(chǔ)器中存放的方式存儲(chǔ)單元的內(nèi)容就是該單元存放的數(shù)據(jù)信息,例如30H單元的內(nèi)容為9FH,可以表示成(30H)=9FH。通常在微機(jī)中直接書寫的十六進(jìn)制數(shù)30H表示存儲(chǔ)單元的地址,加括號(hào)后表示該單元的數(shù)據(jù)內(nèi)容。程序和數(shù)據(jù)以代碼的形式在內(nèi)存中以字節(jié)為單位進(jìn)行存儲(chǔ)。一個(gè)字節(jié)數(shù)據(jù)占一個(gè)存儲(chǔ)單元。多字節(jié)數(shù)據(jù)在存儲(chǔ)器中存放時(shí),需要相鄰存儲(chǔ)單元,不能分開(kāi)。1個(gè)“字”占相鄰兩個(gè)存儲(chǔ)單元,1個(gè)“雙字”占相鄰四個(gè)存儲(chǔ)單元,1個(gè)“四字”占相鄰八個(gè)存儲(chǔ)單元。多字節(jié)數(shù)據(jù)存放規(guī)則是高字節(jié)進(jìn)入高地址;低字節(jié)進(jìn)入低地址,且低字節(jié)的地址是多字節(jié)數(shù)據(jù)的訪問(wèn)地址。例如,一個(gè)字0AB56H存放在地址為58H和59H的兩個(gè)單元中,其中58H單元放數(shù)據(jù)56H,59H單元放數(shù)據(jù)ABH,表示方法只需寫出低字節(jié)地址:(58H)=0AB56H不足8位的數(shù)據(jù)要在最高位加0補(bǔ)足8位,形成一個(gè)字節(jié)才能存放。例如,7位ASCII碼字符X放入40H單元中,記為‘X’=(40H)=58H。

4)存儲(chǔ)器的主要性能指標(biāo)存儲(chǔ)器的主要性能指標(biāo)有存儲(chǔ)容量、存取速度和性能價(jià)格比。存儲(chǔ)容量定義為:存儲(chǔ)器的存儲(chǔ)單元數(shù)與每個(gè)存儲(chǔ)單元位數(shù)的乘積。即存儲(chǔ)容量=存儲(chǔ)單元數(shù)×位/每單元微機(jī)內(nèi)部的存儲(chǔ)器(簡(jiǎn)稱內(nèi)存)通常由廠家生產(chǎn)的存儲(chǔ)器芯片構(gòu)成。知道了存儲(chǔ)芯片的存儲(chǔ)容量和內(nèi)存的存儲(chǔ)容量,就可以計(jì)算出組成內(nèi)部存儲(chǔ)器所需要的芯片片數(shù)。例如,用Intel公司生產(chǎn)的存儲(chǔ)器芯片27256(32K×8位)組成128K×16位的內(nèi)部存儲(chǔ)器,則所需芯片數(shù)===8片尋址存儲(chǔ)器的地址線根數(shù)為n,存儲(chǔ)器的數(shù)據(jù)線根數(shù)為m,則該存儲(chǔ)器的容量為2n×m。例如,EPROM27256(32K×8位)存儲(chǔ)器芯片,有15根地址線A14~A0,8根數(shù)據(jù)線D7~D0,則該芯片的存儲(chǔ)容量為215×8bit(位),即32KB。反之,從存儲(chǔ)容量也能推算出存儲(chǔ)器有多少根地址線和數(shù)據(jù)線。存取速度用一次存儲(chǔ)器訪問(wèn)所需的時(shí)間來(lái)表示。采用MOS工藝的存儲(chǔ)器,存取時(shí)間約為幾十~幾百ns;雙極型RAM最快可達(dá)10ns以下。無(wú)論哪種主存儲(chǔ)器,存取速度均低于CPU,為此,當(dāng)代微機(jī)存儲(chǔ)器都采用多層次結(jié)構(gòu)。性能價(jià)格比通常以每位為單位計(jì)價(jià)。每位的價(jià)位等于存儲(chǔ)器售價(jià)除以存儲(chǔ)容量。

5.I/O接口輸入設(shè)備的功能是將外界的各種信息,如圖形、圖像、聲音、文字、數(shù)字等,轉(zhuǎn)換成微機(jī)所能接收和識(shí)別的二進(jìn)制信息形式。輸出設(shè)備的功能是將微機(jī)對(duì)二進(jìn)制信息的處理結(jié)果轉(zhuǎn)換成人們所能接收和識(shí)別的形式。由于I/O設(shè)備的信息格式明顯不同于微機(jī),并且大多數(shù)都有機(jī)械動(dòng)作,數(shù)據(jù)傳送速度遠(yuǎn)低于微機(jī),輸入/輸出時(shí)都需要對(duì)數(shù)據(jù)進(jìn)行緩沖存儲(chǔ)處理,因此,I/O設(shè)備不能直接和微機(jī)相連,必須通過(guò)I/O接口電路與CPU交換信息。

I/O設(shè)備種類繁多,工作原理、信息格式各不相同,需要不同的接口電路。目前已生產(chǎn)了一些典型的I/O接口集成芯片,每種接口芯片只適配一種或信息格式相近的二三種I/O設(shè)備。這些接口芯片內(nèi)部結(jié)構(gòu)的復(fù)雜程度不亞于CPU芯片。

I/O接口電路和CPU之間的數(shù)據(jù)傳送,是依靠I/O端口實(shí)現(xiàn)的。對(duì)CPU而言,每一個(gè)I/O端口和每一個(gè)存儲(chǔ)單元完全一樣,有自己的端口地址和端口內(nèi)容。一個(gè)接口芯片可以有一個(gè)或幾個(gè)端口,或者幾個(gè)接口芯片的某些功能共用一個(gè)端口。為了滿足傳送數(shù)據(jù)信息和控制/狀態(tài)信息的不同需要,I/O端口被劃分成數(shù)據(jù)口和控制/狀態(tài)口兩種不同類型的端口,統(tǒng)一進(jìn)行編址。要想正確使用不同用途的接口芯片,必須首先知道芯片有幾個(gè)端口,是數(shù)據(jù)口還是控制口,端口地址各是多少,才能正確編制初始化程序和工作程序。

6.系統(tǒng)總線系統(tǒng)總線按功能劃分為地址總線AB(AddressBus)、數(shù)據(jù)總線DB(DataBus)和控制總線CB(ControlBus)。圖1-6為系統(tǒng)總線示意圖??偩€上能夠并行傳送的二進(jìn)制位數(shù),稱為總線的寬度。每一種類型的總線都有自己的寬度。圖1-6系統(tǒng)總線地址總線是傳送地址信息用于選中某一存儲(chǔ)單元和某一I/O端口的一組系統(tǒng)總線。地址信息流向單方向,由CPU指向存儲(chǔ)器或I/O接口。CPU通過(guò)地址總線尋找存儲(chǔ)單元或I/O端口地址的操作,稱為尋址。地址總線的寬度決定了微機(jī)所能尋址的最大存儲(chǔ)空間和最大I/O端口地址空間。8031單片機(jī)的地址總線寬度為20位,用A15~A0表示,可尋址的存儲(chǔ)單元和I/O端口總數(shù)為216=64K個(gè)。數(shù)據(jù)總線是傳送數(shù)據(jù)信息的一組系統(tǒng)總線。數(shù)據(jù)信息流向雙方向,既可以從CPU流向存儲(chǔ)器或I/O端口,也可以從存儲(chǔ)器或I/O端口流向CPU。此外,在微機(jī)處于DMA(直接存儲(chǔ)器存取)工作方式下,存儲(chǔ)器和I/O接口還能相互傳送數(shù)據(jù)。因此,數(shù)據(jù)總線為雙向總線。數(shù)據(jù)總線的寬度成為按字長(zhǎng)劃分的計(jì)算機(jī)名稱來(lái)源之一。MCS-51單片機(jī)的數(shù)據(jù)總線寬度為8位,MCS-51單片機(jī)就是一種8位機(jī)。當(dāng)代PentiumCPU的數(shù)據(jù)總線寬度為64位二進(jìn)制數(shù),以Pentium為核心構(gòu)成的計(jì)算機(jī)就被稱為64位機(jī)??刂瓶偩€是傳送控制命令和狀態(tài)信息的一組系統(tǒng)總線??刂泼钍荂PU發(fā)布的控制存儲(chǔ)器或I/O端口完成某一特定操作的命令信息,如讀信號(hào)、寫信號(hào)、地址鎖存允許信號(hào)ALE等。狀態(tài)信息是存儲(chǔ)器或I/O端口向CPU發(fā)出的反映自身狀態(tài)或請(qǐng)求的信號(hào),如忙信號(hào)、中斷申請(qǐng)信號(hào)等??刂瓶偩€就單根線來(lái)講信息流向是單方向的,有的從CPU指向存儲(chǔ)器或I/O端口,有的從存儲(chǔ)器或I/O端口指向CPU,因此從成組來(lái)講可以看成是雙向的。由于采用了總線結(jié)構(gòu),使得CPU、存儲(chǔ)器、I/O接口芯片之間的連接變得十分清晰,任何一個(gè)邏輯部件只要符合總線標(biāo)準(zhǔn),都可以單掛在總線上。1.1.4微機(jī)工作原理微機(jī)按照程序存儲(chǔ)式原理工作,只能被動(dòng)執(zhí)行人們事先編制好的程序。程序是指令有規(guī)律的集合,而指令(Instruction)則是人們規(guī)定微機(jī)完成一項(xiàng)操作的命令。表1-7列出了一個(gè)把2和3兩數(shù)相加的程序,由兩條指令組成。每條指令的二進(jìn)制代碼包含操作碼和操作數(shù),操作碼指出完成什么操作,操作數(shù)是參加運(yùn)算的數(shù)。假設(shè)把程序放到容量為256B的存儲(chǔ)器中,從30H單元開(kāi)始存放,需要4個(gè)單元,如圖1-7所示。圖1-7取指令示意圖從存儲(chǔ)器中取出指令操作碼和操作數(shù)(以第1條指令第1字節(jié)為例)的過(guò)程如下:

(1)?CPU中的PC(或IP)存放著30H,這是被執(zhí)行指令代碼的存儲(chǔ)單元地址。執(zhí)行開(kāi)始,PC中的30H送地址寄存器AR,隨后PC自動(dòng)加1,成為31H,指向下一個(gè)單元。

(2)?AR中的內(nèi)容30H經(jīng)AB及地址譯碼器選中存儲(chǔ)器30H單元。

(3)?CPU經(jīng)CB發(fā)出“讀”信號(hào),30H的內(nèi)容74H經(jīng)DB進(jìn)入數(shù)據(jù)寄存器DR,并經(jīng)內(nèi)部總線送入指令寄存器IR。經(jīng)指令譯碼器確認(rèn),74H的含義為“MOVA,#n”,即把31H單元的內(nèi)容02H送入A寄存器。

(4)相關(guān)的控制門電路開(kāi)啟,為取出31H單元的內(nèi)容02H做好準(zhǔn)備。至此,第1條指令第1字節(jié)的內(nèi)容取出并執(zhí)行完畢,由于PC已經(jīng)指向31H,CPU開(kāi)始取出31H單元的內(nèi)容并執(zhí)行。

通過(guò)以上的分析可以推知,微機(jī)執(zhí)行程序的過(guò)程,是一個(gè)不斷地取指(確切地講是取指令的1個(gè)字節(jié))、(翻)譯(指令代)碼、執(zhí)行指令(執(zhí)行指令的操作碼)的過(guò)程。取指是CPU對(duì)存儲(chǔ)器的讀數(shù)操作。譯碼和執(zhí)行指令是在CPU內(nèi)部進(jìn)行的操作。運(yùn)算結(jié)果如果放在CPU內(nèi)部寄存器中,則在CPU內(nèi)部進(jìn)行;如果放到存儲(chǔ)器中,則是CPU對(duì)存儲(chǔ)器的寫數(shù)操作。比較兩種操作所需的時(shí)間,CPU內(nèi)部進(jìn)行的操作時(shí)間短、速度快;CPU對(duì)存儲(chǔ)器的讀/寫操作時(shí)間長(zhǎng)、速度慢。為了提高運(yùn)行速度,可以將CPU和小容量的存儲(chǔ)器集成在一個(gè)芯片內(nèi),單片機(jī)就是基于這一原理設(shè)計(jì)的。對(duì)于PC機(jī),從80486開(kāi)始,已經(jīng)把小容量的存儲(chǔ)器集成到CPU內(nèi),變CPU對(duì)存儲(chǔ)器的訪問(wèn)為CPU內(nèi)部的操作。一段程序的開(kāi)頭必須要有確定程序從哪個(gè)存儲(chǔ)單元開(kāi)始執(zhí)行的命令。對(duì)于單片機(jī)程序,由編程人員用偽指令設(shè)定。對(duì)于PC機(jī)程序,由微機(jī)的操作系統(tǒng)自動(dòng)管理,無(wú)需編程人員考慮。一段程序正確與否與“取指”和“執(zhí)行程序”的過(guò)程無(wú)關(guān),取決于編程人員使用指令是否正確、指令順序有無(wú)失誤等。1.2MCS-51單片機(jī)的功能結(jié)構(gòu)1.2.1MCS-51基本型單片機(jī)內(nèi)部功能結(jié)構(gòu)

HMOS基本型單片機(jī)典型型號(hào)產(chǎn)品有8031、8051和8751;CHMOS基本型單片機(jī)典型型號(hào)產(chǎn)品有80C31、80C51和87C51,即在HMOS型單片機(jī)名稱中加一個(gè)“C”字。這兩類單片機(jī)器件功能完全兼容,制造工藝上的差別使得CHMOS器件功耗低、工作電流小。之所以能降低功耗并以小電流形式工作,是因?yàn)镃HMOS器件能夠采用空閑方式和掉電方式工作。以掉電方式(芯片不工作但能持續(xù)保持片內(nèi)RAM數(shù)據(jù)不變)為例,CHMOS器件的消耗電流通常不足10μA,而HMOS器件做不到這一點(diǎn)。由于基本型單片機(jī)結(jié)構(gòu)簡(jiǎn)單,所敘述的工作原理在一切單片機(jī)上均能適用,因此本書在提到“MCS-51單片機(jī)”時(shí),在不加特別申明的場(chǎng)合,都是指HMOS基本型單片機(jī)。由于功能兼容,原理圖中可將HMOS器件改換成CHMOS器件,但在實(shí)際應(yīng)用中不能直接取代,必須要重新計(jì)算電路元件參數(shù)并重新調(diào)試,把工作方式和功率損耗改動(dòng)考慮在內(nèi)。

8051單片機(jī)內(nèi)部由以下幾個(gè)邏輯部件組成:①?1個(gè)8位中央處理單元CPU;②?1個(gè)片內(nèi)振蕩器及時(shí)鐘發(fā)生器;③?128B數(shù)據(jù)RAM;④?21個(gè)特殊功能寄存器SFR;⑤?4KB程序ROM;⑥?4個(gè)8位I/O并行端口P0口~P3口;⑦?1個(gè)全雙工串行端口;⑧?2個(gè)16位可編程定時(shí)計(jì)數(shù)器T1、T2;⑨?1個(gè)可管理5個(gè)中斷源、2級(jí)優(yōu)先級(jí)嵌套的中斷管理系統(tǒng);⑩?1個(gè)可尋址64KB外部程序ROM和64KB外部數(shù)據(jù)RAM空間的控制電路。

MCS-51系列單片機(jī)有幾種不同的型號(hào),它們的主要區(qū)別是片內(nèi)ROM設(shè)置不同:

●8031無(wú)片內(nèi)ROM;

●8051片內(nèi)有4KB掩膜ROM;

●8751內(nèi)部有4KBEPROM。由于8051片內(nèi)掩膜ROM是Intel公司預(yù)先為用戶燒制好的專用程序,難于為其他用戶接受,而8751價(jià)格偏高,如果8031外接一片EPROM,如2716或2732,就可以由用戶自行設(shè)計(jì)程序使用。因此HMOS基本型的幾個(gè)產(chǎn)品中,8031具有使用方便、結(jié)構(gòu)靈活、價(jià)格低廉等優(yōu)點(diǎn),在早期的單片機(jī)使用中處于主導(dǎo)地位。

MCS-51系列單片機(jī)的一般結(jié)構(gòu)如圖1-8所示,各邏輯部件均掛接在內(nèi)部總線上。圖中“/”前的是基本型芯片,“/”后的是部分增強(qiáng)型芯片。有關(guān)程序ROM部分,8051/8052使用掩膜ROM,8751/8752使用EPROM,89C51/89C52使用FlashROM。圖1-851系列單片機(jī)內(nèi)部結(jié)構(gòu)1.2.2MCS-51增強(qiáng)型單片機(jī)內(nèi)部功能結(jié)構(gòu)基本型單片機(jī)從1980年問(wèn)世后,持續(xù)生產(chǎn)、使用了10多年之久,直到1996年3月,才出現(xiàn)了增強(qiáng)型單片機(jī)芯片。增強(qiáng)型單片機(jī)制造工藝全是CHMOS,不再使用HMOS。所謂“增強(qiáng)”是指在原有基礎(chǔ)上為滿足不同的需要增加了一些電路或軟件程序。增強(qiáng)型單片機(jī)有不同的增強(qiáng)類型。

1)增容型“增容”是指片內(nèi)程序存儲(chǔ)器和片內(nèi)數(shù)據(jù)存儲(chǔ)器容量增加。將片內(nèi)程序存儲(chǔ)器從4KB增加的有:

83C51FA、87C51FA、87C52、89C52等增加到8KB;

83C51FB、87C51FB、87C54、89C54、P89C660等增加到16KB;

83C51FC、87C51FC、87C58、89C58、P89C51RC等增加到32KB;

P89C51RD、P89C664、P89C6XX2等增加到64KB。將片內(nèi)數(shù)據(jù)存儲(chǔ)器從128B增加的有:

P89C51RC、P89C660、P89C60X2等增加到512B;

P89C51RD、P89C662、P89C61X2等增加到1KB;

P89C668增加到8KB。除片內(nèi)存儲(chǔ)器容量增加外,還將其它一些功能電路進(jìn)行了擴(kuò)展,如8052AH、8032AH、8752BH的16位計(jì)數(shù)器擴(kuò)展為3個(gè)。

2)?ROM改進(jìn)型基本型單片機(jī)的片內(nèi)程序ROM通常是掩膜ROM、EPROM或EEPROM,無(wú)法在線擦除,而增強(qiáng)型單片機(jī)多以O(shè)TPROM和FlashROM取代?;拘蛦纹瑱C(jī)有Intel公司的87C51GB、Philips公司的80C51系列產(chǎn)品;增強(qiáng)型單片機(jī)有Philips的P89C51/52/54/58系列產(chǎn)品,如P89C51RX、P89C66X等,還有ATMEL公司的AT89C51系列機(jī)。從單片機(jī)的發(fā)展前景看,大有FlashROM取代其它ROM構(gòu)成程序存儲(chǔ)器的趨勢(shì)。

3)接口電路擴(kuò)展型

80C451、83C451、87C451有7個(gè)I/O接口,56條I/O引腳;

80CL31、80CL51、80CL410、83CL410可管理10個(gè)中斷源;

80C51GA、83C51GA、87C51GA增設(shè)了8路8位A/D轉(zhuǎn)換功能以及半雙工同步串行接口;

80C51FA、83C51FA、87C51FA增加了可編程計(jì)數(shù)陣列PCA,編程功能大為改觀。有的芯片還增設(shè)了PWM脈沖寬度調(diào)制接口、比較捕獲單元CCU、I2C總線、SPI總線、CAN總線等。尤其在集成了一些總線接口后,實(shí)現(xiàn)了規(guī)范化,與相應(yīng)總線接口存儲(chǔ)器、時(shí)鐘芯片的連接變得十分方便。

4)軟件改進(jìn)型相當(dāng)多的增強(qiáng)型芯片都能支持C語(yǔ)言等高級(jí)語(yǔ)言,8052AH-BASIC芯片內(nèi)固化有MCS

BASIC52解釋程序,使BASIC語(yǔ)言能和匯編語(yǔ)言混用。87C51內(nèi)還設(shè)計(jì)有兩級(jí)程序存儲(chǔ)器保密系統(tǒng),能有效防止非法拷貝程序。從以上分析可見(jiàn),新一代MCS-51增強(qiáng)型單片機(jī)的內(nèi)部結(jié)構(gòu)是基本型加不同功能的硬軟件擴(kuò)展部分。表1-8列出了Intel公司、Philips公司和ATMEL公司部分單片機(jī)產(chǎn)品的性能。1.2.3CPU結(jié)構(gòu)

8XX5X單片機(jī)的中央處理單元CPU由運(yùn)算器、控制器和寄存器陣列組成。運(yùn)算器的功能是進(jìn)行算術(shù)和邏輯運(yùn)算,算術(shù)運(yùn)算有加、減、乘、除、加1、減1、比較、十進(jìn)制調(diào)整等,邏輯運(yùn)算有與、或、非、異或、移位等。運(yùn)算器內(nèi)有一個(gè)稱為布爾處理器的邏輯部件,專門用于位操作運(yùn)算。位操作包含三種:一是邏輯操作,對(duì)可尋址位復(fù)位、置位、取反;一是傳送操作,在進(jìn)位標(biāo)志位CF與可尋址位之間相互傳送數(shù)據(jù);一是轉(zhuǎn)移操作,程序轉(zhuǎn)移條件分別設(shè)置為等于1轉(zhuǎn)移、等于1轉(zhuǎn)移且清零、等于0轉(zhuǎn)移??刂破魇钦麄€(gè)單片機(jī)各邏輯部件的指揮中心,由滿足各種不同功能的時(shí)序邏輯電路和組合邏輯電路構(gòu)成,在指令代碼的作用下,相關(guān)的控制門電路開(kāi)啟,無(wú)關(guān)的控制門電路斷開(kāi),對(duì)各邏輯部件和內(nèi)部總線提供必需的控制信號(hào)。內(nèi)部寄存器陣列由程序計(jì)數(shù)器PC和指令寄存器IR組成。程序計(jì)數(shù)器PC是一個(gè)16位的寄存器,用于存放下一條將要執(zhí)行的指令地址,并能自動(dòng)加1。

PC的功能如圖1-9所示。假設(shè)PC的當(dāng)前值為PC=A000H,它表明當(dāng)前要執(zhí)行的指令機(jī)器碼是地址為A000H單元的內(nèi)容74H,在取出這個(gè)指令機(jī)器碼后,PC自動(dòng)加1,變成為A001H,表明下一條要執(zhí)行的指令機(jī)器碼是位于A001H單元中的36H。圖1-9PC功能由于指令在程序存儲(chǔ)器中是以指令機(jī)器碼的形式按順序依次排放的,因此,指令的執(zhí)行也是按順序進(jìn)行。PC能夠自動(dòng)加1的性質(zhì)保證了程序依次執(zhí)行。但是,如果使用條件轉(zhuǎn)移指令,讓新的地址值送入PC,破壞了PC自動(dòng)加1的性質(zhì),程序執(zhí)行的順序也將發(fā)生變化,程序發(fā)生了轉(zhuǎn)移。尋址時(shí)PC的地址值高8位經(jīng)P2口送出,低8位經(jīng)P0口送出,16位地址能尋址64KB程序存儲(chǔ)器。指令寄存器IR的功能是存放從存儲(chǔ)器取出的指令代碼,指令代碼經(jīng)譯碼器譯碼后使控制器發(fā)出相關(guān)的控制信號(hào),讓那些該通的門電路開(kāi)通,該斷開(kāi)的門電路斷開(kāi),完成相應(yīng)的指令操作。1.3MCS-51單片機(jī)存儲(chǔ)器

MCS-51單片機(jī)的存儲(chǔ)器有片內(nèi)和片外之分,這是因?yàn)閱纹瑱C(jī)內(nèi)芯片面積所限,只能集成少量存儲(chǔ)單元,很多情況下不夠用,必須在單片機(jī)外進(jìn)行擴(kuò)展,連接一些存儲(chǔ)芯片。無(wú)論是片內(nèi)存儲(chǔ)器,還是片外存儲(chǔ)器,單片機(jī)采用的存儲(chǔ)器結(jié)構(gòu)都是把程序和數(shù)據(jù)分開(kāi)存放,存放程序及程序中常數(shù)的存儲(chǔ)器稱為程序存儲(chǔ)器,通常由ROM構(gòu)成;存放數(shù)據(jù)的存儲(chǔ)器稱為數(shù)據(jù)存儲(chǔ)器,通常由RAM構(gòu)成。程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器也就叫做程序ROM和數(shù)據(jù)RAM。這兩類存儲(chǔ)器各自有自己的尋址方式、控制方式和傳輸信息方式,其配置如圖1-10所示。圖1-10MCS-51片內(nèi)、片外存儲(chǔ)器從物理空間來(lái)說(shuō),MCS-51系列單片機(jī)有4個(gè)相對(duì)獨(dú)立的存儲(chǔ)器尋址空間,分別是片內(nèi)程序存儲(chǔ)器、片內(nèi)數(shù)據(jù)存儲(chǔ)器、片外程序存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器。按照邏輯空間劃分,又可以分成3個(gè)相對(duì)獨(dú)立的存儲(chǔ)器尋址空間,就是片內(nèi)、片外統(tǒng)一編址的程序存儲(chǔ)器,單獨(dú)編址的片內(nèi)數(shù)據(jù)存儲(chǔ)器,單獨(dú)編址的片外數(shù)據(jù)存儲(chǔ)器。1.3.1片內(nèi)、外統(tǒng)一編址的程序存儲(chǔ)器

MCS-51單片機(jī)有16根地址線,最大尋址程序存儲(chǔ)空間為64KB。單片機(jī)的片內(nèi)、外程序存儲(chǔ)器采用統(tǒng)一的編址方式:

4KB的片內(nèi)ROM編址范圍為0000H~0FFFH;

64KB的片外ROM編址范圍為0000H~FFFFH,其中片外ROM有4KB(編址0000H~0FFFH)與片內(nèi)ROM有相同的地址編號(hào),還有60KB片外ROM編址1000H~FFFFH。鑒于片外ROM有4KB與片內(nèi)ROM編址有重復(fù),為了取指令操作碼時(shí)僅訪問(wèn)一個(gè)存儲(chǔ)單元,單片機(jī)設(shè)置了一根控制線,用于選擇是片內(nèi)ROM操作,還是片外ROM操作。當(dāng)=1時(shí),程序?qū)膬?nèi)部ROM開(kāi)始,PC所指存儲(chǔ)單元是片內(nèi)ROM中某一單元地址,如果PC值漸增到超過(guò)片內(nèi)ROM容量(PC值大于0FFFH),程序指針將自動(dòng)轉(zhuǎn)向1000H~FFFFH的外部ROM存儲(chǔ)空間;當(dāng)=0時(shí),程序?qū)耐獠縍OM開(kāi)始,PC指向的存儲(chǔ)單元是片外ROM中某一單元地址。利用的高、低電平能夠選擇片內(nèi)ROM還是片外ROM,并順利安放或找到程序。對(duì)于那些無(wú)片內(nèi)ROM的單片機(jī),如8031,應(yīng)固定接地,使正常工作時(shí)能直接從片外ROM中讀取指令代碼。在單片機(jī)上電或復(fù)位時(shí),程序計(jì)數(shù)器PC內(nèi)容為0000H,單片機(jī)將從程序存儲(chǔ)器的0000H單元開(kāi)始取指令代碼,從0000H單元開(kāi)始執(zhí)行程序。由于MCS-51單片機(jī)規(guī)定程序存儲(chǔ)器的0003H~002FH單元專門用于為5個(gè)中斷服務(wù)程序作入口地址使用,因此有必要在0000H~0002H單元內(nèi)存放一條無(wú)條件轉(zhuǎn)移指令,使CPU從0002H單元跳離,避開(kāi)0003H~002FH區(qū)間,跳離的主程序首地址由用戶在程序中指定。單片機(jī)的程序存儲(chǔ)器只能用指令“讀出”,不能“寫入”,沒(méi)有任何指令能修改程序存儲(chǔ)器的內(nèi)容。在進(jìn)行數(shù)據(jù)傳送時(shí),程序ROM中的數(shù)據(jù)既不能傳送給程序ROM中的其它單元,也不能傳送給片外數(shù)據(jù)存儲(chǔ)器,只能傳送給累加器A。1.3.2片內(nèi)、外單獨(dú)編址的數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器用于存放程序執(zhí)行過(guò)程中需要使用的常數(shù)或變量數(shù)據(jù)。單片機(jī)的數(shù)據(jù)存儲(chǔ)器有片內(nèi)、片外之分,它們的存儲(chǔ)容量不同,各自單獨(dú)編址?;拘蛦纹瑱C(jī)配備的片內(nèi)數(shù)據(jù)存儲(chǔ)器有256B(其中片內(nèi)RAM和特殊功能寄存器SFR各占128B),地址編號(hào)為00H~FFH;片外數(shù)據(jù)存儲(chǔ)器容量有64KB,地址編號(hào)為0000H~FFFFH。由于MCS-51單片機(jī)有16根地址線,因此最大尋址數(shù)據(jù)存儲(chǔ)空間為64KB,與最大尋址程序存儲(chǔ)空間相同。

1.片外數(shù)據(jù)存儲(chǔ)器

64KB片外數(shù)據(jù)存儲(chǔ)器與64KB片外程序存儲(chǔ)器尋址時(shí)都使用單片機(jī)的16位地址線。為了區(qū)分是訪問(wèn)片外RAM還是訪問(wèn)片外ROM,通常采用兩種做法:

(1)使用不同的控制線,數(shù)據(jù)RAM用、選通,程序ROM用選通。

(2)使用不同的指令,訪問(wèn)數(shù)據(jù)RAM使用MOVX指令,訪問(wèn)程序ROM使用MOVC指令。

有關(guān)MOVX指令和MOVC指令的操作,詳見(jiàn)第2章。片外數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)既不能直接傳送至數(shù)據(jù)RAM的其它單元,也不能直接傳送給程序ROM的各個(gè)單元。要想在片外數(shù)據(jù)存儲(chǔ)器兩個(gè)存儲(chǔ)單元之間傳送數(shù)據(jù),或者把程序ROM中的數(shù)據(jù)傳送給片外數(shù)據(jù)存儲(chǔ)器,都必須通過(guò)累加器A間接傳送。累加器A是片內(nèi)數(shù)據(jù)存儲(chǔ)器中的一個(gè)存儲(chǔ)單元。

MCS-51單片機(jī)的片外I/O端口和片外數(shù)據(jù)存儲(chǔ)器采用統(tǒng)一編址的方式,共同占有64KB地址空間進(jìn)行分配,因此它們可統(tǒng)稱為片外數(shù)據(jù)存儲(chǔ)器。

2.片內(nèi)數(shù)據(jù)存儲(chǔ)器基本型單片機(jī)片內(nèi)數(shù)據(jù)存儲(chǔ)器有256B,分成兩部分:由字節(jié)地址00H~7FH單元組成的128BRAM區(qū),通常被稱為片內(nèi)RAM區(qū);由字節(jié)地址80H~FFH單元組成的128BRAM區(qū),是專用寄存器區(qū),區(qū)內(nèi)有21個(gè)特殊功能寄存器SFR。片內(nèi)數(shù)據(jù)存儲(chǔ)器是單片機(jī)指令操作最為頻繁的地址空間,單片機(jī)的所有指令操作都可以在片內(nèi)數(shù)據(jù)存儲(chǔ)空間上進(jìn)行。除送數(shù)、轉(zhuǎn)移操作外,其它如算術(shù)邏輯運(yùn)算、位操作等,只能在片內(nèi)數(shù)據(jù)存儲(chǔ)器中進(jìn)行。1.3.3片內(nèi)RAM和特殊功能寄存器SFR

1.片內(nèi)數(shù)據(jù)RAM

128B的片內(nèi)數(shù)據(jù)RAM在物理上可分成相對(duì)獨(dú)立且性質(zhì)不同的三部分,如表1-9所示。

1)?00H~1FH的32個(gè)單元此32個(gè)單元被稱為工作寄存器區(qū),分為0組~3組,每組8個(gè)存儲(chǔ)單元,用R0~R7命名。R0~R7稱為工作寄存器,每個(gè)寄存器存放1個(gè)字節(jié)的數(shù)據(jù)。在任一時(shí)刻,4個(gè)寄存器組中只有1個(gè)有資格成為工作寄存器組,其它不能成為工作寄存器組的3個(gè)組只能充當(dāng)一般的RAM使用。工作寄存器的選擇由程序狀態(tài)字PSW中的PSW.3(RS1)和PSW.4(RS0)位決定:

RS1RS0 00選中0組為工作寄存器組

01選中1組為工作寄存器組

10選中2組為工作寄存器組

11選中3組為工作寄存器組

RS1、RS0的取值通過(guò)指令設(shè)置,這樣,選擇哪個(gè)寄存器組作為工作寄存器組就取決于編程人員。當(dāng)單片機(jī)上電或復(fù)位時(shí),由于PSW的狀態(tài)被置成00000000B,因此自動(dòng)選中0組。

2)?20H~2FH的16個(gè)單元此16個(gè)單元共有128位,被稱為位尋址區(qū)。16個(gè)單元可作為一般的字節(jié)存儲(chǔ)單元使用。128位的每一位都可以單獨(dú)利用位操作指令進(jìn)行清零(CLR)、取反(CPL)、置位(SETB)等操作。為此,給128位的每一位設(shè)置了位地址,地址范圍為00H~7FH。位尋址區(qū)的特點(diǎn)是既可進(jìn)行字節(jié)尋址,又可進(jìn)行位尋址。位尋址區(qū)常用于設(shè)置各種狀態(tài)變量、位控制變量等。

3)?30H~7FH的80個(gè)單元此80個(gè)單元被稱為一般RAM區(qū),又叫其余空間。這些單元和工作寄存器區(qū)中未被選中的24個(gè)單元一起,使一般RAM區(qū)可用的存儲(chǔ)單元個(gè)數(shù)達(dá)到104個(gè),它們作字節(jié)數(shù)據(jù)緩沖器使用,對(duì)這些單元只能進(jìn)行字節(jié)尋址,不能進(jìn)行位尋址。通常堆棧就設(shè)置在從30H開(kāi)始的區(qū)間內(nèi)。增強(qiáng)型單片機(jī)的片內(nèi)數(shù)據(jù)RAM有256B,地址80H~FFH的128B和特殊功能寄存器SFR地址重合,區(qū)分方法是使用不同的尋址方式。有關(guān)尋址方式的內(nèi)容將在第2章介紹。

2.特殊功能寄存器SFR

MCS-51單片機(jī)內(nèi)有21個(gè)特殊功能寄存器SFR(SpecialFunctionRegister),每一個(gè)寄存器是一個(gè)存儲(chǔ)單元,但不作一般RAM使用,而是有各自不同的特殊功能,它們分散在80H~FFH的128B地址空間內(nèi),如表1-10所示。表內(nèi)部分寄存器名前標(biāo)有“△”符號(hào),表示該寄存器可以進(jìn)行位尋址,位地址編號(hào)為80H~F7H,這樣的寄存器有11個(gè),還有10個(gè)只能進(jìn)行字節(jié)操作,不能進(jìn)行位尋址。

128B地址空間內(nèi)僅有21個(gè)特殊功能寄存器占有字節(jié)地址,余下的地址沒(méi)有任何作用,也不能用指令操作。

21個(gè)SFR主要用于描述單片機(jī)的狀態(tài)字和控制字,它們大體上可以分為兩類:一類發(fā)布單片機(jī)的地址信號(hào)、控制命令以及輸入/輸出數(shù)據(jù)信號(hào),通過(guò)單片機(jī)引腳形成對(duì)外電路的三組總線信號(hào);還有一類作單片機(jī)內(nèi)部控制使用。21個(gè)SFR簡(jiǎn)要介紹如下。

(1)?P0端口,地址線/數(shù)據(jù)線分時(shí)使用端口。作地址線使用時(shí),輸出低8位地址信A0~A7;作數(shù)據(jù)線使用時(shí),可外接I/O端口,輸入/輸出數(shù)據(jù)信號(hào)D0~D7。對(duì)于地址信號(hào),需要在單片機(jī)外使用鎖存器(例如8D觸發(fā)器74LS373、8282等)將其鎖存,也需要單片機(jī)提供一條地址鎖存允許ALE實(shí)現(xiàn)鎖存功能。由于外接的I/O端口和數(shù)據(jù)RAM統(tǒng)一編址,因此I/O操作使用存儲(chǔ)器操作指令就能完成。例如,MOV30H,A是把累加器A的內(nèi)容送地址為30H的存儲(chǔ)單元;而MOVP0,A就能實(shí)現(xiàn)累加器A的內(nèi)容經(jīng)P0口送到單片機(jī)外的I/O設(shè)備。

(2)?SP,堆棧指針,用于指示堆棧的棧頂。堆棧是存儲(chǔ)器內(nèi)按照“先入后出”原則組織起來(lái)的一段區(qū)間,單片機(jī)內(nèi)的堆棧通常設(shè)置在片內(nèi)RAM中,具有向下生長(zhǎng)的性質(zhì)。

MCS-51單片機(jī)上電或復(fù)位時(shí),SP被置成07H,使得堆棧實(shí)際從08H單元開(kāi)始。為了不影響工作寄存器組R0~R7的選擇和位尋址區(qū)的使用,通常使用MOV指令將SP的值設(shè)置在30H~7FH其余空間內(nèi),SP的初始值越小,堆棧的深度就會(huì)越深。堆棧操作為字節(jié)操作,有入棧操作和出棧操作兩種,分別用PUSH和POP指令實(shí)現(xiàn)。圖1-11分別畫出了指令PUSH

ACC和POP

B的執(zhí)行示意圖。圖1-11堆棧及其操作入棧過(guò)程分為兩步完成:①?SP自動(dòng)加1,指向下一單元;②?A的內(nèi)容進(jìn)入SP所指單元。完成后,SP依舊指向棧頂。出棧過(guò)程分為兩步完成:①?SP所指單元內(nèi)容送入A;②?SP自動(dòng)減1,棧頂發(fā)生變化,但SP依舊指向棧頂。在執(zhí)行調(diào)用子程序指令和響應(yīng)中斷時(shí),將自動(dòng)產(chǎn)生16位的PC值入棧操作;在執(zhí)行子程序返回和中斷返回指令時(shí),將產(chǎn)生出棧操作,棧頂內(nèi)容自動(dòng)彈送到PC內(nèi)。如果在子程序或中斷服務(wù)程序中要用到主程序中正在使用的一些寄存器,必須在子程序或中斷服務(wù)程序一開(kāi)始用PUSH指令將它們?nèi)霔1Wo(hù),在返回之前用POP指令恢復(fù)這些寄存器的原有值。

(3)?DPL,8位數(shù)據(jù)寄存器。

(4)?DPH,8位數(shù)據(jù)寄存器。DPH和DPL除作兩個(gè)獨(dú)立的8位數(shù)據(jù)寄存器使用外,還可以合在一起構(gòu)成1個(gè)16位的數(shù)據(jù)指針DPTR(DataPointer),DPL是DPTR的低8位,DPH是DPTR的高8位。DPTR用于存放64KB片外程序ROM或64KB片外數(shù)據(jù)RAM的地址。

(5)?PCON,電源控制寄存器,對(duì)于采用HMOS工藝結(jié)構(gòu)的單片機(jī),用于串行方式中選擇波特率的倍數(shù)。對(duì)于采用CHMOS工藝結(jié)構(gòu)的增強(qiáng)型單片機(jī),如8XC5X系列和8XC5XX2系列,除用于串行方式中選擇波特率的倍數(shù)外,還用于選擇工作在正常操作方式,還是工作在低功耗操作方式。

(6)?TCON,定時(shí)器/計(jì)數(shù)器控制寄存器,用于確定采用什么觸發(fā)方式和有無(wú)中斷申請(qǐng)。

(7)?TMOD,定時(shí)器/計(jì)數(shù)器方式控制寄存器,用于規(guī)定定時(shí)器/計(jì)數(shù)器的工作方式。

(8)?TL0,定時(shí)器/計(jì)數(shù)器T0的低8位。

(9)?TL1,定時(shí)器/計(jì)數(shù)器T1的低8位。

(10)?TH0,定時(shí)器/計(jì)數(shù)器T0的高8位。

(11)?TH1,定時(shí)器/計(jì)數(shù)器T1的高8位。

(12)?P1端口,8位I/O數(shù)據(jù)端,作8條數(shù)據(jù)線使用。

(13)?SCON,串行口控制寄存器,用于設(shè)定串行口的工作方式、接收/發(fā)送標(biāo)志。

(14)?SBUF,串行I/O緩沖器,用于接收/發(fā)送數(shù)據(jù)。指令MOVSBUF,A能實(shí)現(xiàn)將累加器A中的字節(jié)數(shù)據(jù)從串行口一位一位地發(fā)送出去;指令MOVA,SBUF能實(shí)現(xiàn)單片機(jī)外的字節(jié)數(shù)據(jù)一位一位地經(jīng)串行口進(jìn)入到累加器A中。

(15)?P2端口,高8位地址線/8位I/O數(shù)據(jù)線合用端口,P2和P0組成了單片機(jī)的16位地址線。通常P2作地址線用時(shí),不再用作I/O數(shù)據(jù)線,因此不需鎖存P2。

(16)?IE,中斷允許寄存器,用于是否允許或禁止中斷。

(17)?P3端口,8位I/O數(shù)據(jù)線/第2功能線合用端口,在作數(shù)據(jù)線使用時(shí),不作第2功能線;作第2功能線使用時(shí),不作數(shù)據(jù)線用。

(18)?IP,中斷優(yōu)先級(jí)控制寄存器,用于選擇中斷優(yōu)先級(jí)別。

(19)PSW,程序狀態(tài)字,反映運(yùn)算結(jié)果標(biāo)志及選擇工作寄存器組。8位定義如表1-11所示。除RS1、RS0前已敘述外,其余各位含義如下:

P:奇偶標(biāo)志,指令運(yùn)算結(jié)果有奇數(shù)個(gè)“1”時(shí),P=1;有偶數(shù)個(gè)“1”時(shí),P=0。

OV:溢出標(biāo)志,運(yùn)算結(jié)果超出補(bǔ)碼表示范圍時(shí)有溢出,OV=1;無(wú)溢出,OV=0。

F0:留給用戶自己去定義。

AC:半進(jìn)(借)位,又稱輔助進(jìn)(借)位,運(yùn)算中低4位向高4位有進(jìn)(借)位時(shí),AC=1;否則AC=0。

CY:進(jìn)(借)位,在加(減)法運(yùn)算中有進(jìn)(借)位時(shí),CY=1;無(wú)進(jìn)(借)位時(shí),CY=0。

(20)?A,累加器,8位數(shù)據(jù)寄存器,字節(jié)地址E0H,符號(hào)地址ACC,是單片機(jī)指令操作中用得最多的寄存器。本身帶有零標(biāo)志Z,當(dāng)A=0時(shí)Z=1,A≠0時(shí)Z=0。零標(biāo)志常用于條件轉(zhuǎn)移。

(21)?B,B寄存器,存放8位數(shù)據(jù)用。1.4單片機(jī)最小系統(tǒng)1.4.1單片機(jī)引腳功能

MCS-51系列單片機(jī)有40引腳雙列直插封裝和44引腳方形封裝兩種形式,其中40引腳DIP封裝如圖1-12所示。無(wú)論哪種封裝,引腳功能共分成4種不同類型:地址線、數(shù)據(jù)線、控制線和電源線。大多數(shù)引腳只具備一個(gè)功能,部分引腳有兩種功能?,F(xiàn)以40引腳封裝為例說(shuō)明。圖1-1240引腳封裝

P0~P3:占32個(gè)引腳,其中P0是低8位地址線/數(shù)據(jù)線端口,P1是數(shù)據(jù)線端口,P2是高8位地址線/數(shù)據(jù)線端口,P3是數(shù)據(jù)線/第2功能線端口。

ALE/:地址鎖存允許/編程。作ALE用時(shí)為輸出信號(hào),頻率為時(shí)鐘振蕩頻率的1/6,用于鎖存P0口的低8位地址;作用時(shí)為輸入引腳,在EPROM編程時(shí)輸入編程脈沖。:程序存儲(chǔ)器允許作輸出用。頻率為時(shí)鐘振蕩頻率的1/6,用于選通片外程序存儲(chǔ)器。如果發(fā)生訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器的操作,則在一個(gè)機(jī)器周期內(nèi)不會(huì)產(chǎn)生。

/VPP:片外程序ROM有效/編程電源。作用時(shí)為輸出信號(hào),=0片外程序ROM有效,=1片內(nèi)程序ROM有效。作VPP用時(shí)為電源輸入,輸入21V編程電源VPP。

XTAL1和XTAL2:外部時(shí)鐘振蕩信號(hào)輸入端。

VCC:+5V電源。

VSS:地。

RST/VPD:復(fù)位/備用電源接入。正常工作時(shí)作復(fù)位信號(hào)引入,當(dāng)VCC失電時(shí),此腳接入備用電源,使片內(nèi)RAM中的數(shù)據(jù)處于低功耗保護(hù)。方形封裝的單片機(jī)芯片雖然有44根引腳,但實(shí)際使用的引腳依舊是40根,還有4根空置不用。44引腳LCC和PQFP封裝如圖1-13所示。圖1-1344引腳封裝(a)?LCC封裝;(b)?PQFP封裝1.4.2時(shí)鐘電路與復(fù)位電路

1.時(shí)鐘電路單片機(jī)的時(shí)鐘信號(hào)由兩種電路產(chǎn)生:內(nèi)振蕩電路和外振蕩電路。在任一時(shí)刻,只需要一種振蕩電路便能使單片機(jī)正常工作。使用內(nèi)振蕩電路提供時(shí)鐘脈沖,需要在XTAL1和XTAL2之間外接石英晶體振蕩器或陶瓷振蕩器,這時(shí)的內(nèi)部振蕩電路僅相當(dāng)于一個(gè)高增益放大器,和晶振接在一起形成一個(gè)正反饋的自激振蕩,再經(jīng)整形和分頻形成單片機(jī)內(nèi)各邏輯部件所需的時(shí)鐘脈沖。內(nèi)振蕩電路如圖1-14所示。圖1-14內(nèi)振蕩電路外振蕩方式是將外部時(shí)鐘信號(hào)直接從XTAL1(用于CHMOS)或XTAL2(用于HMOS)引入,這時(shí)XTAL1和XTAL2只需使用1個(gè),另1個(gè)懸空。外振蕩電路如圖1-15所示。在需要時(shí)鐘穩(wěn)定的情況下用內(nèi)部振蕩產(chǎn)生時(shí)鐘;在要求單片機(jī)與外界信號(hào)同步時(shí)使用外部振蕩。圖1-15外振蕩電路

2.復(fù)位及復(fù)位電路單片機(jī)的復(fù)位操作由復(fù)位引腳RST/VPD上出現(xiàn)的高電平引起,高電平持續(xù)時(shí)間不少于兩個(gè)機(jī)器周期(24個(gè)振蕩周期),CPU在第2個(gè)機(jī)器周期內(nèi)執(zhí)行復(fù)位操作。如果RST/VPD持續(xù)為高電平,那么每隔24個(gè)振蕩周期重復(fù)一次復(fù)位操作。復(fù)位后機(jī)內(nèi)各特殊功能寄存器初始狀態(tài)如表1-12所示,而片內(nèi)128BRAM的狀態(tài)不受復(fù)位信號(hào)的影響。各個(gè)特殊功能寄存器的復(fù)位狀態(tài)解釋如下:

P0~P3=FFH:表示已向各端口線寫入1,使各端口既能作輸入線,又能作輸出線使用。

SP=07H:表示堆棧棧底位于07H單元,第1個(gè)進(jìn)棧字節(jié)將寫入08H單元中。

DPTR=0000H:表示片外存儲(chǔ)器的操作將從0000H單元開(kāi)始。

PCON:HMOS單片機(jī)的PCON=0xxxxxxxB,最高位為0表示串行工作時(shí)的波特率不加倍。CHMOS單片機(jī)的PCON=00xxxx00B,最低兩位為00表示復(fù)位后單片機(jī)處于正常操作方式。

TCON=00H:表示T0、T1的工作均被停止。

TL0=00H,TH0=00H:表示T0的初值為0000H。

TL1=

溫馨提示

  • 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)論