![第1章單片機(jī)基礎(chǔ)教材_第1頁](http://file4.renrendoc.com/view11/M03/05/39/wKhkGWX43nqAXQP4AADud4On2ME601.jpg)
![第1章單片機(jī)基礎(chǔ)教材_第2頁](http://file4.renrendoc.com/view11/M03/05/39/wKhkGWX43nqAXQP4AADud4On2ME6012.jpg)
![第1章單片機(jī)基礎(chǔ)教材_第3頁](http://file4.renrendoc.com/view11/M03/05/39/wKhkGWX43nqAXQP4AADud4On2ME6013.jpg)
![第1章單片機(jī)基礎(chǔ)教材_第4頁](http://file4.renrendoc.com/view11/M03/05/39/wKhkGWX43nqAXQP4AADud4On2ME6014.jpg)
![第1章單片機(jī)基礎(chǔ)教材_第5頁](http://file4.renrendoc.com/view11/M03/05/39/wKhkGWX43nqAXQP4AADud4On2ME6015.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章基礎(chǔ)知識(shí)1.1碼制1.2計(jì)算機(jī)的基本知識(shí)1.3尋址方式1.4單片機(jī)及其發(fā)展概況1.1碼制1.1.1英文字符的表示方法——ASCII碼由于計(jì)算機(jī)只能處理二進(jìn)制數(shù),因此除了數(shù)值本身需要用二進(jìn)制數(shù)形式表示外,字符,包括數(shù)碼(如0,1,2,3,4,5,6,7,8,9)、字母(如A,B,C,D,…,X,Y,Z及a,b,c,d,…,x,y,z)、特殊符號(hào)(如%,!,+,-,=等)也必須用二進(jìn)制數(shù)表示,即在計(jì)算機(jī)中需將數(shù)碼、字母、特殊符號(hào)等代碼化,以便于計(jì)算機(jī)識(shí)別、存儲(chǔ)和處理。英文屬于典型的拼音文字,由字母、數(shù)字、特殊符號(hào)等組合而成,但這些字母、數(shù)字、特殊符號(hào)的數(shù)目畢竟有限,不過百余個(gè)。我們知道7位二進(jìn)制數(shù)可以表示128種狀態(tài),如果每一種狀態(tài)代表特定的字母或數(shù)字,則7位二進(jìn)制數(shù)可表示128個(gè)字符。
例如:可用0110000B表示數(shù)字0,0110001B表示數(shù)字1,1000001B表示大寫字母A等。但這種編碼方式并不惟一,如用0110000B表示數(shù)字A,0110001B表示數(shù)字B,1000001B表示數(shù)字0也未嘗不可。為了便于不同計(jì)算機(jī)系統(tǒng)和不同操作者之間的信息交換,就有必要規(guī)范字母與7位二進(jìn)制數(shù)之間的對(duì)應(yīng)關(guān)系。目前計(jì)算機(jī)系統(tǒng)中普遍采用美國標(biāo)準(zhǔn)信息交換代碼(AmericanStandardCodeforInformationInterchangeII,簡(jiǎn)稱ASCII碼)。該標(biāo)準(zhǔn)用7位二進(jìn)制數(shù)表示一個(gè)字符,最多可以表示128個(gè)字符,編碼與字符之間的對(duì)應(yīng)關(guān)系如附錄C所示。
在計(jì)算機(jī)系統(tǒng)中,存儲(chǔ)單元的長度通常為8位二進(jìn)制數(shù)(即一個(gè)字節(jié)),為了存取方便,規(guī)定一個(gè)存儲(chǔ)單元存放一個(gè)ASCII碼,其中低7位表示字母本身的編碼,第8位(bit7)用作奇偶校驗(yàn)位或規(guī)定為零(通常如此)。因此,也可以認(rèn)為ASCII碼的長度為8位(但bit7為0)。128個(gè)字符對(duì)于某些特殊應(yīng)用來說,可能不夠,因此就采用8位的ASCII,即擴(kuò)展ASCII碼(共有256個(gè)代碼)。其中前128個(gè)(高位為0)編碼用于表示基本的ASCII碼,基本ASCII碼主要用于表示數(shù)字、英文字母(大、小寫)、標(biāo)點(diǎn)符號(hào)、控制字符等;后128(高位為1)個(gè)編碼用于表示擴(kuò)展的ASCII碼,擴(kuò)展ASCII用于表示一些特殊的符號(hào),如希臘字母等。1.1.2BCD碼(二進(jìn)制編碼的十進(jìn)制數(shù))十進(jìn)制數(shù)8421BCD碼十進(jìn)制數(shù)8421BCD碼000005010110001601102001070111300118100040100910011.1.3計(jì)算機(jī)中帶符號(hào)數(shù)的表示方法在計(jì)算機(jī)中,對(duì)于帶符號(hào)數(shù)來說,一般用最高位表示數(shù)的正、負(fù)。對(duì)于正數(shù),最高位規(guī)定為“0”,對(duì)于負(fù)數(shù),最高位為“1”,例如:56H可以表示01010110(對(duì)于8位二進(jìn)制數(shù)來說,b7位表示數(shù)的正負(fù),b6~b0表示數(shù)的絕對(duì)值);-?56H可以表示11010110。0256H可以表示0000001001010110(對(duì)于16位二進(jìn)制數(shù)來說,b15位表示數(shù)的正負(fù),b14~b0表示數(shù)的絕對(duì)值);-?0256H可以表示1000001001010110。1.原碼對(duì)于帶符號(hào)數(shù)來說,用最高位表示數(shù)的正負(fù),其余各位表示該數(shù)的絕對(duì)值,這種表示方法稱為原碼表示法,如上所示。2.反碼帶符號(hào)數(shù)也可以用反碼表示,反碼與原碼的關(guān)系是:正數(shù)的反碼與原碼相同,如?[56H]反=[56H]原=01010110B。
負(fù)數(shù)的反碼等于對(duì)應(yīng)正數(shù)的原碼按位求反。因此,求-?56H反碼的過程如下:對(duì)應(yīng)正數(shù)56H的原碼為0?101?0110;按位求反后為10101001,即-?56H的反碼為10101001。或者說,正數(shù)的反碼與原碼相同,而負(fù)數(shù)的反碼是對(duì)應(yīng)負(fù)數(shù)原碼除符號(hào)位外,絕對(duì)值部分按位取反。3.補(bǔ)碼在計(jì)算機(jī)內(nèi),帶符號(hào)數(shù)并不是用原碼或反碼表示,而是用補(bǔ)碼表示,引入“原碼”、“反碼”的目的只是為了方便理解補(bǔ)碼概念而已。不用原碼表示的原因是:用原碼表示時(shí),“0”的原碼并不惟一,0的原碼可以表示為00000000(即+0),也可以表示為10000000(即-?0),這會(huì)造成混亂;再就是用原碼表示時(shí),減法并不能轉(zhuǎn)化為加法運(yùn)算,反碼也存在類似問題。在計(jì)算機(jī)中,帶符號(hào)數(shù)用補(bǔ)碼表示后,減法可以轉(zhuǎn)化為加法運(yùn)算,例如:56H-23H=56H-23H+100H(100H是8位二進(jìn)制能表示的最大數(shù),加上100H后,對(duì)計(jì)算結(jié)果沒有影響,原因是8位二進(jìn)制無法存放100H中的“1”,即b8位)=56H+100H-23H=56H+0DDH=133H=33H(由于8位二進(jìn)制不能存放b8位,結(jié)果133H中最高位“1”自然丟失)顯然,56H-23H的結(jié)果與56H+0DDH相同,即引入補(bǔ)碼后,減法可以用加法來完成。可見,在8位二進(jìn)制中,23H與0DDH互為補(bǔ)碼。補(bǔ)碼的定義如下:正數(shù)的補(bǔ)碼與反碼、原碼相同;負(fù)數(shù)的補(bǔ)碼等于它的反碼加1。因此,求-23H補(bǔ)碼的過程如下:對(duì)應(yīng)正數(shù)23H的原碼為00100011;按位求反后為11011100,即-23H的反碼;反碼加1后為11011101,即-23H的補(bǔ)碼為11011101(相當(dāng)于無符號(hào)數(shù)的0DDH)??梢姡醚a(bǔ)碼表示時(shí),最高位為0時(shí),表示該數(shù)為正數(shù),數(shù)值部分就是真值;而最高位為1時(shí),為負(fù)數(shù),數(shù)值部分并不是它的真值,必須再求補(bǔ)后,才得到該數(shù)的絕對(duì)值,如上例中的-23H的補(bǔ)碼為11011101,??按位取反后為00100010,加1后為00100011,即23H。
對(duì)于8位二進(jìn)制數(shù)來說,補(bǔ)碼表示的范圍是-128~+127;對(duì)于16位二進(jìn)制數(shù)來說,補(bǔ)碼表示的范圍是-32768~+32767。例如,求16位二進(jìn)制數(shù)中-23H的補(bǔ)碼過程如下:對(duì)應(yīng)正數(shù)23H的原碼為0000000000100011,按位取反后為1111111111011100;加1后為1111111111011101(即16位二進(jìn)制數(shù)-23H的補(bǔ)碼,相當(dāng)于無符號(hào)數(shù)的0FFDDH)。可見,對(duì)于同一個(gè)數(shù),作為8位二進(jìn)制數(shù)的補(bǔ)碼和作為16位二進(jìn)制數(shù)的補(bǔ)碼不同,這一點(diǎn)要特別留意。1.2計(jì)算機(jī)的基本知識(shí)為了理解計(jì)算機(jī)的硬件組成、工作原理及過程,我們先來看用算盤計(jì)算如下代數(shù)式的過程:12
34+56
7-8=首先要有算盤作為計(jì)算工具,在計(jì)算機(jī)里用“運(yùn)算器”(簡(jiǎn)稱ALU,即算術(shù)邏輯運(yùn)算單元)作為計(jì)算工具,由它承擔(dān)算術(shù)運(yùn)算和邏輯運(yùn)算。因?yàn)樵谟?jì)算機(jī)里,除了需要對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除四則運(yùn)算外,還需要進(jìn)行邏輯與、或、非、異或等邏輯運(yùn)算。其次需要紙和筆記錄算式、計(jì)算步驟、中間結(jié)果及最終結(jié)果。在計(jì)算機(jī)中,起到紙和筆作用的器件是存儲(chǔ)器和寄存器(寄存器在CPU即中央處理器內(nèi),特點(diǎn)是存取速度快,但數(shù)量少,用于存放中間結(jié)果;而存儲(chǔ)器由成千上萬個(gè)存儲(chǔ)單元組成,容量大,與寄存器相比,存取速度慢一些,常用于存放數(shù)據(jù)、運(yùn)算步驟,即指令)。在計(jì)算上述算式時(shí),先計(jì)算12
34,并把中間結(jié)果記錄下來;然后再計(jì)算56
7,再記錄中間結(jié)果;把上述兩步中間結(jié)果相加,并記錄下來;再減8。以上計(jì)算步驟由人腦控制,如果改用計(jì)算機(jī)進(jìn)行,可用計(jì)算機(jī)指令寫出如下的計(jì)算步驟:MOVB,#34 ;將乘數(shù)34傳送到CPU內(nèi)寄存器BMOVA,#12 ;將被乘數(shù)12傳送到CPU內(nèi)寄存器AMULAB ;計(jì)算12×34,結(jié)果的高8位存放在寄存器B中,低8位存 放在寄存器A中MOVR2,AMOVR3,B ;將中間結(jié)果暫時(shí)保存到寄存器R2、R3中MOVB,#7 ;將除數(shù)7傳送到CPU內(nèi)寄存器BMOVA,#56 ;將被除數(shù)56傳送到CPU內(nèi)寄存器ADIVAB ;計(jì)算56÷8,商存放在寄存器A中,余數(shù)存放在寄存器 B中ADDA,R2 ;低8位相加MOVR2,A ;把結(jié)果暫存到R2中MOVA,R3 ;把高8位傳送到A中ADDCA,#00 ;低8位相加時(shí)可能產(chǎn)生進(jìn)位,用ADDC指令將A與00相 加,即可將低8位;相加產(chǎn)生的進(jìn)位加到高8位中MOVR3,A ;把結(jié)果暫存到R3中MOVA,R2 ;把低8位傳送到A中CLRC ;清進(jìn)位標(biāo)志SUBBA,#08 ;低8位減8MOVR2,A ;把結(jié)果傳送到R2中MOVA,R3 ;把高8位傳送到A中SUBBA,#00 ;12×34+56÷7獲得的中間結(jié)果減8時(shí),低8位可 能產(chǎn)生借位,因此需要用 ;?SUBB指令將高8位與00相減
MOVR3,A ;把結(jié)果傳送到R3中。這樣12
34+56
7-8的最后 結(jié)果就保存在R3、R2中圖1-1計(jì)算機(jī)基本結(jié)構(gòu)1.總線概念在計(jì)算機(jī)系統(tǒng)中,常包含以下幾種總線:(1)地址總線(AddressBus,簡(jiǎn)稱AB)為單向,用于傳送地址信息,如圖1-1中運(yùn)算器與存儲(chǔ)器之間的地址線,地址線的數(shù)目決定了可以尋址的存儲(chǔ)空間。一根地址線有兩種狀態(tài),即可以區(qū)分兩個(gè)不同的存儲(chǔ)單元,或者說可以尋址兩個(gè)存儲(chǔ)單元;兩根地址線有四種狀態(tài),可以尋址四個(gè)存儲(chǔ)單元;……;8位微處理器通常有16根地址線,可以尋址216種狀態(tài),即64K個(gè)存儲(chǔ)單元。一般存儲(chǔ)單元的大小為一個(gè)字節(jié),因此8位微處理器的尋址范圍為64KB。(2)數(shù)據(jù)總線(DataBus,簡(jiǎn)稱DB)一般為雙向,用于CPU與存儲(chǔ)器、CPU與外設(shè),或外設(shè)與外設(shè)之間的傳送數(shù)據(jù)(包括實(shí)際意義的數(shù)據(jù)和指令碼)信息。在計(jì)算機(jī)中,為了提高處理速度,總是一次處理由多位二進(jìn)制數(shù)組成的信息,即在運(yùn)算器中,數(shù)據(jù)線的數(shù)目應(yīng)與待處理的數(shù)據(jù)位數(shù)相同。因此,運(yùn)算器數(shù)據(jù)線的數(shù)目往往不止一條,一般為4條、8條或16條。運(yùn)算器內(nèi)數(shù)據(jù)線的多少稱為微處理器的“字長”。字長是衡量微處理器功能、運(yùn)算速度以及精度的重要指標(biāo)之一,也是劃分微處理器檔次的重要依據(jù)。根據(jù)字長,可以將微處理器分為1位機(jī)、4位機(jī)、8位機(jī)、16位機(jī)、32位機(jī)、64位機(jī)等。1位機(jī)的運(yùn)算器只有一根數(shù)據(jù)線,每次只能處理一位二進(jìn)制數(shù),工業(yè)上常用它取代繼電器,用于控制線路的通和斷、設(shè)備的開和關(guān);4位機(jī)有四根數(shù)據(jù)線,常用于家用電器,如電視機(jī)、空調(diào)機(jī)、洗衣機(jī)等的控制電路中。8位機(jī)功能強(qiáng)大,不僅可用于工業(yè)控制、家用電器,也可以作為通用微機(jī)系統(tǒng)的中央處理器。(3)控制總線(ControlBus,簡(jiǎn)稱CB),是計(jì)算機(jī)系統(tǒng)中所有控制信號(hào)線的總稱,在控制總線中傳送的信息是控制信息。2.時(shí)鐘周期、機(jī)器周期及指令周期(1)時(shí)鐘周期:計(jì)算機(jī)在時(shí)鐘信號(hào)的作用下以節(jié)拍方式工作,因此必須有一個(gè)時(shí)鐘生發(fā)器電路。輸入微處理器的時(shí)鐘信號(hào)的周期稱為時(shí)鐘周期。(2)機(jī)器周期:機(jī)器完成一個(gè)動(dòng)作所需的時(shí)間稱為機(jī)器周期,一般由一個(gè)或一個(gè)以上的時(shí)鐘周期組成,例如在MCS-51系列單片機(jī)中,一個(gè)機(jī)器周期由12個(gè)時(shí)鐘周期組成。(3)指令周期:執(zhí)行一條指令(如“MOVA,#34H”,該指令的含義是將立即數(shù)34H傳送到微處理器內(nèi)的累加器A中)所需時(shí)間稱為指令周期,它由一個(gè)到數(shù)個(gè)機(jī)器周期組成。指令周期的長短取決于指令的類型,即指令將要進(jìn)行的操作步驟及復(fù)雜程度:簡(jiǎn)單指令,如INCA(累加器A的內(nèi)容加1)可能只需要一個(gè)機(jī)器周期,而復(fù)雜指令,如MULAB(累加器A乘以寄存器B,并將結(jié)果放在寄存器B和累加器A中)將需要多個(gè)機(jī)器周期。1.2.1計(jì)算機(jī)的工作過程及內(nèi)部結(jié)構(gòu)1.CPU的內(nèi)部結(jié)構(gòu)圖1-2CPU的內(nèi)部結(jié)構(gòu)簡(jiǎn)圖(1)程序計(jì)數(shù)器PC是CPU內(nèi)部的寄存器,用于記錄將要執(zhí)行的指令代碼所在存儲(chǔ)單元的地址編碼。一般來說,PC長度與CPU地址線引腳數(shù)目一致,例如8位微機(jī)的CPU一般具有16根地址線(A15~A0),PC的長度也是16位。復(fù)位后,PC具有確定值,例如在MCS-51系列單片機(jī)中,復(fù)位后,PC=0000H,即復(fù)位后將從程序存儲(chǔ)器的0000H單元讀取第一條指令碼。由于復(fù)位后,PC的值就是第一條指令代碼存放的單元,因此設(shè)計(jì)程序時(shí),必須了解復(fù)位后PC的值是什么,以便確定第一條指令碼從存儲(chǔ)器哪一存儲(chǔ)單元開始存放。PC具有自動(dòng)加1的功能,即從存儲(chǔ)器中讀出一個(gè)字節(jié)的指令碼后,PC會(huì)自動(dòng)加1(即指向下一存儲(chǔ)單元)。(2)地址寄存器AR(AddressRegister,16位)用于存放將要尋址的外部存儲(chǔ)器單元的地址信息,指令碼所在存儲(chǔ)單元的地址編碼,由程序計(jì)數(shù)器PC產(chǎn)生;而指令中操作數(shù)所在存儲(chǔ)單元的地址碼,由指令的操作數(shù)給定。地址寄存器AR通過地址總線AB與外部存儲(chǔ)器相連。(3)指令寄存器IR(InstructionRegister)用于存放取指階段讀出的指令代碼的第一字節(jié),即操作碼,使指令譯碼器ID的輸入保持不變,存放在IR中的指令碼經(jīng)指令譯碼器ID譯碼后,輸入控制器,產(chǎn)生相應(yīng)的控制信號(hào),使CPU完成指令規(guī)定的動(dòng)作。(4)數(shù)據(jù)寄存器DR用于存放寫入外部存儲(chǔ)器或I/O端口的數(shù)據(jù)信息。由此可見,數(shù)據(jù)寄存器DR對(duì)輸出數(shù)據(jù)具有鎖存功能,數(shù)據(jù)寄存器與外部數(shù)據(jù)總線DB直接相連。(5)算術(shù)邏輯運(yùn)算單元ALU主要用于算術(shù)(加、減、乘、除)、邏輯(與、或、非以及異或)運(yùn)算。由于ALU內(nèi)部沒有寄存器,參加運(yùn)算的操作數(shù)必須放在累加器A中,同時(shí)也用于存放運(yùn)算結(jié)果。例如,執(zhí)行:
ADDA,B;A←A+B指令時(shí),累加器A中的內(nèi)容通過輸入口In_1輸入ALU,寄存器B通過內(nèi)部數(shù)據(jù)總線經(jīng)輸入口In_2輸入ALU,A+B的結(jié)果通過ALU的輸出口Out及內(nèi)部數(shù)據(jù)總線送回累加器A。(6)程序狀態(tài)字寄存器PSW用于記錄運(yùn)算過程中的狀態(tài),如是否溢出、進(jìn)位等。例如,累加器A的內(nèi)容83H,執(zhí)行如下指令后,將產(chǎn)生進(jìn)位,因?yàn)楹偷慕Y(jié)果為10DH,而累加器A只有8位,只能存放低8位,即0DH,無法存放結(jié)果中的最高位b8。為此,在CPU內(nèi)設(shè)置一個(gè)進(jìn)位標(biāo)志C,當(dāng)執(zhí)行加法運(yùn)算出現(xiàn)進(jìn)位時(shí),進(jìn)位標(biāo)志C為1。
ADDA,#8AH ;累加器A與立即數(shù)8AH相加,并把 結(jié)果存在A中2.存儲(chǔ)器存儲(chǔ)器是計(jì)算機(jī)系統(tǒng)中必不可少的存儲(chǔ)設(shè)備,主要用于存放程序(指令)和數(shù)據(jù)。盡管寄存器和存儲(chǔ)器均用于存儲(chǔ)信息,但CPU內(nèi)的寄存器數(shù)量少,存取速度快,它主要用于臨時(shí)存放參加運(yùn)算的操作數(shù)和中間結(jié)果;而存儲(chǔ)器一般在CPU外(但單片機(jī)CPU除外,其內(nèi)部一般均含有一定容量的存儲(chǔ)器)單獨(dú)封裝。在存儲(chǔ)器芯片內(nèi),存儲(chǔ)單元數(shù)目多,從幾千字節(jié)到數(shù)百兆字節(jié),能存放大量的信息,但存取速度比CPU內(nèi)部的寄存器要慢得多。目前,存儲(chǔ)器的存取速度已成為制約計(jì)算機(jī)運(yùn)行速度的關(guān)鍵因素之一。存儲(chǔ)器的種類很多,根據(jù)存儲(chǔ)器能否隨機(jī)讀寫,將存儲(chǔ)器分為兩大類:只讀存儲(chǔ)器(ReadOnlyMemory,簡(jiǎn)稱ROM)和隨機(jī)讀寫存儲(chǔ)器(RandomAccessMemory,簡(jiǎn)稱RAM)。根據(jù)存儲(chǔ)器存儲(chǔ)單元結(jié)構(gòu)和信息保存方式的不同,又可以將隨機(jī)讀寫存儲(chǔ)器分為靜態(tài)RAM(采用雙極型晶體管結(jié)構(gòu),存取速度快,無需刷新,但構(gòu)成一個(gè)存儲(chǔ)單元所需的晶體管數(shù)目較多,集成度低,價(jià)格略高)和動(dòng)態(tài)RAM(采用CMOS工藝,依靠MOS管柵極與襯底之間的寄生電容保存信息,一般均為單管結(jié)構(gòu),集成度高,但寄生電容容量小,漏電大,信息保存時(shí)間短,僅為毫秒級(jí),需要刷新電路,致使動(dòng)態(tài)RAM存儲(chǔ)器系統(tǒng)電路復(fù)雜化,不適用于僅需要少量存儲(chǔ)容量的單片機(jī)系統(tǒng))。在單片機(jī)應(yīng)用系統(tǒng)中,所需的存儲(chǔ)器容量不大,外圍電路應(yīng)盡可能簡(jiǎn)單,因此幾乎不使用動(dòng)態(tài)RAM,常使用PROM(可編程的只讀存儲(chǔ)器)、EPROM(紫外光可擦寫的只讀存儲(chǔ)器)、OTPROM(一次性編程的只讀存儲(chǔ)器,內(nèi)部結(jié)構(gòu)、工作原理與EPROM相似,是一種沒有擦除窗口的EPROM)、EEPROM(也稱為E2PROM,是一種電可擦寫的只讀存儲(chǔ)器,其結(jié)構(gòu)與EPROM類似,但絕緣柵很薄,高速電子可穿越絕緣層,中和浮柵上的正電荷,起到擦除目的,也就是說可通過高電壓擦除)、FlashROM(電可擦寫只讀存儲(chǔ)器,寫入速度比EEPROM快,因此也稱為閃爍存儲(chǔ)器)等只讀存儲(chǔ)器作為程序存儲(chǔ)器,使用SRAM(隨機(jī)讀寫的靜態(tài)存儲(chǔ)器)、E2PROM作為數(shù)據(jù)存儲(chǔ)器。盡管這些存儲(chǔ)器工作原理不同,但內(nèi)部結(jié)構(gòu)基本相同。1)內(nèi)部結(jié)構(gòu)圖1-3存儲(chǔ)器芯片及內(nèi)部結(jié)構(gòu)存儲(chǔ)單元地址編碼與存儲(chǔ)單元中的內(nèi)容是兩個(gè)不同的概念,存儲(chǔ)單元地址編碼的長度由存儲(chǔ)器芯片所包含的存儲(chǔ)單元的個(gè)數(shù)決定。例如,6264存儲(chǔ)器芯片含有8K個(gè)(13根地址線)存儲(chǔ)單元,地址編碼為0000000000000B~1111111111111B(用十六進(jìn)制表示時(shí),地址編碼為0000H~1FFFH),每個(gè)存儲(chǔ)單元長度為8位。因此,每個(gè)存儲(chǔ)單元的內(nèi)容可以是00H~FFH之間的二進(jìn)制數(shù)。又如,圖1-3中的62256存儲(chǔ)器含有32K個(gè)(15根地址線)存儲(chǔ)單元,地址編碼為000000000000000B~111111111111111B(用十六進(jìn)制表示時(shí),地址編碼為0000H~7FFFH),每個(gè)存儲(chǔ)單元的長度也是為8位,圖中0000H單元內(nèi)容為12H,0001H單元內(nèi)容為23H,而0002H單元內(nèi)容為0A5H。PIC16C56單片機(jī)程序存儲(chǔ)器容量為1K×12bit,因此存儲(chǔ)單元地址編碼為0000000000B~1111111111B(用十六進(jìn)制表示時(shí),地址編碼為000H~3FFH),每個(gè)存儲(chǔ)單元長度為12位。因此,每個(gè)存儲(chǔ)單元的內(nèi)容可以是000H~FFFH之間的二進(jìn)制數(shù)。2)存儲(chǔ)器工作狀態(tài)表1-1存儲(chǔ)器工作狀態(tài)
工作模式控制信號(hào)輸出片選信號(hào)輸出允許寫允許信號(hào)讀LLH數(shù)據(jù)輸出輸出禁止LHH高阻態(tài)待用(功率下降)H××高阻態(tài)寫入LHL數(shù)據(jù)輸入3)存儲(chǔ)器讀操作圖1-4CPU讀取存儲(chǔ)器操作過程示意圖(1)?CPU地址寄存器AR給出將要讀取的存儲(chǔ)單元地址信息,即0000H。(2)存儲(chǔ)單元地址信息通過地址總線A15~A0輸入到存儲(chǔ)器芯片地址線上(CPU地址總線與存儲(chǔ)器地址總線相連)。(3)存儲(chǔ)器芯片內(nèi)的地址譯碼器對(duì)存儲(chǔ)器地址信號(hào)A14~A0進(jìn)行譯碼,并選中0000H單元。(4)CPU給出讀控制信號(hào)(接存儲(chǔ)器的端),將選中的0000H存儲(chǔ)單元內(nèi)容輸出到數(shù)據(jù)總線D7~D0(存儲(chǔ)器數(shù)據(jù)總線與CPU數(shù)據(jù)總線相連),結(jié)果0000H單元的內(nèi)容12H就通過存儲(chǔ)器數(shù)據(jù)總線輸入到CPU內(nèi)部的數(shù)據(jù)寄存器DR中,然后送到CPU內(nèi)部某一特定寄存器或暫存器內(nèi),這樣便完成了存儲(chǔ)器的讀操作過程。4)存儲(chǔ)器寫操作(1)CPU地址寄存器AR給出待寫入的存儲(chǔ)單元的地址編碼,如0003H,通過地址總線A15~A0輸入到存儲(chǔ)器芯片地址線A14~A0上。(2)存儲(chǔ)器芯片內(nèi)的地址譯碼器對(duì)存儲(chǔ)器地址信號(hào)線A14~A0進(jìn)行譯碼,并選中0003H單元。(3)在寫操作過程中,寫入的數(shù)據(jù)55H存放在CPU內(nèi)部的數(shù)據(jù)寄存器DR中,當(dāng)CPU寫控制信號(hào)有效時(shí)(與存儲(chǔ)器寫允許信號(hào)相連),DR寄存器中的內(nèi)容55H就通過數(shù)據(jù)總線D7~D0傳輸?shù)酱鎯?chǔ)器中被選中的0003H存儲(chǔ)單元,結(jié)果0003H單元的內(nèi)容即刻變?yōu)?5H,完成了存儲(chǔ)器的寫操作過程。1.2.2指令及指令系統(tǒng)1.指令及指令系統(tǒng)
將CPU所執(zhí)行的各種操作,如從指定的存儲(chǔ)器單元中取數(shù)據(jù)、將CPU內(nèi)特定寄存器內(nèi)容寫入存儲(chǔ)器某一指定的存儲(chǔ)單元中以及算術(shù)或邏輯運(yùn)算等操作,用命令的形式記錄下來,就稱為指令(Instruction),一條指令與計(jì)算機(jī)的一種基本操作相對(duì)應(yīng)。當(dāng)然,指令也只能用二進(jìn)制代碼表示,例如在MCS-51系列單片機(jī)中,累加器A中的內(nèi)容除以寄存器B中的內(nèi)容(即A÷B)的操作用84H作為指令代碼。為使計(jì)算機(jī)能夠準(zhǔn)確理解和執(zhí)行指令所規(guī)定的動(dòng)作,不同操作對(duì)應(yīng)的指令要用不同的指令代碼表示,或者說,不同的指令代碼表示不同的操作。例如,在MCS-51系列單片機(jī)中,“E4H”表示將累加器Acc清零;“F4H”表示將累加器Acc內(nèi)容按位取反;又如,用“74HxxH”表示將立即數(shù)“xxH”傳送到累加器Acc中(這條指令占用兩個(gè)字節(jié),其中“74H”表示將立即數(shù)傳送到累加器Acc中,是操作碼;而xxH就是要傳送的立即數(shù))。在計(jì)算機(jī)中,所有指令的集合稱為指令系統(tǒng)。一條指令通常由操作碼和操作數(shù)兩部分組成:操作碼(Operationcode)決定了指令要執(zhí)行的動(dòng)作,一般用一個(gè)字節(jié)表示,除非指令數(shù)目很多,才需要用兩個(gè)字節(jié)表示(用一個(gè)字節(jié)表示指令操作碼時(shí),最多可以表示256種操作,即256條指令,一般已足夠,計(jì)算機(jī)系統(tǒng)所包含的指令數(shù)目并不很多,尤其是單片機(jī)系統(tǒng),如PIC16系列單片機(jī)系統(tǒng)僅含有幾十條指令);而操作數(shù)(Operand)指定了參加操作的數(shù)據(jù)或數(shù)據(jù)所在的存儲(chǔ)單元的地址。不同計(jì)算機(jī)指令系統(tǒng)所包含的指令種類、數(shù)目、指令代碼對(duì)應(yīng)的操作由CPU設(shè)計(jì)人員指定。因此,不同種類的CPU具有不同的指令系統(tǒng)。一般來說,不同系列CPU的指令系統(tǒng)不一定相同,除非它們彼此兼容。根據(jù)計(jì)算機(jī)指令系統(tǒng)的特征,可以將計(jì)算機(jī)指令系統(tǒng)分為兩大類,即復(fù)雜指令系統(tǒng)(ComplexInstructionSetComputer,簡(jiǎn)稱CISC指令結(jié)構(gòu))和精簡(jiǎn)指令系統(tǒng)(ReducedInstructionSetComputer,簡(jiǎn)稱RISC指令結(jié)構(gòu))。采用復(fù)雜指令結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng),如MCS-51系列單片機(jī)具有如下特點(diǎn):(1)指令機(jī)器碼長短不一,簡(jiǎn)單指令代碼可能只有一個(gè)字節(jié),而復(fù)雜指令可能需要兩個(gè)或兩個(gè)以上字節(jié)描述。如空操作指令,僅有操作碼(如00H),沒有操作數(shù),指令代碼僅占用一個(gè)字節(jié);也有些指令使用了約定操作數(shù),例如,操作碼E4H規(guī)定的動(dòng)作是將累加器Acc清零,操作對(duì)象明確,無須再指定,這類指令代碼也只用一個(gè)字節(jié)表示,或者說,這類指令的操作數(shù)隱含在操作碼字節(jié)中;而有些指令,如將立即數(shù)送累加器Acc,就必須給出操作數(shù),這樣的指令需要用兩個(gè)字節(jié)表示,第一個(gè)字節(jié)表示指令的操作碼,第二個(gè)字節(jié)表示操作數(shù),例如在MCS-51中,這一指令表示為74H(操作碼)、xxH(操作數(shù));有些指令含有兩個(gè)操作數(shù),如在MCS-51系列單片機(jī)中,CPU內(nèi)存儲(chǔ)器不同單元之間的數(shù)據(jù)傳送指令代碼為85H(操作碼)、xxH(存儲(chǔ)單元地址)、yyH(另一存儲(chǔ)單元地址),可見,這樣的指令需要用三個(gè)字節(jié)表示。(2)可選擇兩條或兩條以上指令完成同一操作,程序設(shè)計(jì)靈活性大,但缺點(diǎn)是指令數(shù)目較多(這類CPU一般具有數(shù)十條~數(shù)百條指令)。例如,在MCS-51系統(tǒng)單片機(jī)中,將累加器Acc內(nèi)容清零,可以使用如下指令之一完成:
CLRA ;直接對(duì)累加器A清零
MOVA,#00H ;將立即數(shù)00H寫入累加器A中
ANLA,#00H ;用立即數(shù)00H與累加器A內(nèi)容相與,使累 加器A內(nèi)容變?yōu)?2.程序程序(Program)就是指令的有機(jī)組合,是完成特定工作所用到的指令(這些指令當(dāng)然是某個(gè)特定計(jì)算機(jī)系統(tǒng)的指令)的總稱。一段程序通常由多條指令組成,程序中所包含的指令數(shù)目及種類由程序功能決定。用機(jī)器語言指令碼編寫的程序,就稱為機(jī)器語言程序,如:74AAF875A8823.匯編語言及匯編語言程序由于機(jī)器語言指令中的操作碼和操作數(shù)均用二進(jìn)制數(shù)表示和書寫,沒有明顯的特征,一般人很難理解和記憶,使程序編寫工作成了一件非常困難和乏味的事。為此,人們想出了一個(gè)辦法:將每條指令操作碼所要完成的動(dòng)作用特定符號(hào)表示,即用指令功能的英文縮寫替代指令操作碼,形成了指令操作碼的助記符;并將機(jī)器語言指令中的操作數(shù)也用CPU內(nèi)寄存器名、存儲(chǔ)單元地址或I/O端口號(hào)代替,這樣便形成了操作數(shù)助記符,于是就獲得了“匯編語言指令”。例如,將累加器A內(nèi)容清零,記為“CLRA”;用“MOV”作為數(shù)據(jù)傳送指令的助記符,于是將立即數(shù)23H傳送到累加器A中的指令,就可以用“MOVA,#23H”(#是立即數(shù)標(biāo)志)表示;將存儲(chǔ)器23H單元中的內(nèi)容傳送到累加器A中,可用“MOVA,23H”表示。由于匯編語言指令與機(jī)器語言指令一一對(duì)應(yīng),而機(jī)器語言指令中每一指令代碼的含義由CPU決定,因此不同計(jì)算機(jī)系統(tǒng)匯編語言指令格式、助記符等不一定相同。例如,在IntelMCS-51系列單片機(jī)系統(tǒng)中,將立即數(shù)55H送累加器A的匯編語言指令記作:
MOVA,#55H
但在MotorolaM6805系列單片機(jī)中,卻表示為
LDAA$55
在PIC系列單片機(jī)中,則用
MOVLW0x554.偽指令在匯編語言源程序中,除了包含可以轉(zhuǎn)化為特定計(jì)算機(jī)系統(tǒng)的機(jī)器語言指令所對(duì)應(yīng)的匯編語言指令外,還可能包含一些偽指令,如“ORG2000H”、“END”等?!皞巍闭?,假也,盡管它不是計(jì)算機(jī)系統(tǒng)對(duì)應(yīng)的指令,匯編時(shí)也不產(chǎn)生機(jī)器碼,但匯編語言程序中的偽指令并非可有可無。偽指令的作用是指導(dǎo)源程序的匯編過程,例如“ORG2000H”偽指令,指示匯編程序?qū)⒃搨沃噶詈蟮膮R編語言指令對(duì)應(yīng)的機(jī)器碼從2000H單元開始存放。由于偽指令不是CPU指令,因而匯編時(shí)不產(chǎn)生機(jī)器碼。顯然,偽指令與CPU類型無關(guān),僅與匯編程序(也稱為匯編器)有關(guān),引用偽指令時(shí),只需考慮用于將“匯編語言源程序”轉(zhuǎn)化為對(duì)應(yīng)CPU機(jī)器語言的“匯編程序”是否支持所用的偽指令。下面是MCS-51匯編程序支持的常見的偽指令:(1)?ORGnnnn:其中nnnn是16位二進(jìn)制數(shù),該指令的含義是隨后的匯編語言指令機(jī)器碼從nnnn單元開始存放。(2)?DBn1,n2,n3,…:字節(jié)定義偽指令,將隨后的一串8位二進(jìn)制數(shù)(字節(jié),彼此由逗號(hào)隔開)連續(xù)存放在存儲(chǔ)器中,用于定義字節(jié)常數(shù)表。(3)?DWnn1,nn2,nn3,…:字定義偽指令,將隨后的一串16位二進(jìn)制數(shù)(兩個(gè)字節(jié),彼此由逗號(hào)隔開)連續(xù)存放在存儲(chǔ)器中,用于定義字常數(shù)表。在Intel系列CPU中,字、雙字(由四個(gè)字節(jié)組成)等的存放規(guī)則是低字節(jié)存放在低地址中,高字節(jié)存放在高地址中,例如:
ORG2000HDW0F012H,5678H
則這兩個(gè)16位二進(jìn)制數(shù)的存放規(guī)則是2000H單元內(nèi)容為12H(低位字節(jié)),2001H單元內(nèi)容為F0H(高位字節(jié));2002H單元內(nèi)容為78H(低位字節(jié)),2003H單元內(nèi)容為56H(高位字節(jié))。(4)?DSn:保留n個(gè)存儲(chǔ)單元偽指令。(5)“符號(hào)名EQU數(shù)或匯編符號(hào)”:等值定義偽指令,將某一常數(shù)或匯編符號(hào)用另一字符串代替,其中的匯編符號(hào)可以是寄存器名,存儲(chǔ)單元地址,甚至是指令操作碼助記符。(6)“符號(hào)名Bitbit”:位定義偽指令,將某一位存儲(chǔ)單元地址用字符串代替。(7)“符號(hào)名DATAnn”:地址定義偽指令,將某一存儲(chǔ)單元地址用字符串代替。例如“TIMELDATA30H”偽指令的含義是存儲(chǔ)器30H單元用“TIMEL”地址變量表示。(8)?END:匯編結(jié)束偽指令,該指令將告訴匯編程序下面沒有需要匯編的指令。5.匯編語言指令的一般格式
Intel系列CPU匯編語言指令格式為:[標(biāo)號(hào):]指令操作碼助記符[第一操作數(shù)][,第二操作數(shù)][,第三操作數(shù)][;注釋]指令操作碼助記符是指令功能的英文縮寫,必不可少。例如,用“MOV”作為數(shù)據(jù)傳送指令操作碼助記符。指令操作碼助記符后是操作數(shù),不同指令包含的操作數(shù)個(gè)數(shù)不同:有些指令如空操作指令“NOP”就沒有操作數(shù);有些指令僅含有一個(gè)操作數(shù),操作數(shù)與操作碼之間用“空格”隔開,如累加器A內(nèi)容加1指令,表示為“INCA”(其中INC為指令的助記符,是英文“Increase”的縮寫,A是操作數(shù),即累加器Acc的簡(jiǎn)稱);有些指令含有兩個(gè)操作數(shù),例如將立即數(shù)55H傳送到累加器A中的指令表示為“MOVA,#55H”(其中MOV是指令操作碼助記符,第一操作數(shù)為累加器A,第二操作數(shù)為“55H”,#表示立即數(shù));有些指令含有三個(gè)操作數(shù),如“當(dāng)累加器A不等于某一個(gè)數(shù)時(shí),轉(zhuǎn)移”指令,用“CJNEA,#55H,LOOP”(其中CJNE是指令操作碼助記符,LOOP是標(biāo)號(hào),即相對(duì)地址)。在多操作數(shù)指令中,各操作數(shù)之間用“,”(逗號(hào))隔開?!埃弧?分號(hào))后的內(nèi)容作為注釋信息,在指令后,加注釋信息是為了提高指令或程序的可讀性,以方便閱讀、理解該指令或其下程序段的功能。匯編時(shí),匯編程序不理睬分號(hào)后的注釋內(nèi)容。換句話說,加注釋信息不影響程序的匯編和執(zhí)行。盡管注釋內(nèi)容可有可無,但為了提高程序的可讀性,方便程序的維護(hù),有必要在指令后加適當(dāng)?shù)淖⑨屝畔?。作為一名有?jīng)驗(yàn)的程序員,往往用大部分時(shí)間寫注釋信息。由于在匯編時(shí),匯編程序不理睬分號(hào)后的內(nèi)容,因此注釋信息可以加在指令后,也可以單獨(dú)占據(jù)一行。標(biāo)號(hào)是符號(hào)化了的地址碼,在分支程序中經(jīng)常用到。6.指令的執(zhí)行過程程序中的指令機(jī)器碼順序存放在存儲(chǔ)器中,例如:將存儲(chǔ)器0020H單元與0021H單元中的內(nèi)容相加,結(jié)果存放在002FH單元中,可以用如下指令實(shí)現(xiàn):
MOVA,0020H ;將存儲(chǔ)器0020H單元中的內(nèi)容傳送到累加器中。該指令對(duì)應(yīng)的機(jī)器碼為E52000。ADDA,0021H ;?將存儲(chǔ)器0021H單元中的內(nèi)容與累加器內(nèi)容相加,和存放在累加器A中。該指令;?對(duì)應(yīng)的機(jī)器碼為252100。
MOV002FH,A ;?將結(jié)果傳送到存儲(chǔ)器002FH單元中。該指令對(duì)應(yīng)的機(jī)器碼為F52F00。圖1-5指令執(zhí)行過程示意圖1.3尋址方式指令中的操作數(shù)只能是下列內(nèi)容之一:(1)?CPU內(nèi)某一寄存器名,如累加器A、通用寄存器B、堆棧指針SP等。CPU內(nèi)含有什么寄存器由CPU類型決定。例如,在MCS-51系列單片機(jī)CPU內(nèi),就含有累加器A、通用寄存器B、堆棧指針SP、程序狀態(tài)字寄存器PSW以及工作寄存器組R7~R0。而在PIC16C5X系列CPU內(nèi),含有工作寄存器W(其作用類似于其他CPU的累加器A)、狀態(tài)寄存器STATUS(其功能類似于其他CPU的程序狀態(tài)字寄存器PSW)、特殊功能寄存器FSR、端口控制寄存器TRISA、TRISB、TRISC等。(2)存儲(chǔ)單元。存儲(chǔ)單元地址范圍由CPU可尋址范圍以及實(shí)際安裝的存儲(chǔ)器容量、連接方式?jīng)Q定。(3)?I/O端口號(hào)。在通用微機(jī)系統(tǒng)中,I/O地址空間與存儲(chǔ)器地址空間相互獨(dú)立;不過在單片機(jī)系統(tǒng)中,I/O端口地址空間往往與外存儲(chǔ)器地址空間連在一起,不再區(qū)分。(4)常數(shù)。常數(shù)類型及范圍也與CPU類型有關(guān)。在計(jì)算機(jī)中,常使用下列七種尋址方式之一確定操作數(shù)所在存儲(chǔ)單元的地址。1.立即尋址方式當(dāng)指令第二操作數(shù)(源操作數(shù))為8位或16位常數(shù)時(shí),就稱為立即尋址方式,其中的常數(shù)稱為立即數(shù),例如:
MOVA,#23H ;其中第二操作數(shù)“23H”就是立即數(shù),含義 是將立即數(shù)23H傳送到累加器 ;A(目的操作數(shù))中又如:
MOVDPTR,#2000H ;將立即數(shù)2000H傳送到數(shù) 據(jù)指針DPTR(16位寄存器)寄存器中圖1-6立即尋址示意圖此外,立即數(shù)長度必須小于或等于目的操作數(shù)的長度。在上例中,如果累加器A字長為8位,則不能將16位二進(jìn)制數(shù)傳送到累加器A中,即如下指令在匯編時(shí)將出錯(cuò):
MOVA,#1234H ;由于累加器A長度只有8位, 無法裝入16位二進(jìn)制數(shù)1234H
但立即數(shù)長度可以小于目的操作數(shù)長度,例如:
MOVDPTR,#0002H ;DPTR是MCS-51CPU內(nèi)一 個(gè)16位寄存器
MOVDPTR,#02HMOVDPTR,#2H
圖1-7直接尋址示意圖2.直接尋址方式
在直接尋址方式中,操作數(shù)是某一存儲(chǔ)單元的地址編碼,例如:MOVA,0023H;直接使用存儲(chǔ)單元地址 ;作為源操作數(shù)直接尋址方式可以用在源操作數(shù)中,也可以用在目的操作數(shù)中,例如:
MOV0023H,A ;指令含義是將累加器A中內(nèi)容傳送 到0023H存儲(chǔ)單元中,在這條指令 中, ;0023H存儲(chǔ)單元是目的操作數(shù)在直接尋址方式中,存儲(chǔ)單元地址一般為16位,但在MCS-51系列單片機(jī)中,直接尋址方式僅適用于內(nèi)部RAM前128(00H~7FH)字節(jié)存儲(chǔ)單元、片內(nèi)位存儲(chǔ)單元(00H~7FH)、特殊功能寄存器(80H~FFH),因此地址編碼僅為8位,例如:
MOV23H,A3.寄存器尋址方式在寄存器尋址方式中,操作數(shù)是CPU內(nèi)的某一寄存器名,例如:
MOVA,23H ;在這條指令中,目的操作數(shù)是累加器A。
因此,這條指令目的操作數(shù)采用寄 ;存器尋址方式寄存器尋址方式可以用在目的操作數(shù)中,也可以用在源操作數(shù)中,例如:
MOV23H,A ;在這條指令中,累加器A是源操作數(shù)。因 此,這條指令源操作數(shù)采用寄存器 ;尋址方式在MCS-51中,可用于寄存器尋址方式的寄存器有:累加器A、寄存器B(但僅限于乘法指令)、程序狀態(tài)字寄存器PSW、堆棧指針SP、工作組寄存器R7~R0。4.寄存器間接尋址方式將寄存器內(nèi)容作為指令中操作數(shù)所在存儲(chǔ)單元地址編碼的尋址方式,稱為寄存器間接尋址方式,例如:
MOVA,@R0
該指令的含義是將寄存器R0中內(nèi)容對(duì)應(yīng)的內(nèi)部RAM單元內(nèi)容傳送到累加器A中。假設(shè)R0=23H,而內(nèi)部RAM23H單元的內(nèi)容為55H,則指令執(zhí)行后,累加器A的內(nèi)容將為55H。指令中的“@”是間接尋址標(biāo)志,該指令與“MOVA,R0”指令的含義不同,“MOVA,R0”指令源操作數(shù)尋址方式是寄存器尋址,含義是將寄存器R0內(nèi)容傳送到累加器中,“MOVA,R0”指令執(zhí)行后,A的內(nèi)容將是23H。寄存器間接尋址方式可以用在源操作數(shù)中,也可以用在目的操作數(shù)中,例如:
MOV@R0,A
其含義是將累加器A中的內(nèi)容傳送到由R0內(nèi)容指定的存儲(chǔ)單元中。假設(shè)A=34H,R0=23H,則指令執(zhí)行后,23H存儲(chǔ)單元內(nèi)容將為34H。
在寄存器間接尋址方式中,CPU內(nèi)僅有部分寄存器可以用作間接尋址寄存器,至于哪些寄存器可用做間接尋址則由CPU的指令系統(tǒng)決定。例如,在MCS-51系列單片機(jī)中,只能使用寄存器R0、R1以及DPTR作為間接尋址寄存器。5.變址尋址方式變址尋址方式是將某一寄存器作為基地址寄存器,另一寄存器作為變址寄存器,兩者相加后作為操作數(shù)所在存儲(chǔ)單元地址,例如:
MOVCA,@A+DPTR
其含義是數(shù)據(jù)指針寄存器DPTR(16位,作為基址寄存器)加上累加器A(作為變址寄存器)的內(nèi)容獲得存儲(chǔ)器單元地址,并將該單元內(nèi)容傳送到累加器A中。在這條指令中,源操作數(shù)采用了變址尋址方式。6.相對(duì)尋址相對(duì)尋址的含義是以程序計(jì)數(shù)器PC的當(dāng)前值加上指令中給出的相對(duì)偏移量rel作為程序計(jì)數(shù)器PC的值,這一尋址方式用在條件轉(zhuǎn)移指令中,例如:
JZ20H
假設(shè)該指令代碼占兩個(gè)字節(jié),則當(dāng)累加器A為零時(shí),PC←PC+2+rel,即程序發(fā)生了轉(zhuǎn)移;而當(dāng)A≠0時(shí),PC←PC+2,即沒有轉(zhuǎn)移,順序執(zhí)行“JZ20H”指令的下一條指令。該指令代碼和執(zhí)行結(jié)果可用圖1-8描述,假設(shè)該指令代碼存放在2000H(操作碼)、2001H(操作數(shù),即相對(duì)偏移地址)單元中,開始執(zhí)行“JZ20H”指令時(shí),PC=2000H,取出指令操作碼后,PC←PC+1,即PC=2001H,指向操作數(shù)(相對(duì)偏移地址)存儲(chǔ)單元;譯碼后,再取出操作數(shù)時(shí),PC←PC+1,即PC=2002H,指向下一條指令代碼的首地址,因此執(zhí)行了“JZ20H”指令后,PC的當(dāng)前值為2002H。
指令中的相對(duì)偏移量是一個(gè)帶符號(hào)的8位二進(jìn)制數(shù)(用補(bǔ)碼表示),當(dāng)rel為正時(shí),表示向下跳轉(zhuǎn),rel為負(fù)時(shí),向上跳轉(zhuǎn)。圖1-8相對(duì)尋址示意圖7.位尋址方式位尋址方式是單片機(jī)系統(tǒng)特有的一種尋址方式,盡管目前控制系統(tǒng)中多用4位、8位,甚至16位單片機(jī),但有時(shí)只需要完成簡(jiǎn)單的邏輯控制,如電機(jī)的開、關(guān),指示燈的亮、滅,為此8位單片機(jī)系統(tǒng)也具有位尋址功能,例如:
MOVC,23H;指令中的“C”是進(jìn)位標(biāo)志Cy的簡(jiǎn)稱,23H是位尋址空間內(nèi)的位地址操作碼與操作數(shù)不同尋址方式的組合就構(gòu)成了特定CPU的指令系統(tǒng),但在特定CPU指令系統(tǒng)內(nèi),操作碼支持何種類型的尋址方式,由CPU決定。例如在MCS-51指令系統(tǒng)中,PUSH指令(將操作數(shù)壓入堆棧)只支持直接尋址方式。1.4單片機(jī)及其發(fā)展概況1.4.1單片機(jī)及其特點(diǎn)在通用微機(jī)中央處理器基礎(chǔ)上,將輸入/輸出(I/O)接口電路、時(shí)鐘電路以及一定容量的存儲(chǔ)器等部件集成在同一芯片上,再加上必要的外圍器件,如晶體振蕩器,就構(gòu)成了一個(gè)較為完整的計(jì)算機(jī)硬件系統(tǒng)。由于這類計(jì)算機(jī)系統(tǒng)的基本部件均集成在同一芯片內(nèi),因此被稱為單片微控制器(Single-Chip-MicroController,簡(jiǎn)稱單片機(jī))或微控制單元(MicroControllerUnit,簡(jiǎn)稱MCU)。對(duì)于通用微處理器來說,其主要任務(wù)是數(shù)值計(jì)算和信息處理,對(duì)運(yùn)算速度和存儲(chǔ)容量方面的要求是速度越快越好,容量越大越好,因此它沿著高速、大容量方向發(fā)展:字長由8位(如8085處理器)、16位(如8086、80286),迅速向32位(如80486)、64位(如Pentium系列CPU,Pentium系列CPU內(nèi)部數(shù)據(jù)總線為32位,對(duì)外數(shù)據(jù)總線為64位,因而Pentium還不是真正意義上的64位微處理器)過渡,時(shí)鐘信號(hào)的頻率由最初的4.77MHz向33MHz、66MHz、100MHz、200MHz、400MHz、600MHz、1GHz、2GHz,甚至更高頻率過渡。而單片機(jī)主要面向工業(yè)控制,8位字長已足夠(在工業(yè)控制中,一般僅需要控制線路的通、斷,觸點(diǎn)的吸合與釋放,有時(shí)4位單片機(jī)也能勝任),盡管也有16位、32位的單片機(jī)芯片,但這些高檔單片機(jī)芯片主要用于語音、圖像處理系統(tǒng),絕對(duì)數(shù)量不多;時(shí)鐘信號(hào)頻率也不高,一般在數(shù)十兆以內(nèi)。單片機(jī)主要發(fā)展方向是不斷強(qiáng)化控制功能(即將更多的外圍電路單元集成到CPU內(nèi))、低功耗(以便電池供電)、低成本(例如在CPU芯片內(nèi),按用途分別集成不同的外圍電路,形成系列化產(chǎn)品,這樣既能滿足不同應(yīng)用領(lǐng)域的需要,又降低了成本)。單片機(jī)芯片作為控制系統(tǒng)的核心部件,它除了具備通用微機(jī)CPU的數(shù)值計(jì)算功能外,還必須具有靈活、強(qiáng)大的控制功能,以便實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的輸入量、控制系統(tǒng)的輸出量,實(shí)現(xiàn)自動(dòng)控制。由于單片機(jī)主要面向工業(yè)控制,工作環(huán)境比較惡劣,如高溫、強(qiáng)電磁干擾,甚至含有腐蝕性氣體,在太空中工作的單片機(jī)控制系統(tǒng),還必須具有抗輻射能力,因而決定了單片機(jī)CPU與通用微機(jī)CPU具有不同的技術(shù)特征和發(fā)展方向:(1)抗干擾性強(qiáng),工作溫度范圍寬。(2)可靠性高。(3)控制功能往往很強(qiáng),數(shù)值計(jì)算能力較差。(4)指令系統(tǒng)比通用微機(jī)系統(tǒng)簡(jiǎn)單。(5)更新?lián)Q代速度比通用微處理器慢得多,Intel公司1980年推出標(biāo)準(zhǔn)MCS-51內(nèi)核8051(HMOS工藝)、80C51(CHMOS工藝)單片機(jī)芯片后,持續(xù)生產(chǎn)、使用十余年,直到1996年3月才被增強(qiáng)型MCS-51內(nèi)核8XC5X系列芯片取代。由于增強(qiáng)型MCS-51單片機(jī)芯片均采用CHMOS工藝,因此Philips公司將“增強(qiáng)型MCS-51”內(nèi)核稱為“增強(qiáng)型80C51”內(nèi)核。1.4.2單片機(jī)技術(shù)現(xiàn)狀及發(fā)展趨勢(shì)目前單片機(jī)芯片系列、品種、規(guī)格繁多,先后經(jīng)歷4位機(jī)、8位機(jī)、16位機(jī)、新一代8位機(jī)、32位機(jī)等幾個(gè)有代表性的發(fā)展階段。4位機(jī)主要用于家用電器,如電視機(jī)、空調(diào)機(jī)、洗衣機(jī)中,不過隨著8位機(jī)價(jià)格的下降,在家用電器中已開始大量采用8位機(jī),以便在家用電器中采用一些新技術(shù),如模糊控制、變頻調(diào)速等,提高家用電器的智能化、自動(dòng)化程度,并盡可能降低系統(tǒng)的能耗;16位機(jī)具有較強(qiáng)的數(shù)值運(yùn)算能力和較快的反映速度,常用在需要實(shí)時(shí)控制、實(shí)時(shí)處理的系統(tǒng)中,盡管16位單片機(jī)進(jìn)入市場(chǎng)已有十余年,但一直未能取代8位機(jī)成為主流產(chǎn)品,目前已被強(qiáng)化了控制接口功能的新一代8位機(jī)和數(shù)值運(yùn)算能力極強(qiáng)的32位機(jī)所取代;32位機(jī)具有很強(qiáng)的數(shù)值計(jì)算能力,在圖像處理、機(jī)器人控制需求的刺激下,32位機(jī)的銷量也在迅速上升。在今后一段時(shí)期內(nèi),8位、16位和32位單片機(jī)芯片銷量的絕對(duì)值可能會(huì)有不同程度的增長,但在目前,甚至今后相當(dāng)長,如5年、10年時(shí)間內(nèi)8位單片機(jī),尤其是強(qiáng)化了控制接口功能的新一代8位單片機(jī),如80C51、MC68HC11系列依然是單片機(jī)的主流產(chǎn)品。因此,本書也主要介紹8位單片機(jī)原理及系統(tǒng)組成。8位單片機(jī)先后經(jīng)歷了三個(gè)發(fā)展階段,其中:第一代8位單片機(jī)系統(tǒng)(如Intel公司的MCS-48系列)功能較差,它實(shí)際上是8位通用CPU單元電路和基本I/O接口電路、小容量存儲(chǔ)器、中斷控制系統(tǒng)的簡(jiǎn)單組合,沒有串行通訊功能,不帶A/D(模/數(shù))、D/A(數(shù)/模)轉(zhuǎn)換器,中斷控制和管理能力也較弱。因此,它的應(yīng)用范圍受到了很大的限制。第二代8位單片機(jī)的特點(diǎn)是通用性強(qiáng),但個(gè)性還不突出,控制功能也有限,依然不能滿足不同應(yīng)用領(lǐng)域、不同測(cè)控系統(tǒng)的要求。在20世紀(jì)90年代中后期,各大芯片廠商,如Intel、Philips、Motorola、TemicSeconductorTechnology、Microchip等在第二代單片機(jī)CPU內(nèi)核基礎(chǔ)上,除了進(jìn)一步強(qiáng)化原有功能(如在串行口部件中增加幀錯(cuò)誤偵測(cè)和自動(dòng)地址識(shí)別功能)外,針對(duì)不同的應(yīng)用領(lǐng)域,將不同功能、用途的外部接口電路嵌入到第二代單片機(jī)CPU內(nèi),形成了規(guī)格、品種繁多的新一代8位單片機(jī)芯片,如Intel、Philips、Atmel公司的8XC5X系列,Motorola公司的68HC05、68HC11系列,MicroChip公司的PIC16C系列等。在新一代8位單片機(jī)中,以增強(qiáng)型MCS-51為內(nèi)核的8XC5X系列、以6801為內(nèi)核的68HC05和68HC11系列目前已成為主流單片機(jī)芯片。1.新一代8位單片機(jī)芯片主要特征(1)片內(nèi)存儲(chǔ)器容量大,規(guī)格多,程序存儲(chǔ)器類型也趨于多樣化。該系列不同品種的片內(nèi)程序存儲(chǔ)器容量從4KB擴(kuò)展到8KB(83C51FA、87C51FA、87C52、89C52)、16KB(83C51FB、87C51FB
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地板磚供貨合同協(xié)議
- 有利于買家的采購合同模板
- 簡(jiǎn)單汽車租賃合同大全
- 銷售合同合同范本
- 滅火器材的快速使用與效果評(píng)估
- 基于機(jī)器學(xué)習(xí)的光子太赫茲通信系統(tǒng)中幾何整形技術(shù)研究
- 陰影環(huán)境下的全光函數(shù)采樣與新視點(diǎn)重構(gòu)研究
- 海拉爾盆地烏爾遜-貝爾凹陷油氣成藏過程及有利目標(biāo)預(yù)測(cè)
- 智能制造基地監(jiān)理合同(2篇)
- 智能家居公司合并合同(2篇)
- 加油站廉潔培訓(xùn)課件
- 2022版義務(wù)教育(生物學(xué))課程標(biāo)準(zhǔn)(附課標(biāo)解讀)
- 2023屆上海市松江區(qū)高三下學(xué)期二模英語試題(含答案)
- 誡子書教案一等獎(jiǎng)?wù)]子書教案
- 《民航服務(wù)溝通技巧》教案第16課民航服務(wù)人員平行溝通的技巧
- 深圳市物業(yè)專項(xiàng)維修資金管理系統(tǒng)操作手冊(cè)(電子票據(jù))
- 2023年鐵嶺衛(wèi)生職業(yè)學(xué)院高職單招(數(shù)學(xué))試題庫含答案解析
- 起重機(jī)械安裝吊裝危險(xiǎn)源辨識(shí)、風(fēng)險(xiǎn)評(píng)價(jià)表
- 華北理工兒童口腔醫(yī)學(xué)教案06兒童咬合誘導(dǎo)
- 中國建筑項(xiàng)目管理表格
- 高一3班第一次月考總結(jié)班會(huì)課件
評(píng)論
0/150
提交評(píng)論