




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章汽車電子技術與單片機第一節汽車電子技術的發展第二節單片機在汽車中的應用和總線系統第三節單片機的基本知識第四節數制與碼制第一節汽車電子技術的發展一、當今汽車技術發展的幾個重要方向科學技術的不斷進步體現在各個方面,在計算機和微電子、生物工程、材料科學、工藝制作技術等很多領域都出現了一大批具有換時代意義的成,在制造業中,汽車技術的發展具有很強的代表性,成為許多新技術的載體。電控發動機、自動變速器、防抱死系統(ABS)、安全氣囊、智能導航等大量推陳出新的技術使得汽車在動力性、經濟性、排放水平、加成舒適性和安全性方面已經達到了令人相當滿意的程度。新技術同時也為行業的發展帶來了升級,為行業的進步指明了方向。下一頁返回第一節汽車電子技術的發展作為汽車“心臟”的發動機,在汽車技術進步的過程中始終走在前列。汽油機電控噴射技術結合三元催化器、柴油機燃油噴射系統、可變截面渦輪增壓器(VGT)、可變氣門正時和升程技術(VTEC)、混合動力技術(HPS)等許多機、電、液緊密結合的技術使發動機的性能指標日益提高。汽車采用自動變速器,在駕駛時可以不踩離合器,實現自動換擋,而且發動機不會熄火,從而可以有效的提高駕駛方便性。20世紀80年代以來,隨著電子技術的發展,變速器自動控制更加完善,在各種使用工況下均能實現發動機與傳統系的最佳匹配。上一頁下一頁返回第一節汽車電子技術的發展不少現代車型已裝有自診斷裝置。有些高級的汽車內還裝備了汽車導航系統,它通過汽車內的顯示裝置顯示地圖、汽車位置、運動軌跡、目的方向和距離等,從而為引導汽車提供大量信息。該系統還能將以汽車行駛方向為主的交通信息等反映到顯示屏的移動地圖上,為車輛行駛指示最佳路線。汽車導航系統可分為衛星導航系統和地面無線電固定導航系統兩類。上一頁下一頁返回第一節汽車電子技術的發展二、汽車電子技術的發展史從20世紀60年代中期開始,微電子技術的迅猛發展使其在汽車上被廣泛應用,給汽車工業的進一步發展帶來了新的生機。電子控制系統具有控制精度高、響應速度快,集成度高、體積小、重量輕、應用更加靈活等特點用于汽車后,可使汽車有關系統在各種工況下都處在最佳的工作狀況,各項受控指標均能獲得較大的改善,使任何機械控制系統都難以達到的。50年代到70年代末,主要用電子裝置改善部分機械部件的性能;70年代末到90年代中期,汽車電子控制技術開始形成,大規模集成電路得到廣泛應用,減小了汽車電子產品的體積,特別是8位、16位單片機的廣泛應用,提高了電子裝置的可靠性和穩定性。上一頁下一頁返回第一節汽車電子技術的發展80年代中期到90年代末被認為是電子技術在汽車上應用的第三階段,在這一階段中,以微處理器為核心的微機控制系統在汽車上大規模的應用趨于成熟和可靠,并向智能化發展,汽車全面進入電子化時代。2000年以后,汽車電子化被認為已進入第四階段——智能化和網絡化時代,在這一階段中,汽車產品將大量采用人工智能技術,并利用網絡進行信息的傳遞和交換。汽車電子技術的中的由解決汽車部件或總成問題開始向廣泛應用計算機網絡與信息技術發展,使汽車更加自動化、智能化,并向解決汽車與社會融為一體等問題轉移。汽車電子設備成本占汽車總成本的比重越來越大,汽車制造技術由機械制造逐步步入電子控制技術時代。上一頁下一頁返回第一節汽車電子技術的發展三、汽車電子系統在整車中的地位從世界范圍看,汽車工業向電子化發展的趨勢,在20世紀90年代已十分明顯,由于汽車工業是國民經濟發展的支柱產業,因而是國際經濟競爭的重要領域,而電子技術在汽車上的應用促進了汽車各項性能的發展,世界各大汽車公司紛紛投入巨資開發自己的汽車電子產品以贏得更大的市場空間,因此,汽車電子化將是奪取汽車市場的重要手段。上一頁下一頁返回第一節汽車電子技術的發展現代汽車電子控制技術的應用不僅提高了汽車的動力性、經濟性和安全性,改善了行駛的穩定性和舒適性,推動了汽車工業的發展,還為電子產品開拓了廣闊的市場,從而推動了電子工業的發展。因此,發展汽車電子控制新技術,加快汽車電子化速速,是振興和發展汽車工業的重要手段。上一頁返回第二節單片機在汽車中的應用和總線系統一、單片機的發展史及其在汽車中的引入單片機從20世紀70年代出現至今已經有30多年的歷史,從最初的簡單功能單片機發展到現在32位、64位的高性能微處理器,它的身影幾乎已經融入人們生產生活的各個領域,從工業設備的自動化,到人們日常使用的各種通訊產品,再到武器軍工行業,衛星和載人等方方面面,單片機都在發揮著難以替代的作用,并且成為產品附加值的重要來源。下一頁返回第二節單片機在汽車中的應用和總線系統從單片機性能的衍變和發展看,可以將單片機的發展歷史劃分為三個階段:第一階段是20世紀70年代,單片機產生,低性能微處理器開始在工業生產中得到應用。第二階段從20世紀80年代到20世紀末,微處理器的性能已經有了很大的提高,以Motorola公司和Zilong公司為代表,雖然其單片機問世較遲,但是產品性能較高,單片機內有串行I/O口,多集中斷處理能力,片內RAM和ROM容量較大,有些還帶有A/D轉換接口。第三階段是20世紀末直到現在,這一階段是8位單片機鞏固發展,16為單片機、32為單片機推出階段。上一頁下一頁返回第二節單片機在汽車中的應用和總線系統單片機在汽車中的引入,最早應用于汽車發動機的控制。首推1976年通用汽車公司研發的利用單片機對發動機的點火時間進行控制(MASIR)。它能更好的根據發動機運轉工況,對點火調速器提前角與負壓提前角作出精確的點火時間控制。汽車電子控制電腦也從模擬時代進入到了數字時代。上一頁下一頁返回第二節單片機在汽車中的應用和總線系統二、當代汽車各系統使用單片機的狀況隨著時代的發展,特別是計算機總線技術的日益成熟。在車上使用的芯片也越來越多,比如ABS、EBD、ASR、懸掛、電子防盜和衛星導航等系統上的應用,而在這些系統中有的使用的芯片功能較為簡單,甚至一片8位的芯片就完全能滿足使用要求。因而有許多汽車上開始采用基于總線的多芯片系統,大家通過布置在車上的總線系統,共享信息,使汽車能非常自如地工作。上一頁下一頁返回第二節單片機在汽車中的應用和總線系統三、汽車總線系統的產生及其在整車中的應用電控系統的增加雖然提高了汽車的動力性、經濟性和舒適性,但隨之增加的復雜電路也降低了汽車的可靠性,增加了維修的難度。為此,早在20世紀70年代就已提出實現汽車電控單元之間的通訊問題。隨著集成電路的迅速發展,使得以串行總線將車用電器組成網絡,無論是在可靠性和經濟性上,都成為了可能。CAN(ControllerAreaNetwork)總線即控制器局域網絡,是德國BOSCH公司在20世紀80年代初研制成功的,最初主要是為汽車監測、控制系統而設計的。現在,由于CAN總線的優良特性,除了在汽車電子控制系統中應用外,在其他一些實時控制系統中也得到了廣泛應用。上一頁下一頁返回第二節單片機在汽車中的應用和總線系統目前,汽車新技術的發展應用于汽車線束數量及線束急劇增加的矛盾相當突出。為解決這些問題,數據總線已被廣泛地應用到汽車電控系統。現代汽車典型的控制單元有電控燃油噴射系統、電控傳動系統、防抱死制動系統(ABS)、防滑控制系統(ASR)、廢氣再循環系統、巡航系統和空調系統。在一個完善的汽車電子控制系統中,許多動態信息必須與車速同步。為了滿足各子系統的實時性要求,有必要對汽車公共數據實行共享,如發動機轉速、車輪轉速、油門踏板位置等。上一頁返回第三節單片機的基本知識一、概述單片機是微型機計算機的一個很重要的分支。自20世紀70年代問世以來,以極其高的性能價格比受到人們的重視和關注,應用廣泛,發展迅速。單片機體積小,質量輕,抗干擾能力強,對環境要求不高,價格低廉,可靠性高,靈活性好,開發較為容易。通過學習有關單片機的知識后,能依靠自己的力量來開發所希望的單片機系統,并可獲得較高的經濟效益。在我國,單片機已廣泛地應用在智能儀器儀表、機電設備過程控制、自動檢測、家用電器和數據處理等各個方面。下一頁返回第三節單片機的基本知識二、單片機的軟件和硬件系統單片微型計算機就是把組成微型計算機的各部件,如中央處理器、存儲器、輸入/輸出接口電路、定時器/計數器等,制作在一塊集成電路芯片中,構成一個完整的微型計算機。下面把組成計算機的五個基本組成部分做簡單說明,如圖1-3所示。運算器是計算機的運算部件,用于實現算術和邏輯運算,計算機的數據運算和處理都在這里進行。控制器是計算機的指揮控制部件,使計算機各部分能自動協調地工作。上一頁下一頁返回第三節單片機的基本知識運算器和控制器是計算機的核心部分,常把他們合在一起統稱為中央處理器,簡稱CPU。存儲器是計算機的記憶部件,用于存放程序和數據,存儲器又分為內存儲器和外存儲器。輸入設備用于將程序和數據輸入到計算機中。輸出設備用于把計算機數據計算或加工的結果,以用戶需要的形式顯示或保存。通常把外存儲器、輸入設備和輸出設備合在一起稱之為計算機的外部設備。以上這些組成計算機實際的部分稱之為計算機的硬件,也叫計算機硬件系統。單片機盡管簡單、組成單片機系統的也是上述這五個基本組成部分。上一頁下一頁返回第三節單片機的基本知識硬件系統作為實體,為計算機工作提供了基礎和條件,但要想使計算機有效地工作,還必須有軟件的配合,概括的說,計算機的軟件系統包括系統軟件和應用軟件兩個部分。但單片機由于硬件支持和需要所限,其軟件系統比較簡單。傳統觀念認為單片機的系統管理不需要像微型計算機那樣復雜的操作系統,而只使用簡單的操作系統程序,通常稱之為監控程序。因此監控程序就成為單片機中最重要的系統軟件,這種觀念還認為大多數單片機不使用高級語言,單片機中通常使用的是匯編語言,但單片機并沒有自己專用的匯編程序。上一頁下一頁返回第三節單片機的基本知識三、Intel公司MCS-51系列產品概述8051單片機是美國Intel公司在1980年推出的MCS-51系列單片機的第一個成員。凡Intel公司生產的以8051為核心單元的其他派生單片機都可成為MCS-51系列,有時簡稱為51系列。其他公司生產的以8051為核心單元的其他派生單片機不能稱為MCS-51系列,只能稱為8051系列。MCS-51系列單片機包括三個基本型80C31、8051、8751,以及對應的低功耗型號80C31、8051、8751,因而MCS-51特指Intel的這幾種型號。上一頁下一頁返回第三節單片機的基本知識四、單片機的最新發展技術單片機在近10年取得了飛速的發展,目前在世界范圍內從事單片機開發的有4各區域:一是歐美,如美國國家半導體的COP8系列單片機,Philips公司的51系列單片機,AMD公司的186系列16位嵌入式單片機,ST公司的ST62系列單片機,MICROCHIP的PIC系列單片機,Motorola的各個系列單片機,以及Infineontechnologies的C500和C166系列等;二是日本,如TOSHIBA公司開發了從4位到64位的多系列單片機,日立公司也有從4位到32位的單片機,FUJITSUMicroelectronics的F2MC-8L單片機系列產品,OKIElectronics的MSM80、MSM66、MSM63系列單片機,NEC的75X、78X系列單片機;三是臺灣地區,如WINBOND公司的W741/W536、W78/W77等系列單片,Holtek的HT46/48/49CXX系列單片機,EMC公司的E7系列單片機等;四是韓國,如Hyundaimicroelectronics的GMS800、GMS30系列單片機,另外,LG等公司也生產單片機。上一頁返回第四節數制與碼制一、數制數制也稱計數制,是指用一組固定的符號和統一的規則來表示數值的方法。按進位的方法進行計數,稱為進位計數制。在進位計數制中有數位、基數和位權三個要素。數位是指數碼在一個數中所處的位置;基數是指在某種進位計數制中,每個數位上所能使用的數碼的個數,位權是指在某種進位計數制中,每個數位上的數碼所代表的數值的大小,等于在這個數位上的數碼乘上一個固定的數值,每個固定的數值就是這種進位計數制中該數位上的位權。數碼所處的位置不同,代表數的大小也不同。下一頁返回第四節數制與碼制1.十進制十進位計數制簡稱十進制。十進制數具有下列特點:(1)有十個不同的數碼符號0、1、2、3、4、5、6、7、8、9.(2)每一個數碼符號根據它在這個數中所處的位置(數位),按“逢十進一”來決定其實際數值,即各數位的位權是以10為底的冪次方。2.二進制二進位計數制簡稱二進制。一個二進制數位簡稱為位(英文名為bit)。計算機中最直接、最基本的操作就是對二進制位的操作。二進制數具有下列特點:(1)有兩個不同的數碼符號0、1。(2)每個數碼符號根據它在這個數中的數位,按“逢二進一”來決定其實際數值。上一頁下一頁返回第四節數制與碼制3.十六進制二進制數書寫冗長、易錯、難記,而十進制數與二進制數之間的轉換過程復雜,所以一般用十六進制數或八進制數來表示。十六進位計數制簡稱為十六進制。十六進制具有下列特點:(1)它有十六個不同的數碼符號0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。(2)每個數碼符號根據它在這個數中的數位,按“逢十六進一”來決定其實際數值。上一頁下一頁返回第四節數制與碼制二、碼制數值在計算機中表示形式為機器數,計算機只能識別0和1,使用的是二進制,而在日常生活中人們使用的是十進制,為了能方便地與二進制轉換,就是用了十六進制(24)和八進制(23)。數值有正負之分,計算機就用一個數的最高位存放符號(0為正,1為負)。這就是機器數的原碼了。假設機器能處理的位數為8,即字長為1byte,原碼能表示數值的范圍為(-127~-0,+0~+127)共256個。有了數值的表示方法就可以對數值進行算術運算,但是很快就發現用帶符號位的原碼進行乘除運算時結果正確,而在加減運算的時候就出現了為題,假設字長為8bits:上一頁下一頁返回第四節數制與碼制上式顯然不正確,因為在兩個整數的加法運算中是沒有問題的,于是就發現問題出現在帶符號位的負數身上,對除符號位外的其余各位逐位取反就產生了反碼。反碼的取值空間和原碼相同且一一對應。下面是反碼的減法運算:上一頁下一頁返回第四節數制與碼制上式也不正確,再如:上面這種計算方法是正確的。問題出現在(+0)和(-0)上,在人們的計算概念中零是沒有正負之分的。于是就引入了補碼概念:負數的補碼就是對反碼加一,而正數不變,正數的原碼、反碼、補碼是一樣的。在補碼中用(-128)代替了(-0),所以補碼的表示范圍為(-128~0~127)共256個。(-128)沒有相對應的原碼和反碼,(-128)=(10000000)。上一頁下一頁返回第四節數制與碼制下面是補碼的加減運算:上一頁下一頁返回第四節數制與碼制以上這幾種計算方法是正確的。補碼的設計目的是:(1)使符號位能有效值部分一起參加運算,從而簡化運算規則;(2)使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計。所有這些轉換都是在計算機的最底層進行的,而在我們使用的匯編、C語言等其他高級語言中使用的都是原碼。上一頁下一頁返回第四節數制與碼制ASCII碼是美國信息交換用標準代碼。ASCII碼雖然是美國國家標準,但它已被國際標準化組織(ISO)認定為國際標準,為世界公認,并在世界范圍內通用。ASCII碼用一個8位二進制數(字節)表示,每個字節只占用了7位,最高位恒為0。7位ASCII碼可以表示128(27=128)種字符,其中通用控制字符34個,阿拉伯數字10個,大小寫英文字母52個,各種標點符號和運算符號共有32個。上一頁返回圖1-3微型計算機的組成返回第二章MSC-51單片機的結構和原理第一節MCS-51單片機的內部組成及信號引腳第二節MCS-51單片機的中央處理器CPU第三節MCS-51的內部存儲器第四節I/O端口、時鐘電路與時序第五節MCS-51單片機工作方式第六節MCS-51單片機的存儲器第一節MCS-51單片機的內部組成及信號引腳MCS-51系列單片微型機計算機包括8031、8051、8751等型號,其代表型號是8051。8051內部組成方框圖如圖2-1所示,本書也將主要以8051單片機的代表來介紹MCS-51系列單片機的工作原理。通常計算機須由三大基本單元,即中央處理器、存儲器和輸入/輸出設備組成。下一頁返回第一節MCS-51單片機的內部組成及信號引腳一、MCS-51單片機的基本組成8051單片機的結構組成如圖2-1所示,各部分情況介紹如下:1.中央處理器顧名思義,這是單片機的核心部分。也有人將其稱為MCU,在這些公司提供的器件使用手冊上還有μP的寫法,都是同一個意思。8051單片機的CPU由算術邏輯部件(ALU)、累加器(ACC)、寄存器B、暫存器TMP1和TMP2、程序狀態寄存器(PSW)等運算部件,以及指令寄存器(IR)、指令譯碼器(ID)、數據指針寄存器(DPTR)、程序指針寄存器(PC)、堆棧指針(SP)等控制部件組成。上一頁下一頁返回第一節MCS-51單片機的內部組成及信號引腳2.內部數據寄存器(內部RAM)MCS-51的CPU能處理8位二進制。8051芯片中共有256個RAM單元,但其中后128單元被專用寄存器占用,能作為寄存器供用戶使用的只是前128個單元,用于存放可讀寫的數據。因此,通常所說的內部數據存儲器就是指前128單元,簡稱內部RAM。3.內部程序存儲器(內部ROM)根據有無片內ROM,8051單片機有三個品種,即無ROM版本為8031、工廠掩膜只讀ROM版本為8051、EPROM版本為8751.8051共有4KB掩膜ROM,用于存放程序、原始數據或表格,簡稱內部ROM。上一頁下一頁返回第一節MCS-51單片機的內部組成及信號引腳4.定時器/計數器8051有兩個16位定時器/計數器(T0,T1),它們由特殊功能寄存器TMOD和TCON分別選擇它們的工作方式和表示它們的狀態。在定時器功能中,每個機器周期定時器加1,可以認為它是機器周期計數器,由于1個機器周期包含12個振蕩周期,定時器計數到的脈沖為振蕩頻率的1/12。5.并行I/O口MCS-51共有四個8位的I/O口(P0、P1、P2、P3),以實現數據的并行輸入輸出。上一頁下一頁返回第一節MCS-51單片機的內部組成及信號引腳6.串行口MCS-51單片機有一個全雙工的串行口,以實現單片機和其他設備之間的穿行數據傳送。該串行口功能較強,既可作為全雙工異步通信收發器使用,也可作為同步移位器使用。7.中斷控制系統MCS-51單片機的中斷功能較強,以滿足控制應用的需要。8051共有5各中斷源,即外部中斷2個,定時/計數中斷2個,串行中斷1個。全部中斷分為高級和低級兩個優先級別。上一頁下一頁返回第一節MCS-51單片機的內部組成及信號引腳8.時鐘電路MCS-51芯片的內部有時鐘電路,但石英晶體和微調電容需外接。時鐘電路為單片機產生時鐘脈沖序列。系統允許的最高晶振頻率為12MHZ。從上述內容可以看出,MCS-51雖然是一個單片機芯片,但作為計算機應該具有的基本部件它都包括,因此實際上它是一個簡單的微型計算機系統。上一頁下一頁返回第一節MCS-51單片機的內部組成及信號引腳二、MCS-51的信號引腳MCS-51微處理器采用40引腳的雙列直插封裝(DIP)方式,如圖2-2所示,仔0條引腳中,有2條專用于主電源的引腳,2條外接晶振引腳,4條控制引腳和3條I/O引腳。下面分別敘述各引腳的功能。主電源引腳VSS和VCC:VSS(20)接地,VCC(40)正常操作時接+5V電源。外接晶振引腳XTAL1和XTAL2:當外接晶體振蕩器時,XTAL1和XTAL2分別接在外接晶體兩端;當采用外部時鐘方式時,XTAL1接地,XTAL2接外來振蕩信號。上一頁下一頁返回第一節MCS-51單片機的內部組成及信號引腳控制引腳RST/VPD,ALE/、、。對于RST/VPD:當振蕩器正常運行時,在此引腳上出現兩個機器周期以上的高電平使微處理器復位;VCC掉電期間,此引腳可接備用電源,以保持內部RAM的數據。:當訪問外部存儲器時,由微處理器的P2口送出地址的高8為,P0口送出地址的低8位,數據通過P0口傳送。:是程序存儲器讀選通信號,低電平有效。上一頁下一頁返回第一節MCS-51單片機的內部組成及信號引腳EA/VPP(31):當EA端保持高電平時,訪問內部程序存取器(4KB),但當PC(程序計數器)值超過0FFFH時,將自動轉向執行外部程序存儲器內的程序;當EA保持低電平時,則只訪問外部程序存儲器(從0000H地址開始),而不管微處理器內部是否有程序存儲器。輸入輸出引腳P0.0~P0.7(39~~32):P0口是一個漏極開路型準雙向I/O口。在訪問外部存儲器時,它是分時多路轉換的地址(低8位)和數據總線,在訪問期間激活了內部的上拉電阻。在EPROM編程時,它接收指令字節,而在驗證程序時,則輸出指令字節。驗證時,要求外接上拉電阻。上一頁下一頁返回第一節MCS-51單片機的內部組成及信號引腳P1.0~P1.7(1~8):P1口是帶內部上拉電阻的8位雙向I/O口。在EPROM編程和程序驗證時,它接收低8位地址。P2.0~P2.7(21~28):P2口是一個帶內部上拉電阻的8位雙向I/O口。在訪問外部存儲器時,它送出高8位地址。在對EFROM編程和程序驗證期間,它接收高8位地址。P3.0~P3.7(10~17):P3口是一個帶內部上拉電阻的8位雙向I/O口。在MCS-51中,這8個引腳還兼有專用功能。上一頁返回第二節MCS-51單片機的中央處理器CPU一、運算器運算器包括算術邏輯部件ALU、位處理器、累加器A、寄存器B、暫存器以及程序狀態寄存器PSW等。該模塊的功能是實現數據的算術、邏輯運算、位變量處理和數據傳送等操作。ALU的功能十分強,它不僅可對8位變量進行邏輯“與”、“或”、“異或”、循環、求補和清零等基本操作,還可以進行加、減、乘、除等基本運算。ALU還具有一般的微機ALU所不具備的功能,即位處理操作,它可以位(bit)變量進行處理,如置位、清零、求補、測試轉移及邏輯“與”、“或”等操作。下一頁返回第二節MCS-51單片機的中央處理器CPU由此可見,ALU在算術運算及控制處理方面能力是很強的。累加器A是一個8位的累加器,從功能上看,它與一般微機的累加器相比沒什么特別之處,但需要說明的是A的進位標志Cy是特殊的,因為它同時又是位處理器的一位累加器。寄存器B是為執行乘法和除法操作設置的,在不執行乘、除法操作的一般情況下可把它當做一個普通寄存器使用。MCS-51的程序狀態寄存器PSW是一個8位可讀寫的寄存器,它的不同位包含了程序狀態的不同信息,掌握并牢記PSW各位的含義是十分重要的,因為在程序設計中,經常會與PSW的各個位打交道。PSW各位的定義如表2-1所示。上一頁下一頁返回第二節MCS-51單片機的中央處理器CPU二、控制器控制部件是微處理器的神經中樞,以主振頻率位基準。控制器控制CPU的時序,對指令進行譯碼,然后發出各種控制信號,將各個硬件環節組織在一起。CPU的時序為每個機器周期(12個振蕩周期)由6個狀態周期組成,即S1、S2、……S6,而每個狀態周期由兩個時相P1,P2組成。上一頁下一頁返回第二節MCS-51單片機的中央處理器CPUCPU功能的強弱,主要可以用下幾個指標來衡量:(1)內部總現寬度,也稱字長、位數。位數越大運算精度越高,運算速度越快。(2)指令數。指令越多、編程越靈活。(3)執行每條指令所需時間或每秒鐘平均執行指令條數,常用的MIPS表示每秒鐘執行指令的百萬條數。(4)尋址方式越多、對某一空間的尋址越靈活。MCS-51有5種尋址方式,MCS-96有6種尋址方式,Z80有6種尋址方式,MC6805有10種尋址方式。上一頁返回第三節MCS-51的內部存儲器一、內部數據存儲器的結構(圖2-3)MCS-51數據存儲器在物理上和邏輯上都分為兩個地址空間:一個內部和一個外部數據存儲器空間。訪問內部數據存儲器,用MOV指令,訪問外部數據存儲器用MOVX指令。MCS-51內部數據存儲器共有128個字節單元。內部數據存儲器的00H~1FH(共32個單元)為4個寄存器工作區,每區8個寄存器,表示為R0~R7,如表2-2所示。由于每個寄存器區的8個寄存器都記為R0~R7,因此每次只能選擇一個寄存器區工作。寄存器工作區的選擇是通過狀態標志寄存器PSW的第3、4位,即RS1、RS0進行。下一頁返回第三節MCS-51的內部存儲器內部數據存儲器20H~2FH(16個單元)既可按字節尋址,作為一般工作單元,又可以按位CPU直接尋址,進行位操作。二、堆棧及堆棧指示器堆棧實際上是一種數據結構(如圖2-4所示),是只允許在其一端進行數據插入和數據刪除操作的線性表。數據寫入堆棧稱為壓入運算(PUSH),也叫入棧。數據從堆棧中讀出稱之為彈出運算(POP),也叫出棧。堆棧的最大特點就是“后進先出”的數據操作規則,常把“后進先出”寫為LIFO(Last-In.First-Out),即先入棧的數據存放在棧的底部。堆棧有兩種類型:向上生長型和向下生長型。上一頁下一頁返回第三節MCS-51的內部存儲器不論是數據進棧還是數據出棧,都是對堆棧的棧頂單元進行的,即對棧頂單元的寫和讀操作。為了指示棧頂地址,要設置堆棧指示器SP,其內容就是堆棧棧頂的存儲單元地址。MCS-51系列微處理器的堆棧是以棧頂滿的形式工作的。在執行PUSH期間,壓入數據前,SP加1;反之,在執行POP期間,彈出數據前,SP減1.SP寬為8位。由于堆棧指針可以由指令改變,因此堆棧可以設置在片內RAM中任一連續空間內。復位后,SP初始化值位07H,所以,堆棧從08H單元開始。上一頁下一頁返回第三節MCS-51的內部存儲器三、程序存儲器程序存儲器空間為0000H~FFFFH,共64KB,其結構如圖2-5所示。其中低4KB(0000H-0FFFH)可以在單片機外部(8031),也可以在內部(8051、8751)。對沒有片內ROM的8031,只要在硬件設計時使,就可以使程序執行始終在外部ROM中進行;對有片內ROM的8051和8751,只要在硬件設計時使,程序開始執行的前4KB總是在片內ROM中,超過0FFFH(4KB)時,在片外ROM中。上一頁下一頁返回第三節MCS-51的內部存儲器無論,還是,都由16位程序計數器(PC)作為尋址裝置。在整個程序存儲器的64KB空間中,0000H~0023H空間只能用于存放中斷服務子程序的向量地址,還有一組特殊單元是0003H~002AH,共40個單元。這40個單元被均勻地分為五段,作為五個中斷源的中斷地址,如表2-3所示。上一頁返回第四節I/O端口、時鐘電路與時序一、MCS-51的I/O端口輸入/輸出口也稱為I/O端口。MCS-51單片機的四個I/O端口都是8位雙向口,這些端口在結構和特性上是基本相同的,但又各具特點。I/O端口的作用在單片機中是一個集數據輸入緩沖、數據輸出驅動及鎖存等多項功能為一體的電路。8051共有32根引腳全部為I/O端口,分為4個8位口。8051單片機的4個端口都是雙向的,每個端口都包含鎖存器(特殊功能寄存器中P0~P3,地址分別為80H、90H、0A0H、0B0H)、輸出驅動器和輸入緩沖器。下一頁返回第四節I/O端口、時鐘電路與時序每個端口的每一根引腳都可以獨立地用作輸入或輸出引腳。P0端口是三態雙向端口,稱為數據總線端口,因為只有該端口能直接用于對外部存儲器的讀/寫數據操作。P0端口還用以輸出外部存儲器的低8位地址。P1端口是8位準雙向端口,作通用I/O端口使用,在輸出驅動器部分,P1端口有別于P0端口,它接有內部上拉電阻。P1端口的每一位可以獨立地定義為輸入或者輸出,因此,P1端口既可以作為8位并行I/O端口,又可作為8位I/O端口。上一頁下一頁返回第四節I/O端口、時鐘電路與時序P2端口是8位準雙向I/O端口,P2端口可作通用I/O端口使用。P2端口電路中比P1端口多了一個多路轉換電路MUX,這又正好與P0端口一樣。但通常應用情況下,P2端口是作為高位地址線使用,此時多路轉換開關應倒向相反方向。當外接程序存儲數據時,P3端口給出地址的高8位,此時不能用作通用I/O端口。P3端口是一個8位的準雙向I/O端口。它具有多種功能:可以作為一般準雙向I/O端口,具有字節操作和位操作兩種工作方式;也可以用8條I/O線獨立地作為串行I/O端口和其他控制信號。上一頁下一頁返回第四節I/O端口、時鐘電路與時序P1、P2、P3口的輸出緩沖器可驅動4個TTL電路。對于HMOS芯片單片機的I/O口,在正常情況下,可任意由TTL或NMOS電路驅動。HMOS及CMOS型單片機的I/O由集電極開路或漏極開路的輸出來驅動時,不必外加上拉電阻。P0端口輸出緩沖器能驅動8個TTL電路,驅動MOS電路須外接上拉電阻,但P0端口用作地址/數據總線時,可直接驅動MOS的輸入而不必外加上拉電阻。如果MCS-51本書的I/O端口不能滿足用戶需要時,可以擴展I/O端口,MCS-51單片機外部RAM存儲器和外部擴展的I/O端口是同一編址的,CPU對它們的操作指令也相同,在外部64KB的RAM空間內,可以劃出一個區域作為擴展I/O端口的地址空間,因此I/O端口的擴展幾乎是不受限制的。上一頁下一頁返回第四節I/O端口、時鐘電路與時序二、時鐘電路MCS-51單片機的時鐘信號通常用兩種電路形式得到:內部振蕩方式和外部振蕩方式。在引腳XTAL1和XTAL2外接晶體振蕩器或陶瓷諧振器,就構成了內部振蕩方式。由于單片機內部有一個高增益反相放大器,當外接晶振后,就構成了自激振蕩器并產生振蕩時鐘脈沖。兩種不同的時鐘電路如圖2-6所示。上一頁下一頁返回第四節I/O端口、時鐘電路與時序對于內部振蕩方式的外部電路,電容器C1、C2起穩定振蕩頻率、快速起振的作用,其電容值一般在5~30pF。晶振頻率的典型值位12MHz,采用6MHz的情況也比較多。內部振蕩方式所得的時鐘信號比較穩定,實用電路中使用較多。外部振蕩方式是把外部已有的時鐘信號引入單片機內。這種方式適宜來使單片機的時鐘與外部信號保持同步。外部振蕩信號由XTAL2引入,XTAL1接地。為了提高輸入電路的驅動能力,通常使外部信號經過一個帶有上拉電阻的TTL反相門后介入XTAL2。上一頁下一頁返回第四節I/O端口、時鐘電路與時序三、基本時序單位時序是用定是單位來說明的。MCS-51的時序定時單位共有4個,從小到大依次是:拍節、狀態、機器周期和指令周期。把振蕩脈沖的周期定義為拍節(用P表示)。振蕩脈沖經過二分頻后,就是單片機的時鐘信號,把時鐘信號的周期定義為狀態s。一個狀態包含兩個拍節,其前半周期對應的拍節叫拍節1(P1),后半周期對應的拍節叫拍節2(P2)。上一頁下一頁返回第四節I/O端口、時鐘電路與時序MCS-51采用定時控制方式,因此它有固定的機器周期。一個機器周期總共有12個拍節,分別記作s1p1,s1p2,……s16p2。由于一個機器周期共有12個振蕩脈沖周期,因此機器周期就是振蕩脈沖的12分頻,當振蕩脈沖頻率為12MHz時,一個機器周期為1μs當振蕩脈沖頻率為6MHz時,一個機器周期為2μs.指令周期是最大的時序定時單位,執行一條指令所需要的時間稱之為指令周期。MCS-51的指令周期根據指令的不同,可包含有一至四個機器周期。上一頁返回第五節MCS-51單片機工作方式一、復位方式當MCS-51系列單片機的復位引腳RST(全稱RESET)出現2個機器周期以上的高電平時,單片機就執行復位操作。如果RST持續為高電平,單片機就處于循環復位狀態。根據應用的要求,復位操作通常有兩種基本形式:上電復位和上電或開關復位。上電復位要求接通電源后,自動實現復位操作。上電或開關復位要求電源接通后,單片機自動復位,并且在單片機運行期間,用開關操作也能使單片機復位。下一頁返回第五節MCS-51單片機工作方式上電后,由于電容的充電和反相門的作用,使RST持續一段時間的高電平。當單片機已在運行當中時,按下復位鍵K后松開,也能使RST為一段時間的高電平,從而實現上電或開關復位的操作。根據時間操作的經驗,可以依據實際情況給出這兩種復位電路的電容、電阻參考值。通常的復位邏輯電路如圖2-7所示。上一頁下一頁返回第五節MCS-51單片機工作方式二、程序執行方式單片機上電復位和上電或開關復位后,單片機便可進入連續執行程序的狀態。由于復位時已把PC值清零。所以,程序將從0000H單元開始執行。如果用戶需要從別的起始地址開始執行程序,則必須先把該起始地址輸入單片機,然后才能從該起始地址開始執行。單片機從執行程序開始除非遇到設定斷點或軟件出現故障,否則中途不會停止,一直至程序執行完為止。上一頁下一頁返回第五節MCS-51單片機工作方式三、低功耗方式8051在掉電保護情況下,由備用電源給單片機低功耗供電,因此掉電保護方式實際上就進入了低功耗方式。但與HMOS的8051不同,CHMOS的80C51卻有兩種低功耗方式,即待機方式和進入掉電保護方式。要想使單片機進入待機或掉電保護方式,只要執行一條能使IDL或PD位為1的指令就可以完成。如果使用指令使PCON寄存器IDL位置1,則80C51即進入待機方式。這是振蕩器仍然運行,并向中斷邏輯、串行口和定時器/計數器電路提供時鐘,但向CPU提供時鐘的電路被阻斷,因此CPU不能工作,與CPU有關的如SP、PC、PWS、ACC以及全部通用寄存器也都被“凍結”在原狀態。在待機方式下,中斷功能繼續存在。上一頁下一頁返回第五節MCS-51單片機工作方式四、掉電保護方式單片機系統在運行過程中,如發生掉電故障,將會丟失RAM和寄存器中的程序和數據,其后果有時是很嚴重的。為此MCS-51單片機設置有掉電保護措施,進行掉電保護處理,具體做法是,先把有用信息轉存,然后再啟用備用電源維持供電。所謂信息轉存是指當電源出現故障時,應立即將系統的有用信息轉存到內部RAM中。信息轉存是通過中斷服務程序完成的。信息轉存后還應維持內部RAM的供電,才能保護轉存信息不被破壞。為此,系統應裝有備用電源,并在掉電后立即接通備用電源。備用電源由單片機的RST/VPD引腳引入。上一頁返回第六節MCS-51單片機的存儲器一、存儲器的分類程序存儲器一般采用只讀存儲器,因為這種存儲器在電源關斷后,仍能保存程序,在系統上電后,CPU可取出這些指令予以重新執行。數據存儲器一般采用RAM芯片,這種存儲器在電源關斷后,存儲的數據將全部丟失。RAM器件有兩類,即靜態RAM(SRAM)和動態RAM(DRAM)。另外,隨著時代的發展還出現了許多新的或特殊的存儲器。下一頁返回第六節MCS-51單片機的存儲器二、擴展存儲器的編址所謂存儲器編址,就是使用系統提供的地址線,通過適當連接,最終達到一個編址唯一對應存儲器中一個存儲單元的目的。由于存儲器通常都是由多片存儲芯片組成的,為此存儲器編址分為兩個層次,即存儲芯片的選擇和芯片內部存儲單元的選擇。芯片的選擇比較復雜,所謂的存儲器編址,實際上主要是研究芯片的選擇問題。總的來說,芯片的選擇共有兩種方法:譯碼法和線選法。上一頁下一頁返回第六節MCS-51單片機的存儲器所謂譯碼法就是使用譯碼器對系統的高位地址進行譯碼,以其譯碼輸出作為存儲芯片的片選信號。這是一種常用的存儲器編址方法,能有效地利用存儲空間,適用于大容量多芯片存儲器擴展。譯碼電路可以使用現有的譯碼器芯片,圖2-8位譯碼器芯片,表2-4為真值表。常用的譯碼形式有2-4譯碼,3-8譯碼以及4-16譯碼等。上一頁下一頁返回第六節MCS-51單片機的存儲器三、程序存儲器的擴展程序存儲器擴展使用只讀存儲器芯片,只讀存儲器簡稱為ROM。MCS-51單片機程序存儲器的尋址空間為64KB,對于8051/8751片內程序存儲器為4KB的ROM或EPROM,在單片機的應用系統中,片內的存儲容量往往不夠,特別是8031,片內沒有程序存儲器,必須外擴程序存儲器。圖2-9為程序存儲器的擴展圖。上一頁下一頁返回第六節MCS-51單片機的存儲器CPU在由外部程序存儲器取指令時,16位地址的低8位(PCL)由P0口輸出,高8位(PCH)由P2口輸出,而指令的8位指令碼而通過P0口輸入。CPU讀取的指令有兩種情況:一是不訪問數據存儲器的指令;二是訪問數據存儲器的指令。在不執行MOVEX指令時,P2口專門用于輸出PCH中的內容,因有鎖存功能,可直接與外部存儲器的地址線相連。P0口除了輸出PCL中的內容外,還要輸入指令,所以,必須用ALE信號鎖存PCL。在每個機器周期中,允許地址鎖存信號ALE兩次有效,且在下降沿時鎖存PCL。ALE信號的頻率是振蕩頻率的1/6,可用來做外部時鐘和定時時鐘。對而言,也是每個機器中期兩次有效,適用于選通外部程序存儲器,使指令由P0口進入片內。上一頁下一頁返回第六節MCS-51單片機的存儲器MCS-51單片機應用系統中使用得最多的EPROM程序存儲器時Intel公司典型的27系列芯片,如2764、27128和27512等芯片。EPROM一般都有五種工作方式:(1)讀方式:一般系統工作在這種方式。進入這種方式的條件是使片選控制線為低,同時讓輸出允許控制線為低,就可將指定地址單元的內容從數據總線上讀出。(2)維持方式:當片選控制為高電平時,芯片進入維持方式,這時輸出高阻抗懸浮狀態,不占用數據總線。上一頁下一頁返回第六節MCS-51單片機的存儲器(3)編程方式:在Vpp端加上規定好的高壓,和端加上合適的電平,就能將數據線上的數據固化到指定的地址單元。(4)編程校核方式:在Vpp端保持相應的高壓,再按讀出方式操作,讀出編程固化好的內容,以校核寫入的內容是否正確。(5)編程禁止方式:當片選信號面無效時,輸出呈高阻狀態。上一頁下一頁返回第六節MCS-51單片機的存儲器四、數據存取器的擴展MCS-51芯片內部具有128B空間的RAM存儲器,它們可以作為寄存器、堆棧、數據緩沖器。CPU對其內部RAM有豐富的操作指令,因此這個RAM是十分珍貴的資源。在許多系統中,僅僅片內的RAM存儲器往往不夠,在這種情況下,可以擴展外部數據存儲器。圖2-11給出了單片機擴展RAM的電路結構。圖中P0口分時傳動RAM的低8位地址和數據,P2口為高8位地址線,用于對RAM進行頁尋址。在外部RAM讀/寫周期,CPU產生讀寫選通信號。上一頁下一頁返回第六節MCS-51單片機的存儲器外部數據存儲器讀寫的時序通常是,在其讀周期中,P2口輸出外部RAM單元的高8位地址,P0口分時傳送低8位地址及數據。當地址鎖存允許信號ALE為高電平時,P0口輸出的地址信息有效,ALE的下降沿將此地址打入外部地址鎖存器,接著P0口變為輸入方式,讀信號有效,選通外部RAM,相應存儲單元的內容出現在P0口,由CPU讀入累加器。外部數據存儲器寫周期波形,其操作過程與讀周期類似。寫操作時,在ALE下降為低電平以后,寫信號才有效,P0口上出現的數據寫入相應的RAM單元。上一頁返回圖2-18051單片機的組成結構圖返回圖2-28051單片機的引腳信號返回表2-1PSW狀態字的組成返回圖2-3MCS-51內部數據區返回表2-2寄存器工作區的分配返回圖2-4堆棧的結構返回圖2-5程序存儲器的結構返回表2-3中斷向量的入口地址返回圖2-6內部和外部時鐘電路返回圖2-7復位電路邏輯圖返回圖2-8譯碼器芯片返回表2-4真值表返回圖2-9程序存儲器的擴展圖返回圖2-11外部數據存儲器的擴展返回第三章MCS-51單片機系統程序設計第一節MCS-51指令系統概述第二節MCS-51單片機指令詳解第三節MCS-51單片機系統程序設計實例第一節MCS-51指令系統概述一、概述MCS-51指令系統是一種簡明易掌握、效率較高的指令系統。MCS-51的基本指令共111條,其中單字節指令49條,雙字節指令45條,三字節指令17條。從指令的執行時間來看,單機器周期指令64條,雙機器周期指令45條,只有乘、除兩條指令的執行時間為4個機器周期。指令的表示方法稱之為指令格式,其內容包括指令的長度和指令內部信息的安排等。一條指令通常由兩部分組成,即操作碼和操作數。下一頁返回第一節MCS-51指令系統概述通常在MCS-51指令系統中,有一字節、二字節和三字節等不同長度的指令。一字節指令只有一個字節,操作碼和操作數信息同在其中。二字節指令包括兩個字節,其中一個字節為操作碼,第二個字節是操作數。三字節指令中,操作碼占一個字節,操作數占兩個字節,其中操作數既可能是數據,也可能是地址。二、尋址方式MCS-51共有5種尋址方式,現介紹如下:上一頁下一頁返回第一節MCS-51指令系統概述1.立即尋址操作數就寫在指令中,和操作碼一起放在程序存儲器中。把“#”號放在立即數前面,以表示該尋址方式為立即尋址,如#20H。2.寄存器尋址操作數放在寄存中,在指令中直接以寄存器的名字來表示操作數的地址。例如MOVA,R0就屬于寄存器尋址,即將RO寄存器的內容送到累加器A中。3.直接尋址操作數放在單片機的內部RAM某單元中,在指令中直接寫出該單元的地址。如前例的ADDA,70H中的70H。上一頁下一頁返回第一節MCS-51指令系統概述4.寄存器間接尋址寄存器間接尋址方式可用于訪問內部RAM或外部數據存儲器。訪問內部RAM或外部數據存儲器的低256個字節時,可采用R0或R1作為間接寄存器。這類指令為單字節指令,其最低位是表示采用R0還是R1作為間接寄存器。這種尋址方式的示意圖如圖3-1所示。訪問外部數據存儲器的低256字節時,只要把MOV改為MOVX就行了。訪問外部數據存儲器,還可用數據指針DPTR作為間址寄存器,DPTR是16位寄存器,故它可對整個外部數據存儲器空間(64K)尋址。在執行PUSH和POP指令時,也采用寄存器間接尋址,這是堆棧指針SP用作間接寄存器。上一頁下一頁返回第一節MCS-51指令系統概述5.基址寄存器加變址寄存器間接尋址這種尋址方式用于訪問程序寄存器的一個單元,該單元的地址是基址寄存器(DPTR或PC)的內容與變地址寄存器A的內容之和。這種尋址方式對查表訪問特別有用。尋址方式的示意圖如圖3-2所示。三、指令執行過程和指令符號意義單片機執行程序的過程,實際上就是執行我們所編制程序的過程,即執行逐條指令的過程。計算機每執行一條指令都可分為三個階段進行,即取指令——分析指令——執行指令。上一頁下一頁返回第一節MCS-51指令系統概述取指令的任務是:根據程序計數器PC中的值從程序存儲器讀出現行指令,送到指令寄存器。分析指令階段的任務是:將指令寄存器中的指令操作碼讀出后進行譯碼,分析其指令性質,如指令要求操作數,則尋找操作數地址。計算機執行程序的過程實際上就是逐條指令地重復上述操作過程,直至遇到停機指令或循環等到指令。一般計算機進行工作時,首先要通過外部設備把程序和數據通過輸入接口電路和數據總線送入到存儲器,然后逐條取出執行。但單片機中的程序一般事先都已通過寫入器固化在片內或片外程序存儲器中,因而一開機即可執行指令。上一頁下一頁返回第一節MCS-51指令系統概述指令中操作數的描述符號:Rn——工作寄存器R0~R7Ri——間接尋址寄存器R0、R1Direct——直接地址,包括內部128BRAM單元地址、26個SFR地址。#data——8位常數#data16——16位常數addr16——16位目的地址addr11——11位目的地址rel——8位帶符號的偏移地址DPTR——16位外部數據指針寄存器上一頁下一頁返回第一節MCS-51指令系統概述bit——可直接位尋址的位A——累加器AB——寄存器BC——進、借位標志位,或位累加器@——間接寄存器或基址寄存器的前綴/——指定位求反(x)——x中的內容((x))——x中的地址中的內容
——當前指令存放的地址上一頁返回第二節MCS-51單片機指令詳解一、數據傳輸指令1.累加器相關的數據傳輸指令以下指令的功能是把源操作數的內容送入累加器A,源操作數有寄存器尋址、直接尋址、間接尋址和立即尋址等方式。2.內部RAM單元之間的數據傳輸指令下一頁返回第二節MCS-51單片機指令詳解內部RAM單元之間的數據傳輸可以使用直接尋址、寄存器尋址以及寄存器間接尋址方式。3.外部存儲器數據傳輸指令外部RAM傳輸指令通常使用間接尋址的方式,主要可以分為以Ri進行間接尋址和使用16位的DPTR進行的間接尋址。針對外部RAM的操作只能通過累加器A來完成,MCS-51系統中沒有專門的存儲器讀寫指令,實際上這些傳輸指令就是讀寫指令,為了區分是外部寄存器,特別是指令助記符上增加了“X”代表外部之意。具體的指令如下:上一頁下一頁返回第二節MCS-51單片機指令詳解采用Ri的指令有:采用DPTR的指令有:上一頁下一頁返回第二節MCS-51單片機指令詳解4.數據交換指令數據交換主要是在內部RAM單元與累加器A之間進行,有整字節交換、半字節交換和累加器高低半字節交換指令。源操作數有寄存器尋址、直接尋址和寄存器間接尋址等方式,例如:上一頁下一頁返回第二節MCS-51單片機指令詳解5.堆棧指令在MCS-51內部RAM中可以設定一個后進先出LIFO的區域作為一個堆棧。在特殊功能寄存器中有一個堆棧指針SP,它指出棧頂的位置,在指令系統中有兩條用于數據操作的棧操作指令。首先是入棧指令,這條指令的功能是首先將棧指針SP加1,然后把直接地址指出的內容送到棧指針SP指示的內部RAM單元中。還有對應的出棧指令,出棧指令是將當前堆棧指針寄存器SP所指示的單元的內容傳送到該指令指定的直接尋址單元中去,然后SP中的內容減1.堆棧操作實際上是通過堆棧指示器SP進行的讀寫操作,是以SP為間址寄存器的間接尋址方式。因為SP是唯一的,所以在指令中把通過SP的間接尋址的操作數項隱含了,只表示出直接尋址的操作數項。上一頁下一頁返回第二節MCS-51單片機指令詳解二、算術運算指令1.加法指令在加法指令中,又分位普通加法和帶進位的加法。這組加法指令的功能是把所指出的字節變量與累加器A的內容相加,其結果放在累加器A中。如果位7有進位輸出,則置“1”進位標志Cy,否則對Cy清“0”,如果位3有進位輸出,置“1”輔助進位標志Ac,否則對Ac清“0”;如果位6有進位輸出而位7沒有進位,或者位7有進位輸出而位6沒有進位,則置“1”溢出標志OV,否則對OV清“0”。源操作數有寄存器尋址、直接尋址、寄存器間接尋址和立即尋址等方式。帶進位的加法,除了與上述的運算相似外,還增加了進位標制Cy參加運算;上一頁下一頁返回第二節MCS-51單片機指令詳解上一頁下一頁返回第二節MCS-51單片機指令詳解2.減法指令通常的減法運算都帶有借位,這與帶進位的加法十分類似:上一頁下一頁返回第二節MCS-51單片機指令詳解3.增1減1指令這些指令可以實現對相應的操作數的增1和減1操作,這種操作不會影響PSW的狀態,具體指令如下:以上為自增1運算,只需將INC更改為DEC,則可以實現減1運算,但增1運算中還有INCDPTR,實現DPTR增1,而減1中卻沒有這條指令。上一頁下一頁返回第二節MCS-51單片機指令詳解4.乘除指令MULABDIVABMUL為乘法指令,其功能是把累加器A和寄存器B中的無符號8位整數相乘,其16位積得低位字節在累加器A中,高位字節在B中。如果積大于255,則置位溢出標志位OV,否則對OV清“0”。進位標志位總是清“0”。DIV為除法指令,該指令的功能是把累加器A中8位無符號整數除以B中的8位無符號整數,所得的商(為整數)存放在累加器A中,余數在寄存器B中,清“0”Cy和溢出標志位OV。如果B得內容為“0”(除數為“0”),則結果A,B中的內容不定,并置位溢出標志位OV。上一頁下一頁返回第二節MCS-51單片機指令詳解5.十進制調整指令DAA這條指令對累加器A由前兩個變量(壓縮的BCD碼)相加的結果進行十進制調整使A中的結果為二進制碼數。三、邏輯運算指令邏輯運算指令包括與、或、異或、循環、累加器清零與求反指令。這些指令中的操作數都是8位,它們在執行時,不影響標志位。上一頁下一頁返回第二節MCS-51單片機指令詳解1.與(AND)邏輯運算指令邏輯運算都是按位進行的,邏輯與運算用符號∧表示。以上這幾條指令運算結果存放在A中,下面這兩條指令的運算結果則存放在直接地址的地址單元中:上一頁下一頁返回第二節MCS-51單片機指令詳解2.或(OR)邏輯運算指令邏輯或運算用符號∨表示。以上幾條指令運算結果存放在A中,下面這兩條指令的運算結果則存放在直接尋址的地址單元中:上一頁下一頁返回第二節MCS-51單片機指令詳解3.異或邏輯運算指令邏輯異或運算的規則是,兩運算數相同時為假(0),兩運算數相異時為真(1),這種運算用符號表示。以上這幾條指令運算結果存放在A中,下面這兩條指令的運算結果則存放在直接地址的地址單元中:上一頁下一頁返回第二節MCS-51單片機指令詳解4.累加器清零和求反指令四、控制轉移指令控制轉移指令包括無條件轉移指令、條件轉移指定、比較轉移指令、循環轉移指令及調用與返回指令。1.無條件轉移指令這里又分為長轉移、短轉移、絕對轉移和變址尋址轉移4種方式。長轉移指令執行時可以把指令的第二和第三字節分別裝入PC的高位和低位字節中,無條件地轉向指定地址。轉移的目標地址可以在64K程序存儲器地址空間的任何地方。指令格式如下:上一頁下一頁返回第二節MCS-51單片機指令詳解對于短轉移指令,在執行時在PC加2之后,把指令的有符號的偏移量rel加到PC上,并計算出轉向地址。因此轉向的目標地址可以在這條指令前128字節到后127字節之間。指令格式如下:絕對轉移指令是2KB范圍內的無條件跳轉指令。AJMP把MCS-51的64K程序存儲器空間劃分為32個區,每個區為2K字節,轉移目標地址必須與AJMP下一條指令的第一個字節在同一2KB范圍內,否則,將引起混亂,如果AJMP正好落在區底的兩個單元內,程序就轉移到下一個區中去了,這時不會出現問題。上一頁下一頁返回第二節MCS-51單片機指令詳解執行該指令時,先將PC加2,然后把addr11送入PC的低11位,PC高位不變,程序轉移到指定的地方。指令格式如下:變址尋址轉移指令的功能是把累加器中8位元符號數與數據指針DPTR的16位數相加,結果作為下條指令地址送入PC,不改變累加器和數據指針DPTR內容,也不影響標志。指令格式如下:上一頁下一頁返回第二節MCS-51單片機指令詳解2.條件轉移指令條件轉移指令又可以分為判零轉移、數值比較轉移和減1轉移三種。判零轉移是有條件的相對轉移指令,指令如下:上一頁下一頁返回第二節MCS-51單片機指令詳解數值比較轉移指令的功能是比較前面兩個操作數的大小,如果他們的值不相等則轉移,在PC加到下一條指令的起始地址后,通過把指令最后一個字節的有符號的相對偏移量加到PC上,并計算出轉向地址。如果第一操作數(無符號數)小于第二操作數(無符號整數),則置進位標志位Cy,否則對Cy清“0”,不影響任何一個操作數的內容。指令格式如下:上一頁下一頁返回第二節MCS-51單片機指令詳解這組指令將源操作數(Rn,direct)減1,結果回送到源操作數寄存器或存儲器中去。如果結果不為0則轉移。源操作數有寄存器尋址和直接尋址。允許程序員把內部RAM單元用作程序循環計數器。指令格式如下:DJNZRn,relDJNZdirect,rel3.子程序調用和返回指令子程序結構是一種重要的程序結構。在一個程序中經常遇到反復多次執行程序段的情況,如果重復書寫這個程序段,會使程序變得冗長而雜亂,因而采用了功能較為重復的子程序。上一頁下一頁返回第二節MCS-51單片機指令詳解調用和返回構成了子程序調用的完整過程。為了實現這一過程,必須有子程序調用指令和返回指令。返回指令則應該是子程序的最后一條指令。執行完這條指令之后,程序返回主程序斷點處繼續執行。上一頁下一頁返回第二節MCS-51單片機指令詳解還有子程序返回指令RET和RETI,分別放置了在子程序和中斷服務程序的最后。4、空操作指令這條語句什么也不做,消耗一個機器周期的時間,通常用于程序的延時。上一頁下一頁返回第二節MCS-51單片機指令詳解五、位操作指令1.數據位傳送指令這組指令的功能是把由源操作數指出的位變量送到目的操作數指定的單元中去。其中一個操作數必須為進位標志,另一個可以是任何直接尋址位。不影響其他寄存器或標志。指令格式如下:上一頁下一頁返回第二節MCS-51單片機指令詳解2.修改變量指令這組指令將操作數指出的位清“0”、取反、置“1”,不影響其他標志。上一頁下一頁返回第二節MCS-51單片機指令詳解3.位變量的邏輯運算實際上位運算全部是邏輯運算,共有與、或、非三種指令。這里僅以與運算為例來說明,或運算符位ORL,非運算已在上文中替代。上一頁下一頁返回第二節MCS-51單片機指令詳解4.條件轉移類指令與前文介紹的條件轉移指令類似,位運算也可以進行條件轉移。上一頁返回第三節MCS-51單片機系統程序設計實例一、匯編語言程序的基本結構各種計算機的匯編語言的語法規則基本相同,且具有相同的語句格式。先以MCS-51匯編語言作具體說明。MCS-51匯編語言的語句格式表示如下:下一頁返回第三節MCS-51單片機系統程序設計實例其中,方括號括起來的是可選部分,可有可無,視需要而定。標號是指令的符號的地址,有了標號,程序中的其他語句才能訪問該語句。標號的規則:標號由1~8個ASCII字符組成,但頭一個字符必須是字母,其余可以是字母,數字或其他特定字符。不能使用本匯編語言已定義了符號作為符號,如指令助記符、偽指令助記符以及寄存器的符號名稱。標號后必須跟以冒號(:)同一標號在一個程序中只能定義一次,不能重復定義。上一頁下一頁返回第三節MCS-51單片機系統程序設計實例一條語句可以有標號,也可以沒有標號,標號的有無取決于本程序中的其他語句是否需要訪問這條語句操作碼用于規定語句執行的操作內容。操作碼是以指令助記符或偽指令助記符表示的,操作碼是匯編指令格式中唯一不能空缺的部分。操作數用于給指令和操作提示數據或地址。注釋不屬于語句的功能部分,它只是對語句的解釋說明。分界符用于把語句格式中的各部分隔開,以便于匯編語言程序區分,包括空格,冒號,分號或逗號等多種符號,在MCS-51中,冒號(:)用于標號之后;空格()用于操作碼和操作數之間;逗號(,)用于操作數之間;分號(;)用于注釋之前。上一頁下一頁返回第三節MCS-51單片機系統程序設計實例匯編語言程序的結構形式主要分為三種:順序結構,分支結構和循環結構。順序結構是最簡單的程序結構,在順序結構中既無分支,循環,也不調用子程序,程序執行時一條一條地按順序執行指令。分支結構使用條件轉移指令實現,即根據條件對程序的執行進行判斷,滿足條件則進行程序轉移,否則程序順序執行。循環結構則在程序的某個區段進行反復的運行,直到滿足某種條件結束,而有的程序則完全不能跳出的死循環,將會無休止地運行下去。上一頁下一頁返回第三節MCS-51單片機系統程序設計實例二、簡單程序設計簡單程序設計指的就是按照順序來執行程序,程序中可以包含某種算法。[實例]求解多項式y=2a-b。假設操作數a放在寄存器R3,操作數b放在寄存器R4;結果分別放在寄存器R5和R6.上一頁下一頁返回第三節MCS-51單片機系統程序設計實例上一頁下一頁返回第三節MCS-51單片機系統程序設計實例三、分支和循環程序在許多情況下,需要根據不同的條件轉向不同的處理程序,這種結構的程序稱為分支程序。MCS-51單片機設置的條件轉移指令、比較轉移指令和位轉移指令可以實現程序的分支。圖3-3為分支程序框圖。[實例]設a存放在累加器R2中,b存放在寄存器R3中,要求按下式計算y值,并將結果y存于累加器A中。上一頁下一頁返回第三節MCS-51單片機系統程序設計實例上一頁下一頁返回第三節MCS-51單片機系統程序設計實例循環程序是指一段反復執行的程序。圖3-4為循環程序框圖。[實例]將內部數據存儲器38H~6FH單元的內容傳送到外部數據存儲器以1000H開始的連續單元中去。38H~6FH單元向外傳數據,需傳送56次。將R6作為循環計數寄存器,有如下的流程圖:上一頁下一頁返回第三節MCS-51單片機系統程序設計實例四、查表程序查表就是根據自變量x的值,在表總查找y,使y=f(x)。x和y可以使各種類型的數據。表的結構也是多種多樣的。表格可以放在程序存儲器中,也可以存放在數據存儲器中。在單片機應用系統中,這類程序使用頻繁。利用它能避免進行復雜的運算或轉換過程,故它廣泛應用于顯示、打印字符的轉換以及數據補償、計算、轉換等程序中。一般情況下,對自變量x是有變化規律的數據,可以根據這一規律形成地址,對應的y則存放于該地址單元中;對x是沒有變化規律的數據,在表中存放x及其對應的y值。上一頁下一頁返回第三節MCS-51單片機系統程序設計實例[實例]試計算發動機
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新疆客運資格證實操試題
- 2025年創新創業管理專業研究生入學考試試題及答案
- 未來的生活想象想象并描寫細節類作文(6篇)
- 小品(賣藥之八仙過海)劇本
- 某超市講解服務制度
- 2025年柔性制造單元(FMC)項目提案報告
- 運動場館設計與運營合作協議
- 2025年壓縮天然氣項目申請報告
- 2025年電梯司機(中級)電梯設備維護保養與故障排除測評試題
- 2025年物流師(初級)職業技能鑒定試卷物流企業人力資源戰略規劃
- 食堂成本核算方法
- 醫院培訓課件:《新生兒疾病篩查采血技術及信息平臺的使用》
- 江蘇非物質文化遺產研學旅行產品的開發與推廣
- NIH-FDA-IND-IDE-II期III期臨床試驗方案模板
- 衛生院法律法規知識培訓課件
- 小學課件培訓:AI賦能教育創新
- 國開公共部門人力資源管理期末復習題
- 2025春季學期國開電大專科《行政組織學》一平臺在線形考(形考任務1至5)試題及答案
- 個人墊付資金協議書
- 核磁共振與DSA融合技術的臨床應用-全面剖析
- 2025春季學期國開電大專科《個人與團隊管理》一平臺在線形考(形考任務3)試題及答案
評論
0/150
提交評論