汽車(chē)電子技術(shù)與單片機(jī)第3章_第1頁(yè)
汽車(chē)電子技術(shù)與單片機(jī)第3章_第2頁(yè)
汽車(chē)電子技術(shù)與單片機(jī)第3章_第3頁(yè)
汽車(chē)電子技術(shù)與單片機(jī)第3章_第4頁(yè)
汽車(chē)電子技術(shù)與單片機(jī)第3章_第5頁(yè)
已閱讀5頁(yè),還剩50頁(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)介

第三章MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)第一節(jié)MCS-51指令系統(tǒng)概述第二節(jié)MCS-51單片機(jī)指令詳解第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例第一節(jié)MCS-51指令系統(tǒng)概述一、概述MCS-51指令系統(tǒng)是一種簡(jiǎn)明易掌握、效率較高的指令系統(tǒng)。MCS-51的根本指令共111條,其中單字節(jié)指令49條,雙字節(jié)指令45條,三字節(jié)指令17條。從指令的執(zhí)行時(shí)間來(lái)看,單機(jī)器周期指令64條,雙機(jī)器周期指令45條,只有乘、除兩條指令的執(zhí)行時(shí)間為4個(gè)機(jī)器周期。指令的表示方法稱(chēng)之為指令格式,其內(nèi)容包括指令的長(zhǎng)度和指令內(nèi)部信息的安排等。一條指令通常由兩局部組成,即操作碼和操作數(shù)。下一頁(yè)返回第一節(jié)MCS-51指令系統(tǒng)概述通常在MCS-51指令系統(tǒng)中,有一字節(jié)、二字節(jié)和三字節(jié)等不同長(zhǎng)度的指令。一字節(jié)指令只有一個(gè)字節(jié),操作碼和操作數(shù)信息同在其中。二字節(jié)指令包括兩個(gè)字節(jié),其中一個(gè)字節(jié)為操作碼,第二個(gè)字節(jié)是操作數(shù)。三字節(jié)指令中,操作碼占一個(gè)字節(jié),操作數(shù)占兩個(gè)字節(jié),其中操作數(shù)既可能是數(shù)據(jù),也可能是地址。二、尋址方式MCS-51共有5種尋址方式,現(xiàn)介紹如下:上一頁(yè)下一頁(yè)返回第一節(jié)MCS-51指令系統(tǒng)概述1.立即尋址操作數(shù)就寫(xiě)在指令中,和操作碼一起放在程序存儲(chǔ)器中。把“#〞號(hào)放在立即數(shù)前面,以表示該尋址方式為立即尋址,如#20H。2.存放器尋址操作數(shù)放在存放中,在指令中直接以存放器的名字來(lái)表示操作數(shù)的地址。例如MOVA,R0就屬于存放器尋址,即將RO存放器的內(nèi)容送到累加器A中。3.直接尋址操作數(shù)放在單片機(jī)的內(nèi)部RAM某單元中,在指令中直接寫(xiě)出該單元的地址。如前例的ADDA,70H中的70H。上一頁(yè)下一頁(yè)返回第一節(jié)MCS-51指令系統(tǒng)概述4.存放器間接尋址存放器間接尋址方式可用于訪問(wèn)內(nèi)部RAM或外部數(shù)據(jù)存儲(chǔ)器。訪問(wèn)內(nèi)部RAM或外部數(shù)據(jù)存儲(chǔ)器的低256個(gè)字節(jié)時(shí),可采用R0或R1作為間接存放器。這類(lèi)指令為單字節(jié)指令,其最低位是表示采用R0還是R1作為間接存放器。這種尋址方式的示意圖如圖3-1所示。訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器的低256字節(jié)時(shí),只要把MOV改為MOVX就行了。訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,還可用數(shù)據(jù)指針DPTR作為間址存放器,DPTR是16位存放器,故它可對(duì)整個(gè)外部數(shù)據(jù)存儲(chǔ)器空間〔64K〕尋址。在執(zhí)行PUSH和POP指令時(shí),也采用存放器間接尋址,這是堆棧指針SP用作間接存放器。上一頁(yè)下一頁(yè)返回第一節(jié)MCS-51指令系統(tǒng)概述5.基址存放器加變址存放器間接尋址這種尋址方式用于訪問(wèn)程序存放器的一個(gè)單元,該單元的地址是基址存放器〔DPTR或PC〕的內(nèi)容與變地址存放器A的內(nèi)容之和。這種尋址方式對(duì)查表訪問(wèn)特別有用。尋址方式的示意圖如圖3-2所示。三、指令執(zhí)行過(guò)程和指令符號(hào)意義單片機(jī)執(zhí)行程序的過(guò)程,實(shí)際上就是執(zhí)行我們所編制程序的過(guò)程,即執(zhí)行逐條指令的過(guò)程。計(jì)算機(jī)每執(zhí)行一條指令都可分為三個(gè)階段進(jìn)行,即取指令——分析指令——執(zhí)行指令。上一頁(yè)下一頁(yè)返回第一節(jié)MCS-51指令系統(tǒng)概述取指令的任務(wù)是:根據(jù)程序計(jì)數(shù)器PC中的值從程序存儲(chǔ)器讀出現(xiàn)行指令,送到指令存放器。分析指令階段的任務(wù)是:將指令存放器中的指令操作碼讀出后進(jìn)行譯碼,分析其指令性質(zhì),如指令要求操作數(shù),那么尋找操作數(shù)地址。計(jì)算機(jī)執(zhí)行程序的過(guò)程實(shí)際上就是逐條指令地重復(fù)上述操作過(guò)程,直至遇到停機(jī)指令或循環(huán)等到指令。一般計(jì)算機(jī)進(jìn)行工作時(shí),首先要通過(guò)外部設(shè)備把程序和數(shù)據(jù)通過(guò)輸入接口電路和數(shù)據(jù)總線送入到存儲(chǔ)器,然后逐條取出執(zhí)行。但單片機(jī)中的程序一般事先都已通過(guò)寫(xiě)入器固化在片內(nèi)或片外程序存儲(chǔ)器中,因而一開(kāi)機(jī)即可執(zhí)行指令。上一頁(yè)下一頁(yè)返回第一節(jié)MCS-51指令系統(tǒng)概述指令中操作數(shù)的描述符號(hào):Rn——工作存放器R0~R7Ri——間接尋址存放器R0、R1Direct——直接地址,包括內(nèi)部128BRAM單元地址、26個(gè)SFR地址。#data——8位常數(shù)#data16——16位常數(shù)addr16——16位目的地址addr11——11位目的地址rel——8位帶符號(hào)的偏移地址DPTR——16位外部數(shù)據(jù)指針存放器上一頁(yè)下一頁(yè)返回第一節(jié)MCS-51指令系統(tǒng)概述bit——可直接位尋址的位A——累加器AB——存放器BC——進(jìn)、借位標(biāo)志位,或位累加器@——間接存放器或基址存放器的前綴/——指定位求反〔x〕——x中的內(nèi)容〔〔x〕〕——x中的地址中的內(nèi)容——當(dāng)前指令存放的地址上一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解一、數(shù)據(jù)傳輸指令1.累加器相關(guān)的數(shù)據(jù)傳輸指令以下指令的功能是把源操作數(shù)的內(nèi)容送入累加器A,源操作數(shù)有存放器尋址、直接尋址、間接尋址和立即尋址等方式。2.內(nèi)部RAM單元之間的數(shù)據(jù)傳輸指令下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解內(nèi)部RAM單元之間的數(shù)據(jù)傳輸可以使用直接尋址、存放器尋址以及存放器間接尋址方式。3.外部存儲(chǔ)器數(shù)據(jù)傳輸指令外部RAM傳輸指令通常使用間接尋址的方式,主要可以分為以Ri進(jìn)行間接尋址和使用16位的DPTR進(jìn)行的間接尋址。針對(duì)外部RAM的操作只能通過(guò)累加器A來(lái)完成,MCS-51系統(tǒng)中沒(méi)有專(zhuān)門(mén)的存儲(chǔ)器讀寫(xiě)指令,實(shí)際上這些傳輸指令就是讀寫(xiě)指令,為了區(qū)分是外部存放器,特別是指令助記符上增加了“X〞代表外部之意。具體的指令如下:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解采用Ri的指令有:采用DPTR的指令有:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解4.數(shù)據(jù)交換指令數(shù)據(jù)交換主要是在內(nèi)部RAM單元與累加器A之間進(jìn)行,有整字節(jié)交換、半字節(jié)交換和累加器上下半字節(jié)交換指令。源操作數(shù)有存放器尋址、直接尋址和存放器間接尋址等方式,例如:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解5.堆棧指令在MCS-51內(nèi)部RAM中可以設(shè)定一個(gè)后進(jìn)先出LIFO的區(qū)域作為一個(gè)堆棧。在特殊功能存放器中有一個(gè)堆棧指針SP,它指出棧頂?shù)奈恢?,在指令系統(tǒng)中有兩條用于數(shù)據(jù)操作的棧操作指令。首先是入棧指令,這條指令的功能是首先將棧指針SP加1,然后把直接地址指出的內(nèi)容送到棧指針SP指示的內(nèi)部RAM單元中。還有對(duì)應(yīng)的出棧指令,出棧指令是將當(dāng)前堆棧指針存放器SP所指示的單元的內(nèi)容傳送到該指令指定的直接尋址單元中去,然后SP中的內(nèi)容減1.堆棧操作實(shí)際上是通過(guò)堆棧指示器SP進(jìn)行的讀寫(xiě)操作,是以SP為間址存放器的間接尋址方式。因?yàn)镾P是唯一的,所以在指令中把通過(guò)SP的間接尋址的操作數(shù)項(xiàng)隱含了,只表示出直接尋址的操作數(shù)項(xiàng)。上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解二、算術(shù)運(yùn)算指令1.加法指令在加法指令中,又分位普通加法和帶進(jìn)位的加法。這組加法指令的功能是把所指出的字節(jié)變量與累加器A的內(nèi)容相加,其結(jié)果放在累加器A中。如果位7有進(jìn)位輸出,那么置“1〞進(jìn)位標(biāo)志Cy,否那么對(duì)Cy清“0〞,如果位3有進(jìn)位輸出,置“1〞輔助進(jìn)位標(biāo)志Ac,否那么對(duì)Ac清“0〞;如果位6有進(jìn)位輸出而位7沒(méi)有進(jìn)位,或者位7有進(jìn)位輸出而位6沒(méi)有進(jìn)位,那么置“1〞溢出標(biāo)志OV,否那么對(duì)OV清“0〞。源操作數(shù)有存放器尋址、直接尋址、存放器間接尋址和立即尋址等方式。帶進(jìn)位的加法,除了與上述的運(yùn)算相似外,還增加了進(jìn)位標(biāo)制Cy參加運(yùn)算;上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解2.減法指令通常的減法運(yùn)算都帶有借位,這與帶進(jìn)位的加法十分類(lèi)似:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解3.增1減1指令這些指令可以實(shí)現(xiàn)對(duì)相應(yīng)的操作數(shù)的增1和減1操作,這種操作不會(huì)影響PSW的狀態(tài),具體指令如下:以上為自增1運(yùn)算,只需將INC更改為DEC,那么可以實(shí)現(xiàn)減1運(yùn)算,但增1運(yùn)算中還有INCDPTR,實(shí)現(xiàn)DPTR增1,而減1中卻沒(méi)有這條指令。上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解4.乘除指令MULABDIVABMUL為乘法指令,其功能是把累加器A和存放器B中的無(wú)符號(hào)8位整數(shù)相乘,其16位積得低位字節(jié)在累加器A中,高位字節(jié)在B中。如果積大于255,那么置位溢出標(biāo)志位OV,否那么對(duì)OV清“0〞。進(jìn)位標(biāo)志位總是清“0〞。DIV為除法指令,該指令的功能是把累加器A中8位無(wú)符號(hào)整數(shù)除以B中的8位無(wú)符號(hào)整數(shù),所得的商〔為整數(shù)〕存放在累加器A中,余數(shù)在存放器B中,清“0〞Cy和溢出標(biāo)志位OV。如果B得內(nèi)容為“0〞〔除數(shù)為“0〞〕,那么結(jié)果A,B中的內(nèi)容不定,并置位溢出標(biāo)志位OV。上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解5.十進(jìn)制調(diào)整指令DAA這條指令對(duì)累加器A由前兩個(gè)變量〔壓縮的BCD碼〕相加的結(jié)果進(jìn)行十進(jìn)制調(diào)整使A中的結(jié)果為二進(jìn)制碼數(shù)。三、邏輯運(yùn)算指令邏輯運(yùn)算指令包括與、或、異或、循環(huán)、累加器清零與求反指令。這些指令中的操作數(shù)都是8位,它們?cè)趫?zhí)行時(shí),不影響標(biāo)志位。上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解1.與〔AND〕邏輯運(yùn)算指令邏輯運(yùn)算都是按位進(jìn)行的,邏輯與運(yùn)算用符號(hào)∧表示。以上這幾條指令運(yùn)算結(jié)果存放在A中,下面這兩條指令的運(yùn)算結(jié)果那么存放在直接地址的地址單元中:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解2.或〔OR〕邏輯運(yùn)算指令邏輯或運(yùn)算用符號(hào)∨表示。以上幾條指令運(yùn)算結(jié)果存放在A中,下面這兩條指令的運(yùn)算結(jié)果那么存放在直接尋址的地址單元中:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解3.異或邏輯運(yùn)算指令邏輯異或運(yùn)算的規(guī)那么是,兩運(yùn)算數(shù)相同時(shí)為假〔0〕,兩運(yùn)算數(shù)相異時(shí)為真〔1〕,這種運(yùn)算用符號(hào)表示。以上這幾條指令運(yùn)算結(jié)果存放在A中,下面這兩條指令的運(yùn)算結(jié)果那么存放在直接地址的地址單元中:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解4.累加器清零和求反指令四、控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令包括無(wú)條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指定、比較轉(zhuǎn)移指令、循環(huán)轉(zhuǎn)移指令及調(diào)用與返回指令。1.無(wú)條件轉(zhuǎn)移指令這里又分為長(zhǎng)轉(zhuǎn)移、短轉(zhuǎn)移、絕對(duì)轉(zhuǎn)移和變址尋址轉(zhuǎn)移4種方式。長(zhǎng)轉(zhuǎn)移指令執(zhí)行時(shí)可以把指令的第二和第三字節(jié)分別裝入PC的高位和低位字節(jié)中,無(wú)條件地轉(zhuǎn)向指定地址。轉(zhuǎn)移的目標(biāo)地址可以在64K程序存儲(chǔ)器地址空間的任何地方。指令格式如下:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解對(duì)于短轉(zhuǎn)移指令,在執(zhí)行時(shí)在PC加2之后,把指令的有符號(hào)的偏移量rel加到PC上,并計(jì)算出轉(zhuǎn)向地址。因此轉(zhuǎn)向的目標(biāo)地址可以在這條指令前128字節(jié)到后127字節(jié)之間。指令格式如下:絕對(duì)轉(zhuǎn)移指令是2KB范圍內(nèi)的無(wú)條件跳轉(zhuǎn)指令。AJMP把MCS-51的64K程序存儲(chǔ)器空間劃分為32個(gè)區(qū),每個(gè)區(qū)為2K字節(jié),轉(zhuǎn)移目標(biāo)地址必須與AJMP下一條指令的第一個(gè)字節(jié)在同一2KB范圍內(nèi),否那么,將引起混亂,如果AJMP正好落在區(qū)底的兩個(gè)單元內(nèi),程序就轉(zhuǎn)移到下一個(gè)區(qū)中去了,這時(shí)不會(huì)出現(xiàn)問(wèn)題。上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解執(zhí)行該指令時(shí),先將PC加2,然后把a(bǔ)ddr11送入PC的低11位,PC高位不變,程序轉(zhuǎn)移到指定的地方。指令格式如下:變址尋址轉(zhuǎn)移指令的功能是把累加器中8位元符號(hào)數(shù)與數(shù)據(jù)指針DPTR的16位數(shù)相加,結(jié)果作為下條指令地址送入PC,不改變累加器和數(shù)據(jù)指針DPTR內(nèi)容,也不影響標(biāo)志。指令格式如下:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解2.條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令又可以分為判零轉(zhuǎn)移、數(shù)值比較轉(zhuǎn)移和減1轉(zhuǎn)移三種。判零轉(zhuǎn)移是有條件的相對(duì)轉(zhuǎn)移指令,指令如下:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解數(shù)值比較轉(zhuǎn)移指令的功能是比較前面兩個(gè)操作數(shù)的大小,如果他們的值不相等那么轉(zhuǎn)移,在PC加到下一條指令的起始地址后,通過(guò)把指令最后一個(gè)字節(jié)的有符號(hào)的相對(duì)偏移量加到PC上,并計(jì)算出轉(zhuǎn)向地址。如果第一操作數(shù)〔無(wú)符號(hào)數(shù)〕小于第二操作數(shù)〔無(wú)符號(hào)整數(shù)〕,那么置進(jìn)位標(biāo)志位Cy,否那么對(duì)Cy清“0〞,不影響任何一個(gè)操作數(shù)的內(nèi)容。指令格式如下:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解這組指令將源操作數(shù)(Rn,direct)減1,結(jié)果回送到源操作數(shù)存放器或存儲(chǔ)器中去。如果結(jié)果不為0那么轉(zhuǎn)移。源操作數(shù)有存放器尋址和直接尋址。允許程序員把內(nèi)部RAM單元用作程序循環(huán)計(jì)數(shù)器。指令格式如下:DJNZRn,relDJNZdirect,rel3.子程序調(diào)用和返回指令子程序結(jié)構(gòu)是一種重要的程序結(jié)構(gòu)。在一個(gè)程序中經(jīng)常遇到反復(fù)屢次執(zhí)行程序段的情況,如果重復(fù)書(shū)寫(xiě)這個(gè)程序段,會(huì)使程序變得冗長(zhǎng)而雜亂,因而采用了功能較為重復(fù)的子程序。上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解調(diào)用和返回構(gòu)成了子程序調(diào)用的完整過(guò)程。為了實(shí)現(xiàn)這一過(guò)程,必須有子程序調(diào)用指令和返回指令。返回指令那么應(yīng)該是子程序的最后一條指令。執(zhí)行完這條指令之后,程序返回主程序斷點(diǎn)處繼續(xù)執(zhí)行。上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解還有子程序返回指令RET和RETI,分別放置了在子程序和中斷效勞程序的最后。4、空操作指令這條語(yǔ)句什么也不做,消耗一個(gè)機(jī)器周期的時(shí)間,通常用于程序的延時(shí)。上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解五、位操作指令1.數(shù)據(jù)位傳送指令這組指令的功能是把由源操作數(shù)指出的位變量送到目的操作數(shù)指定的單元中去。其中一個(gè)操作數(shù)必須為進(jìn)位標(biāo)志,另一個(gè)可以是任何直接尋址位。不影響其他存放器或標(biāo)志。指令格式如下:上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解2.修改變量指令這組指令將操作數(shù)指出的位清“0〞、取反、置“1〞,不影響其他標(biāo)志。上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解3.位變量的邏輯運(yùn)算實(shí)際上位運(yùn)算全部是邏輯運(yùn)算,共有與、或、非三種指令。這里僅以與運(yùn)算為例來(lái)說(shuō)明,或運(yùn)算符位ORL,非運(yùn)算已在上文中替代。上一頁(yè)下一頁(yè)返回第二節(jié)MCS-51單片機(jī)指令詳解4.條件轉(zhuǎn)移類(lèi)指令與前文介紹的條件轉(zhuǎn)移指令類(lèi)似,位運(yùn)算也可以進(jìn)行條件轉(zhuǎn)移。上一頁(yè)返回第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例一、匯編語(yǔ)言程序的根本結(jié)構(gòu)各種計(jì)算機(jī)的匯編語(yǔ)言的語(yǔ)法規(guī)那么根本相同,且具有相同的語(yǔ)句格式。先以MCS-51匯編語(yǔ)言作具體說(shuō)明。MCS-51匯編語(yǔ)言的語(yǔ)句格式表示如下:下一頁(yè)返回第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例其中,方括號(hào)括起來(lái)的是可選局部,可有可無(wú),視需要而定。標(biāo)號(hào)是指令的符號(hào)的地址,有了標(biāo)號(hào),程序中的其他語(yǔ)句才能訪問(wèn)該語(yǔ)句。標(biāo)號(hào)的規(guī)那么:標(biāo)號(hào)由1~8個(gè)ASCII字符組成,但頭一個(gè)字符必須是字母,其余可以是字母,數(shù)字或其他特定字符。不能使用本匯編語(yǔ)言已定義了符號(hào)作為符號(hào),如指令助記符、偽指令助記符以及存放器的符號(hào)名稱(chēng)。標(biāo)號(hào)后必須跟以冒號(hào)〔:〕同一標(biāo)號(hào)在一個(gè)程序中只能定義一次,不能重復(fù)定義。上一頁(yè)下一頁(yè)返回第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例一條語(yǔ)句可以有標(biāo)號(hào),也可以沒(méi)有標(biāo)號(hào),標(biāo)號(hào)的有無(wú)取決于本程序中的其他語(yǔ)句是否需要訪問(wèn)這條語(yǔ)句操作碼用于規(guī)定語(yǔ)句執(zhí)行的操作內(nèi)容。操作碼是以指令助記符或偽指令助記符表示的,操作碼是匯編指令格式中唯一不能空缺的局部。操作數(shù)用于給指令和操作提示數(shù)據(jù)或地址。注釋不屬于語(yǔ)句的功能局部,它只是對(duì)語(yǔ)句的解釋說(shuō)明。分界符用于把語(yǔ)句格式中的各局部隔開(kāi),以便于匯編語(yǔ)言程序區(qū)分,包括空格,冒號(hào),分號(hào)或逗號(hào)等多種符號(hào),在MCS-51中,冒號(hào)〔:〕用于標(biāo)號(hào)之后;空格〔〕用于操作碼和操作數(shù)之間;逗號(hào)〔,〕用于操作數(shù)之間;分號(hào)〔;〕用于注釋之前。上一頁(yè)下一頁(yè)返回第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例匯編語(yǔ)言程序的結(jié)構(gòu)形式主要分為三種:順序結(jié)構(gòu),分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)是最簡(jiǎn)單的程序結(jié)構(gòu),在順序結(jié)構(gòu)中既無(wú)分支,循環(huán),也不調(diào)用子程序,程序執(zhí)行時(shí)一條一條地按順序執(zhí)行指令。分支結(jié)構(gòu)使用條件轉(zhuǎn)移指令實(shí)現(xiàn),即根據(jù)條件對(duì)程序的執(zhí)行進(jìn)行判斷,滿足條件那么進(jìn)行程序轉(zhuǎn)移,否那么程序順序執(zhí)行。循環(huán)結(jié)構(gòu)那么在程序的某個(gè)區(qū)段進(jìn)行反復(fù)的運(yùn)行,直到滿足某種條件結(jié)束,而有的程序那么完全不能跳出的死循環(huán),將會(huì)無(wú)休止地運(yùn)行下去。上一頁(yè)下一頁(yè)返回第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例二、簡(jiǎn)單程序設(shè)計(jì)簡(jiǎn)單程序設(shè)計(jì)指的就是按照順序來(lái)執(zhí)行程序,程序中可以包含某種算法。[實(shí)例]求解多項(xiàng)式y(tǒng)=2a-b。假設(shè)操作數(shù)a放在存放器R3,操作數(shù)b放在存放器R4;結(jié)果分別放在存放器R5和R6.上一頁(yè)下一頁(yè)返回第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例上一頁(yè)下一頁(yè)返回第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例三、分支和循環(huán)程序在許多情況下,需要根據(jù)不同的條件轉(zhuǎn)向不同的處理程序,這種結(jié)構(gòu)的程序稱(chēng)為分支程序。MCS-51單片機(jī)設(shè)置的條件轉(zhuǎn)移指令、比較轉(zhuǎn)移指令和位轉(zhuǎn)移指令可以實(shí)現(xiàn)程序的分支。圖3-3為分支程序框圖。[實(shí)例]設(shè)a存放在累加器R2中,b存放在存放器R3中,要求按下式計(jì)算y值,并將結(jié)果y存于累加器A中。上一頁(yè)下一頁(yè)返回第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例上一頁(yè)下一頁(yè)返回第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例循環(huán)程序是指一段反復(fù)執(zhí)行的程序。圖3-4為循環(huán)程序框圖。[實(shí)例]將內(nèi)部數(shù)據(jù)存儲(chǔ)器38H~6FH單元的內(nèi)容傳送到外部數(shù)據(jù)存儲(chǔ)器以1000H開(kāi)始的連續(xù)單元中去。38H~6FH單元向外傳數(shù)據(jù),需傳送56次。將R6作為循環(huán)計(jì)數(shù)存放器,有如下的流程圖:上一頁(yè)下一頁(yè)返回第三節(jié)MCS-51單片機(jī)系統(tǒng)程序設(shè)計(jì)實(shí)例四、查表程序查表就是根據(jù)自變量x的值,在表總查找y,使y=f〔x〕。x和y可以使各種類(lèi)型的數(shù)據(jù)。表的結(jié)構(gòu)也是多種多樣的。表格可以放在程序存儲(chǔ)器中,也可以存放在數(shù)據(jù)存儲(chǔ)器中。在單片機(jī)應(yīng)用系統(tǒng)中,這類(lèi)程序使用頻繁。利用它能防止進(jìn)行復(fù)雜的運(yùn)算或轉(zhuǎn)換過(guò)程,故它廣泛應(yīng)用于顯示、打印字符的轉(zhuǎn)換以及數(shù)據(jù)補(bǔ)償、計(jì)算、轉(zhuǎn)換等程序中。一般情況下,對(duì)自變量x是有變化規(guī)律的數(shù)據(jù),可以根據(jù)這一規(guī)律形成地址,對(duì)應(yīng)的y那么存放于該地址單元中;對(duì)x是沒(méi)有變化規(guī)律的數(shù)據(jù),在表中存放x及其對(duì)應(yīng)的y值。上一頁(yè)下一頁(yè)

溫馨提示

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