【正文】
y the role of devices, which can remember the original subject, the raw data and intermediate results, but also remember to enable singlechip operation can be automatically prepared by the various orders. These devices called memory. In addition, the need to replace the role of the controller, it will be in accordance with an order prior to issuing various control signals so that the whole process can be calculated step by step manner. However, this threepart light enough, the original data and mands to be input, the results of the calculation to the output, are required by the order in which they sometimes need to wait. The first step: the first number from its storage unit (Location) in the check out to the puting device. Step two: the second number from its storage unit in the check out to the puting device。 34. Now to carry out operations, first of all need a plan, followed by Pen and paper. We have to calculate the issue of record, and then count the first step, 163 156, add it with the results of 36 recorded in the paper, and then calculate 166 247。 此外,單片機在工商,金融,科研、教育,國防航空航天等領(lǐng)域都有著十分廣泛的用途。 在大型電路中,這種模塊化應用極大地縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便于更換。如音樂集成單片機,看似簡單的功能,微縮在純電子芯片中(有別于磁帶機的原理),就需要復雜的類似于計算機的原理。 單片機在醫(yī)用設備中的用途亦相當廣泛,例如醫(yī)用呼吸機,各種分析儀,監(jiān)護儀,超聲診斷設備及病床呼叫系統(tǒng)等等。 可以這樣說,現(xiàn)在的家用電器基本上都采用了單片機控制,從電飯煲、洗衣機、電冰箱、空調(diào)機、彩電、其他音響視頻器材、再到電子秤量設備,五花八門,無所不在。 用單片機可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。采用單片機控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強大。因此,單片機的學習、開發(fā)與應用將造就一批計算機應用與智能化控制的科學家、工程師。導彈的導航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。MCS-51單片機應用廣泛,派生品種多,具有代表性,所以,這里以MCS-51系列的指令系統(tǒng)為例說明“指令”的組成和應用。各個系列的單片機雖然有不同的指令系統(tǒng),但也有其共同性。程序是由指令組成的,指令的基本組成是操作碼和操作數(shù)。MCS-51共有P0~P3四個這樣的并行口,可提供32根I/O線,每根線都是雙向的,并且大都有第二功能。這些特殊功能寄存器大體上分為兩類,一類與芯片的引腳有關(guān),另一類作片內(nèi)功能的控制用。特殊功能寄存器反映了8051的狀態(tài),實際上是8051的狀態(tài)字及控制字寄存器。各特殊功能寄存器的符號和地址見附表2。在MCS-51中,除程序計數(shù)器PC和四個工作寄存器區(qū)外,其余21個特殊功能寄存器都在這SFR塊中。在這兩位上放入不同的二進制數(shù),即可選用不同的寄存器組,如附表1所示。從00H到1FH安排了四組工作寄存器,每組占用8個RAM字節(jié),記為R0~R7。在此256個字節(jié)中,還開辟有一個所謂“位地址”區(qū),該區(qū)域內(nèi)不但可按字節(jié)尋址,還可按“位(bit)”尋址。8051內(nèi)部數(shù)據(jù)存儲器地址由00H至FFH共有256個字節(jié)的地址空間,該空間被分為兩部分,其中內(nèi)部數(shù)據(jù)RAM的地址為00H~7FH(即0~127)。實際使用時應首先充分利用內(nèi)部存儲器,從使用角度講,搞清內(nèi)部數(shù)據(jù)存儲器的結(jié)構(gòu)和地址分配是十分重要的。其最大容量可擴展到64k,用于存儲實時輸入的數(shù)據(jù)。當EA為高電平時,用戶在0000H至0FFFH范圍內(nèi)使用內(nèi)部ROM,大于0FFFH后,單片機CPU自動訪問外部程序存儲器。8051內(nèi)部有4k字節(jié)的ROM,就占用了由0000H~0FFFH的最低4k個字節(jié),這時片外擴充的程序存儲器地址編號應由1000H開始,如果將8051當做8031使用,不想利用片內(nèi)4kROM,全用片外存儲器,則地址編號仍可由0000H開始。程序存儲器可以放在片內(nèi)或片外,亦可片內(nèi)片外同時設置。如前述用助記符編寫的命令MOV A,#20H,換成機器認識的代碼74H、20H:(寫成二進制就是01110100B和00100000B)。存儲器的存儲單元地址和存儲單元的內(nèi)容是不同的兩個概念,不能混淆。其中每個存儲單元對應一個地址,256個單元共有256個地址,用兩位16進制數(shù)表示,即存儲器的地址(00H~FFH)。8051 CPU碢C指定的地址,從ROM相應單元中取出指令字節(jié)放在指令寄存器中寄存,然后,指令寄存器中的指令代碼被譯碼器譯成各種形式的控制信號,這些信號與單片機時鐘振蕩器產(chǎn)生的時鐘脈沖在定時與控制電路中相結(jié)合,形成按一定時間節(jié)拍變化的電平和時鐘,即所謂控制信息,在CPU內(nèi)部協(xié)調(diào)寄存器之間的數(shù)據(jù)傳輸、運算等操作。當單片機開始執(zhí)行程序時,給PC裝入第一條指令所在地址,它每取出一條指令(如為多字節(jié)指令,則每取出一個指令字節(jié)),PC的內(nèi)容就自動加1,以指向下一條指令的地址,使指令能順序執(zhí)行。單片機動作時應按順序一條條取出指令來加以執(zhí)行。這里程序計數(shù)器PC是由16位寄存器構(gòu)成的計數(shù)器。其功能在介紹位指令時再說明。PSW的其它位,將在以后再介紹。 4 奇偶標志P。 3 溢出標志位OV?!?2 輔助進位標志AC。它表示了運算是否有進位(或借位)。PSW CY AC FO RS1 RS0 OV - P對用戶來講,最關(guān)心的是以下四位。標志寄存器PSW也是一個八位寄存器,用來存放運算結(jié)果的一些特征,如有無進位、借位等。在進行算術(shù)、邏輯運算時,累加器ACC往往在運算前暫存一個操作數(shù)(如被加數(shù)),而運算后又保存其結(jié)果(如代數(shù)和)。一、運算器 運算器以完成二進制的算術(shù)/邏輯運算部件ALU為核心,再加上暫存器TMP、累加器ACC、寄存器B、程序狀態(tài)標志寄存器PSW及布爾處理器。由機器碼構(gòu)成的用戶程序一旦“進入”了單片機,再“啟動”單片機,就可讓它執(zhí)行輸入程序所規(guī)定的任務。但是,助記符編寫的程序便于人理解,可單片機卻只認識二進制機器代碼,因此,為了讓單片機能“讀懂”匯編語言程序必須再轉(zhuǎn)換成由二進制機器碼構(gòu)成的程序,這種轉(zhuǎn)換過程,就稱為“匯編”。這樣,每條指令有明顯的動作特征,易于記憶和理解,也不容易出錯。所以,直接用它來編寫程序十分困難。所以,在指令系統(tǒng)中有單字節(jié)指令,也有多字節(jié)指令。這些指令是用十六進制表示二進制的機器碼。要單片機運作,單片機系統(tǒng)中的所有指令,都必須以二進制編碼的形式來表示。操作碼表示計算機執(zhí)行什么操作,即指令的功能;操作數(shù)表示參加操作的數(shù)或操作數(shù)所在的地址(即操作數(shù)所存放的地方編號)。單片機用戶為解決自己的問題所編的指令程序,稱為源程序(Source Program)。使用單片機時,事先應當把要解決的問題編成一系列指令。但是怎樣才能辨別和執(zhí)行這些操作呢?這是在設計單片機時由設計人員賦予它的指令系統(tǒng)所決定的?! ?第二步:把第二個數(shù)從它所在的存貯單元中取出來,送至運算器; 第三步:相加; 第四步:把相加完的結(jié)果,送至存貯器中指定的單元。單片機所以能自動地進行運算和控制,正是由于人把實現(xiàn)計算和控制的步驟一步步地用命令的形式,即一條條指令(Instruction)預先存入到存貯器中,單片機在CPU的控制下,將指令一條條地取出來,并加以翻譯和執(zhí)行。軟件主要指的是各種程序。但是,光有這樣的硬件,還只是有了實現(xiàn)計算和控制功能的可能性。從而,一切指令、數(shù)據(jù)都可經(jīng)內(nèi)部總線傳送,有如大城市內(nèi)各種物品的傳送都經(jīng)過干道進行單片機指令系統(tǒng)與匯編語言程序 前面已經(jīng)講述了單片機的幾個主要組成部分,這些部分構(gòu)成了單片機的硬件?!?現(xiàn)在,我們已經(jīng)知道了單片機的組成,余下的問題是如何將它們的各部分連接成相互關(guān)聯(lián)的整體呢?實際上,單片機內(nèi)部有一條將它們連接起來的“紐帶”,即所謂的“內(nèi)部總線”。實際上單片機里面還有一個時鐘電路,使單片機在進行運算和控制時,都能有節(jié)奏地進行。因此,在單片機中就設置有定時器兼計數(shù)器,其基本結(jié)構(gòu)與本連載之(二)中的舉例類似。單片機除了進行運算外,還要完成控制功能。而讀寫存貯器可隨時存入或讀出數(shù)據(jù)。 存貯器又分為只讀存貯器和讀寫存貯器兩種,前者存放調(diào)試好的固定程序和常數(shù),后者存放一些隨時有可能變動的數(shù)據(jù)。所以,這一類信息就稱為控制命令,即由控制器去控制運算器一步步地進行運算和處理,又控制存貯器的讀(取出數(shù)據(jù))和寫(存入數(shù)據(jù))等。這樣要由外部設備通過“口”進入單片機,再存放在存貯器中,在運算處理過程中,數(shù)據(jù)從存貯器讀入運算器進行運算,運算的中間結(jié)果要存入存貯器中,或最后由運算器經(jīng)“出入口”輸出。在單片機中,基本上有三類信息在流動,一類是數(shù)據(jù),即各種原始數(shù)據(jù)(如上例中的3163等)、中間結(jié)果(如166247?;蛘撸斶\算器得到最后結(jié)果時,再將此結(jié)果輸出,而中間結(jié)果不能隨便“溜出”單片機?!?如上例中,當在計算163156時,數(shù)字36就不能同時進入運算器。此外,還需要有能代替人作用的控制器,它能根據(jù)事先給定的命令發(fā)出各種控制信號,使整個計算過程能一步步地進行。 現(xiàn)在,我們用單片機來完成上述過程,顯然,它首先要有代替算盤進行運算的部件,這就是“運算器”;其次,要有能起到紙和筆作用的器件,即能記憶原始題目、原始數(shù)據(jù)和中間結(jié)果,還要記住使單片機能自動進行運算而編制的各種命令。我們把要計算的問題記錄下來,然后第一步先算163156,把它與36相加的結(jié)果記在紙上,然后計算166247。34。附錄一:中文翻譯單片機的組成 單片機要自動完成計算,它應該具有哪些最重要的部分呢?我們以打算盤為例計算一道算術(shù)題。例:36+163156-166247?,F(xiàn)在要進行運算,首先需要一把算盤,其次是紙和筆。34,再把它從上一次結(jié)果中減去,就得到最后的結(jié)果。這類器件就稱為“存貯器”。但是光有這三部分還不夠,原始的數(shù)據(jù)與命令要輸入,計算的結(jié)果要輸出,都需要按先后順序進行,有時還需等待。因此就需要在單片機上設置按控制器的命令進行動作的“門”,當運算器需要時,就讓新數(shù)據(jù)進入。這種對輸入、輸出數(shù)據(jù)進行一定管理的“門”電路在單片機中稱為“口”(Port)。34所得的商余數(shù)30等)、程序(