版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第三章 51系列單片機(jī)程序設(shè)計(jì)內(nèi)容提要:3-1 匯編語言與指令系統(tǒng)簡(jiǎn)介匯編語言與指令系統(tǒng)簡(jiǎn)介3-2 匯編語言的匯編過程匯編語言的匯編過程3-3 匯編語言的程序設(shè)計(jì)及應(yīng)用匯編語言的程序設(shè)計(jì)及應(yīng)用高級(jí)語言高級(jí)語言:3-1 匯編語言簡(jiǎn)介 一、匯編語言程序設(shè)計(jì)的意義一、匯編語言程序設(shè)計(jì)的意義什么是程序?什么是程序?完成某項(xiàng)特定任務(wù)的指令的集合。完成某項(xiàng)特定任務(wù)的指令的集合。計(jì)算機(jī)按程序一條一條地依次執(zhí)行指令,從而完成指定任務(wù)。計(jì)算機(jī)按程序一條一條地依次執(zhí)行指令,從而完成指定任務(wù)。要讓計(jì)算機(jī)完成各項(xiàng)任務(wù),就應(yīng)設(shè)計(jì)各種程序。要讓計(jì)算機(jī)完成各項(xiàng)任務(wù),就應(yīng)設(shè)計(jì)各種程序。 匯編語言匯編語言:機(jī)器語言機(jī)器語言:程
2、序設(shè)計(jì)語言:程序設(shè)計(jì)語言:用二進(jìn)制代碼表示指令和數(shù)據(jù)。用二進(jìn)制代碼表示指令和數(shù)據(jù)。用助記符表示指令操作功能,用標(biāo)號(hào)表示操作對(duì)象。用助記符表示指令操作功能,用標(biāo)號(hào)表示操作對(duì)象。獨(dú)立于機(jī)器獨(dú)立于機(jī)器,面向過程面向過程,接近自然語言和數(shù)學(xué)表達(dá)式接近自然語言和數(shù)學(xué)表達(dá)式.匯編語言程序的每一條語句都與計(jì)算機(jī)的某一條指令對(duì)應(yīng),所匯編語言程序的每一條語句都與計(jì)算機(jī)的某一條指令對(duì)應(yīng),所以必需熟悉指令系統(tǒng)。以必需熟悉指令系統(tǒng)。指令指令 = 操作碼操作碼 + 操作數(shù)操作數(shù)操作碼操作碼表示了該指令所能執(zhí)行的操作功能表示了該指令所能執(zhí)行的操作功能。操作數(shù)操作數(shù)表示參加操作的數(shù)的本身或操作數(shù)所在的地址。表示參加操作的數(shù)
3、的本身或操作數(shù)所在的地址。MCS-51指令格式:指令格式:標(biāo)號(hào):標(biāo)號(hào): 操作碼助記符操作碼助記符 第一操作數(shù)第一操作數(shù) ,第二操作數(shù),第二操作數(shù) ;注釋;注釋例例4 4、試判斷、試判斷A A中的正負(fù),若為正數(shù),存入中的正負(fù),若為正數(shù),存入2020H H單元;若為負(fù)單元;若為負(fù)數(shù)則存入數(shù)則存入2121H H單元。單元。解:解: JB ACC7JB ACC7,LOOPLOOP MOV 20H MOV 20H,A A SJMP $ SJMP $ LOOP LOOP:MOV 21HMOV 21H,A A SJMP $ SJMP $ 3-3-2 2 匯編語言及匯編過程匯編語言及匯編過程二、匯編程序的匯編
4、過程二、匯編程序的匯編過程 匯編有兩種方法:手工匯編、機(jī)器匯編。匯編有兩種方法:手工匯編、機(jī)器匯編。 1 1、手工匯編:、手工匯編:第一次匯編:確定地址,翻譯成各條機(jī)器碼,字符標(biāo)號(hào)第一次匯編:確定地址,翻譯成各條機(jī)器碼,字符標(biāo)號(hào)原樣寫出;原樣寫出;第二次匯編:標(biāo)號(hào)代真,將字符標(biāo)號(hào)用所計(jì)算出的具體第二次匯編:標(biāo)號(hào)代真,將字符標(biāo)號(hào)用所計(jì)算出的具體地址值或偏移地址值或偏移量代換。量代換。 源程序源程序 目標(biāo)程序目標(biāo)程序 地址地址 ORG 1000HORG 1000H START START:MOV R0MOV R0,2FH 2FH MOV R2 MOV R2,#00H #00H MOV A MOV
5、A,R0 R0 MOV R3 MOV R3,A A INC R3 INC R3 SJMP SJMP NEXT NEXT LOOP LOOP:INC R0 INC R0 CJNE R0 CJNE R0,#44H#44H,NEXTNEXT INC R2 INC R2 NEXT NEXT:DJNZ R3DJNZ R3,LOOPLOOP MOV MOV 2AH2AH,R2 R2 SJMP $ SJMP $ END END 第一次匯編第一次匯編第二次匯編第二次匯編1000 A82F1002 7A001004 E61005 FB1006 0B1007 80NEXT1009 08100A B644NEXT1
6、00D 0A100E DBLOOP1010 8A2A1012 80FEA82F7A00E6FB0B800508B644010ADBF98A2A80FE2 2、機(jī)器匯編、機(jī)器匯編兩次掃描過程。兩次掃描過程。第一次掃描:第一次掃描:檢查語法錯(cuò)誤,確定符號(hào)名字;檢查語法錯(cuò)誤,確定符號(hào)名字; 建立使用的全部符號(hào)名字表;建立使用的全部符號(hào)名字表; 每一符號(hào)名字后跟一對(duì)應(yīng)值(地址或數(shù))。每一符號(hào)名字后跟一對(duì)應(yīng)值(地址或數(shù))。第二次掃描:第二次掃描:是在第一次掃描基礎(chǔ)上,將符號(hào)地址轉(zhuǎn)換成是在第一次掃描基礎(chǔ)上,將符號(hào)地址轉(zhuǎn)換成 地址(代真);地址(代真); 利用操作碼表將助記符轉(zhuǎn)換成相應(yīng)的目標(biāo)碼。利用操作碼表
7、將助記符轉(zhuǎn)換成相應(yīng)的目標(biāo)碼。 三、偽指令三、偽指令 偽指令是告訴匯編程序,如何匯編源程序的指令。偽指令是告訴匯編程序,如何匯編源程序的指令。 偽指令既不控制機(jī)器的操作,也不能被匯編成機(jī)器代碼,偽指令既不控制機(jī)器的操作,也不能被匯編成機(jī)器代碼, 故稱為偽指令。故稱為偽指令。 1 1、起始地址偽指令、起始地址偽指令 ORGORG ORG addr16ORG addr16 用于規(guī)定目標(biāo)程序段或數(shù)據(jù)塊的起始地址,用于規(guī)定目標(biāo)程序段或數(shù)據(jù)塊的起始地址, 設(shè)置在程序開始處。設(shè)置在程序開始處。 2 2、匯編結(jié)束偽指令、匯編結(jié)束偽指令 ENDEND 告訴匯編程序,對(duì)源程序的匯編到此結(jié)束。告訴匯編程序,對(duì)源程序
8、的匯編到此結(jié)束。 一個(gè)程序中只出現(xiàn)一一個(gè)程序中只出現(xiàn)一 次,在末尾。次,在末尾。 3 3、賦值偽指令、賦值偽指令 EQUEQU 告訴匯編程序,將匯編語句操作數(shù)的值賦予本語句的標(biāo)號(hào)。告訴匯編程序,將匯編語句操作數(shù)的值賦予本語句的標(biāo)號(hào)。 格式:格式: 標(biāo)號(hào)名稱標(biāo)號(hào)名稱 EQU EQU 數(shù)值或匯編符號(hào)數(shù)值或匯編符號(hào) “ “標(biāo)號(hào)名稱標(biāo)號(hào)名稱”在源程序中可以作數(shù)值使用,也可以作數(shù)據(jù)地址、在源程序中可以作數(shù)值使用,也可以作數(shù)據(jù)地址、 位地址使用。位地址使用。 先定義后使用,放在程序開頭。先定義后使用,放在程序開頭。4 4、定義字節(jié)偽指令、定義字節(jié)偽指令 DBDB 告訴匯編程序從指定的地址單元開始,定義若干
9、字節(jié)存儲(chǔ)單告訴匯編程序從指定的地址單元開始,定義若干字節(jié)存儲(chǔ)單 元并賦初值。元并賦初值。 格式:格式: 標(biāo)號(hào):標(biāo)號(hào): DB DB 字節(jié)數(shù)據(jù)或字節(jié)數(shù)據(jù)表字節(jié)數(shù)據(jù)或字節(jié)數(shù)據(jù)表5 5、定義字偽指令、定義字偽指令 DWDW 從指定地址開始,定義若干個(gè)從指定地址開始,定義若干個(gè)1616個(gè)位數(shù)據(jù),高八位存入低地址;個(gè)位數(shù)據(jù),高八位存入低地址; 低八位存入高地址。低八位存入高地址。 例、例、 ORG 1000HORG 1000H PIOI PIOI:DW 7654HDW 7654H,40H40H、1212、ABAB 6 6、數(shù)據(jù)地址賦值偽指令、數(shù)據(jù)地址賦值偽指令 DATADATA 將表達(dá)式指定的數(shù)據(jù)地址賦予
10、規(guī)定的字符名稱將表達(dá)式指定的數(shù)據(jù)地址賦予規(guī)定的字符名稱 格式:格式: 字符名稱字符名稱 DATA DATA 表達(dá)式表達(dá)式注:該指令與注:該指令與EQUEQU指令相似,只是,可先使用后定義,指令相似,只是,可先使用后定義, 放于程序開頭、結(jié)尾均可。放于程序開頭、結(jié)尾均可。7 7、定義空間偽指令、定義空間偽指令 DSDS 從指定地址開始,保留由表達(dá)式指定的若干字節(jié)空間作從指定地址開始,保留由表達(dá)式指定的若干字節(jié)空間作 為備用空間。為備用空間。 格式:格式: 標(biāo)號(hào):標(biāo)號(hào): DS DS 表達(dá)式表達(dá)式例例2 2、 ORG 1000HORG 1000H DS 0AH DS 0AH DB 71H DB 71
11、H,11H11H,11H 11H ;從從100100BHBH開始存放開始存放 ;7171H11HH11H、11H11H。 注:注:DBDB、DWDW、DS DS 只能用于程序存儲(chǔ)器;只能用于程序存儲(chǔ)器; 而不能用于數(shù)據(jù)存儲(chǔ)器。而不能用于數(shù)據(jù)存儲(chǔ)器。 8 8、位地址賦值偽指令、位地址賦值偽指令 BITBIT將位地址賦予規(guī)定的字符名稱。將位地址賦予規(guī)定的字符名稱。格式:格式: 字符名稱字符名稱 BIT BIT 位地址位地址 例例3 3、 X1 BIT P12X1 BIT P12 相當(dāng)于相當(dāng)于 X1 EQU 92HX1 EQU 92H 小結(jié):小結(jié):1 1、為什么要對(duì)匯編程序進(jìn)行匯編?、為什么要對(duì)匯編
12、程序進(jìn)行匯編? 2 2、機(jī)器匯編的過程是怎樣的?、機(jī)器匯編的過程是怎樣的? 3 3、常用偽指令的功能各是什么?、常用偽指令的功能各是什么? 3-3-3 3 匯編語言程序的基本結(jié)構(gòu)及應(yīng)用舉例匯編語言程序的基本結(jié)構(gòu)及應(yīng)用舉例程序編寫做到:程序編寫做到:占用存儲(chǔ)空間少;占用存儲(chǔ)空間少;運(yùn)行時(shí)間短;運(yùn)行時(shí)間短;程序的編制、調(diào)試及排錯(cuò)所需時(shí)間短;結(jié)構(gòu)清晰,易讀、易于移植。程序的編制、調(diào)試及排錯(cuò)所需時(shí)間短;結(jié)構(gòu)清晰,易讀、易于移植。 按結(jié)構(gòu)化程序設(shè)計(jì)思想,任何復(fù)雜程序都可由按結(jié)構(gòu)化程序設(shè)計(jì)思想,任何復(fù)雜程序都可由順序結(jié)構(gòu)、順序結(jié)構(gòu)、分支結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 等構(gòu)成。等構(gòu)成。 語句 3語句 2順
13、序結(jié)構(gòu)順序結(jié)構(gòu) 入口入口語句 1 出口出口分支結(jié)構(gòu)分支結(jié)構(gòu)入口入口條件滿足否? 分支 1 出口出口YN 分支 2循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)入口入口 處理 修改條件條件滿足否?Y 出口出口N一、順序程序舉例一、順序程序舉例例例1 1、設(shè)在外、設(shè)在外RAMRAM的的6060H H單元存有單元存有1 1個(gè)字節(jié)代碼,要求將其分解成兩個(gè)個(gè)字節(jié)代碼,要求將其分解成兩個(gè)4 4位字段,高位字段,高4 4位存入原單元的低位存入原單元的低4 4位,其低位,其低4 4位存入位存入6161H H單元的低單元的低4 4位,位,且要求這兩個(gè)單元的高且要求這兩個(gè)單元的高4 4位均為位均為0 0,試編制完整程序。,試編制完整程序。 分
14、析:# # # # ¥ ¥解:核心指令解:核心指令 ANLANL ORL 1000H ORL 1000H MODE MODE:MOV R0MOV R0,#60H#60H MOVX A MOVX A,R0R0 MOV B MOV B,A A ANL A ANL A,#0F0H#0F0H SWAP A SWAP A MOVX R0 MOVX R0,A A ANL B ANL B,#0FH#0FH MOV A MOV A,B B INC R0 INC R0 MOVX R0 MOVX R0,A A END END二、分支結(jié)構(gòu)與分支程序設(shè)計(jì)二、分支結(jié)構(gòu)與分支程序設(shè)計(jì)結(jié)構(gòu):根據(jù)不同的條件,進(jìn)行相應(yīng)的處理。
15、結(jié)構(gòu):根據(jù)不同的條件,進(jìn)行相應(yīng)的處理。通常用條件轉(zhuǎn)移指令形成簡(jiǎn)單分支結(jié)構(gòu)。通常用條件轉(zhuǎn)移指令形成簡(jiǎn)單分支結(jié)構(gòu)。如:如: 判(判(A A) = Z = Z 或或 NZ NZ ,轉(zhuǎn)移轉(zhuǎn)移 判(判(CYCY)= 1 = 1 或或 0 0 ,轉(zhuǎn)移,轉(zhuǎn)移 判(判(bitbit)=1 =1 或或 0 0 ,轉(zhuǎn)移,轉(zhuǎn)移 CJNE CJNE 比較不相等轉(zhuǎn)移比較不相等轉(zhuǎn)移 例例3 3、設(shè)、設(shè)a a存放在累加器存放在累加器A A中,中,b b存放在寄存器存放在寄存器B B中,要求按下式中,要求按下式 計(jì)算計(jì)算Y Y值,并將結(jié)果值,并將結(jié)果Y Y存于累加器存于累加器A A中,試編寫程序。中,試編寫程序。 a-b a
16、-b (a0a0) Y = Y = a+b a+b (a 0a NBNA NB時(shí),將內(nèi)部時(shí),將內(nèi)部RAMRAM的的4242H H單元清單元清0 0;否則,將該單元置成全;否則,將該單元置成全1 1,試編程。,試編程。解法解法I I:因?yàn)闊o因?yàn)闊o1616位數(shù)的比較指令,所以,只能用位數(shù)的比較指令,所以,只能用8 8位數(shù)的比較位數(shù)的比較 指令。指令。 (畫出流程框圖)(畫出流程框圖)解:解:ORG 2000HORG 2000H CMP CMP:MOV AMOV A,50H50H CJNE A CJNE A,40H40H,CMP1CMP1 MOV A MOV A,51H51H CJNE A CJNE
17、 A,41H41H,CMP1CMP1 SJMP NHIGHE SJMP NHIGHE CMP1 CMP1:JC HIGHEJC HIGHE NHIGHE NHIGHE:MOV 42HMOV 42H,#0FFH#0FFH SJMP DONE SJMP DONE HIGHE HIGHE:MOV 42HMOV 42H,#00H#00H DONE DONE:SJMP SJMP END END解法解法IIII:先假設(shè)先假設(shè)NA NBNA NB,再來判斷是否再來判斷是否NA NBNA NB ORG 3000H ORG 3000H CMP2 CMP2:MOV R0MOV R0,#00H#00H MOV A
18、MOV A,50H50H CJNE A CJNE A,40H40H,CMP3CMP3 MOV A MOV A,51H51H CJNE A CJNE A,41H41H,CMP3CMP3 SJMP NHIGHE SJMP NHIGHE CMP3 CMP3:JC HIGHEJC HIGHE NHIGHE NHIGHE:MOV R0MOV R0,#0FFH #0FFH ;不大于標(biāo)志不大于標(biāo)志 HIGHEHIGHE:MOV 42HMOV 42H,R0R0 SJMP SJMP ENDEND 小結(jié):小結(jié): 1 1、匯編程序有哪三種基本結(jié)構(gòu)?、匯編程序有哪三種基本結(jié)構(gòu)? 2 2、構(gòu)成分支程序,常用到哪些判斷語
19、句?、構(gòu)成分支程序,常用到哪些判斷語句? 順序程序順序程序 每條指令只執(zhí)行一次;每條指令只執(zhí)行一次;分支程序分支程序 根據(jù)不同條件,會(huì)跳過一些指令,而轉(zhuǎn)去根據(jù)不同條件,會(huì)跳過一些指令,而轉(zhuǎn)去 執(zhí)行另一些指令執(zhí)行另一些指令共同點(diǎn):每條指令至多執(zhí)行一次。但是,實(shí)際中有時(shí)要求某程共同點(diǎn):每條指令至多執(zhí)行一次。但是,實(shí)際中有時(shí)要求某程序段多次重復(fù)執(zhí)行,需要采用循環(huán)結(jié)構(gòu)。序段多次重復(fù)執(zhí)行,需要采用循環(huán)結(jié)構(gòu)。 循環(huán)結(jié)構(gòu)不但使程序簡(jiǎn)練,而且大大節(jié)省存儲(chǔ)空間。循環(huán)結(jié)構(gòu)不但使程序簡(jiǎn)練,而且大大節(jié)省存儲(chǔ)空間。循環(huán)程序包含四部分:循環(huán)程序包含四部分:、初始化部分(循環(huán)計(jì)數(shù)器、變量置初值)初始化部分(循環(huán)計(jì)數(shù)器、變量
20、置初值)、循環(huán)處理部分(主體,需要重復(fù)執(zhí)行的部分)循環(huán)處理部分(主體,需要重復(fù)執(zhí)行的部分) 、循環(huán)控制部分(修改地址指針、修改變量、檢測(cè)循環(huán)控制部分(修改地址指針、修改變量、檢測(cè)循環(huán)結(jié)束條件)循環(huán)結(jié)束條件)、循環(huán)結(jié)束部分(對(duì)結(jié)果分析、處理,存放結(jié)果)循環(huán)結(jié)束部分(對(duì)結(jié)果分析、處理,存放結(jié)果)先修理,后判斷:先修理,后判斷: 開始初始化部分處理部分修改變量循環(huán)結(jié)束?結(jié)束部分結(jié)束先判斷,后處理:先判斷,后處理: 開始初始化部分修改變量循環(huán)結(jié)束?結(jié)束部分結(jié)束處理部分循環(huán)有:?jiǎn)窝h(huán)、多重循環(huán)。循環(huán)有:?jiǎn)窝h(huán)、多重循環(huán)。循環(huán)次數(shù)已知,可用計(jì)數(shù)器控制循環(huán)次數(shù);循環(huán)次數(shù)已知,可用計(jì)數(shù)器控制循環(huán)次數(shù);循環(huán)次數(shù)
21、未知,按問題條件控制循環(huán)是否結(jié)束。循環(huán)次數(shù)未知,按問題條件控制循環(huán)是否結(jié)束。 1 1、單循環(huán)程序、單循環(huán)程序(1 1)循環(huán)次數(shù)是已知的程序)循環(huán)次數(shù)是已知的程序例例1 1、已知片外、已知片外RAMRAM的的1010H H單元存放單元存放8 8位二進(jìn)制數(shù),要求將其轉(zhuǎn)移成相位二進(jìn)制數(shù),要求將其轉(zhuǎn)移成相應(yīng)的應(yīng)的ASCIIASCII碼,并以高位在前,低位在后的順序,依次存放到片外碼,并以高位在前,低位在后的順序,依次存放到片外RAMRAM以以1111H H為首地址的連續(xù)單元中,試編程。為首地址的連續(xù)單元中,試編程。解:先將中間單元置成解:先將中間單元置成3030H H,然后判欲轉(zhuǎn)換位是否為然后判欲轉(zhuǎn)換
22、位是否為1 1, 若是,則將中間單元內(nèi)容加若是,則將中間單元內(nèi)容加1 1;否則,中間單元內(nèi)容保持不變。;否則,中間單元內(nèi)容保持不變。 通過左移指令實(shí)現(xiàn)由高到低的順序進(jìn)行轉(zhuǎn)換。通過左移指令實(shí)現(xiàn)由高到低的順序進(jìn)行轉(zhuǎn)換。 START START:MOV R2MOV R2,#08H #08H ;循環(huán)計(jì)數(shù)初值(循環(huán)次數(shù)已知)循環(huán)計(jì)數(shù)初值(循環(huán)次數(shù)已知) MOV R0MOV R0,#10H #10H ;地址指針初值地址指針初值 MOVX AMOVX A,R0 R0 ;取數(shù)取數(shù) MOV BMOV B,A A ;暫存暫存B B中中 LOOPLOOP:MOV AMOV A,#30H #30H ;將中間單元(將中
23、間單元(A A)置成置成3030H H JNB B.7 JNB B.7,NA NA ;判斷轉(zhuǎn)換的二進(jìn)制位為判斷轉(zhuǎn)換的二進(jìn)制位為0 0否?否? INC A INC A ;若為若為1 1,則變成,則變成1 1的的ASCIIASCII碼碼“31“31H”H” NA NA:INC R0 INC R0 ;修改地址指針修改地址指針 MOVX R0MOVX R0,A A ;存放轉(zhuǎn)換的結(jié)果存放轉(zhuǎn)換的結(jié)果 MOV AMOV A,B B RL A RL A,B B ;作好準(zhǔn)備,判斷下一位作好準(zhǔn)備,判斷下一位 MOV BMOV B,A A ;暫存暫存 DJNZ R2DJNZ R2,LOOP LOOP ;判斷轉(zhuǎn)換結(jié)束
24、否?未完繼續(xù)判斷轉(zhuǎn)換結(jié)束否?未完繼續(xù) SJMP SJMP (2 2)循環(huán)次數(shù)未知的程序)循環(huán)次數(shù)未知的程序例例2 2、設(shè)用戶用鍵盤輸入長(zhǎng)度不超過、設(shè)用戶用鍵盤輸入長(zhǎng)度不超過100100字節(jié)的字符串放在字節(jié)的字符串放在80318031單片單片機(jī)外部機(jī)外部RAMRAM以以2020H H為首地址的連續(xù)單元,該字符串用回車符為首地址的連續(xù)單元,該字符串用回車符CRCR(CR= 0DHCR= 0DH)作為結(jié)束標(biāo)志,要求統(tǒng)計(jì)此字符串的長(zhǎng)度并存入作為結(jié)束標(biāo)志,要求統(tǒng)計(jì)此字符串的長(zhǎng)度并存入內(nèi)部?jī)?nèi)部RAMRAM的的1 1FHFH單元中。單元中。解:從首單元開始取數(shù),每取一數(shù)判斷其是否為解:從首單元開始取數(shù),每取
25、一數(shù)判斷其是否為CRCR,是則結(jié)束。是則結(jié)束。 ORG 1000HORG 1000HSTADA DATA 20HSTADA DATA 20HSLANG DATA 1FHSLANG DATA 1FHCMCR2CMCR2:MOV R0MOV R0,#STADA-1#STADA-1 MOV B MOV B,#0FFH#0FFH CRLOPCRLOP:INC R0INC R0 INC B INC B MOVX A MOVX A,R0R0 CJNE A CJNE A,#0DH#0DH,CRLOPCRLOP MOV SLANG MOV SLANG,B B SJMP SJMP END END 2 2、多重循
26、環(huán)設(shè)計(jì)、多重循環(huán)設(shè)計(jì)循環(huán)體中還包含著一個(gè)或多個(gè)循環(huán)結(jié)構(gòu),即雙重或多重循環(huán)。循環(huán)體中還包含著一個(gè)或多個(gè)循環(huán)結(jié)構(gòu),即雙重或多重循環(huán)。例例3 3、設(shè)、設(shè)80318031使用使用1212MHzMHz晶振,試設(shè)計(jì)延遲晶振,試設(shè)計(jì)延遲100100msms的延時(shí)程序。的延時(shí)程序。內(nèi)循環(huán)內(nèi)循環(huán)外循環(huán)外循環(huán)解:延時(shí)程序的延遲時(shí)間就是該程序的執(zhí)行時(shí)間,通常采用解:延時(shí)程序的延遲時(shí)間就是該程序的執(zhí)行時(shí)間,通常采用MOV MOV 和和DJNZDJNZ二指令。二指令。 T = 12 / T = 12 / foscfosc = 12 / = 12 / (121210106 6)= 1us= 1us ORG 1000H O
27、RG 1000H DELAYDELAY:MOV R2MOV R2,#CTS #CTS ;T = 1usT = 1us LOOPS LOOPS:MOV BMOV B,#CTR #CTR ;T = 1us T = 1us LOOPRLOOPR:DJNZ BDJNZ B,LOOPR LOOPR ;2T = 2us 2T = 2us DJNZ R2DJNZ R2,LOOPS LOOPS ;2T = 2us 2T = 2us ENDEND 內(nèi)循環(huán)延時(shí):內(nèi)循環(huán)延時(shí):(1 + 2 1 + 2 CTRCTR)T = 500usT = 500us(假設(shè))假設(shè))則則CTR = 250CTR = 250 實(shí)際延時(shí):
28、實(shí)際延時(shí):1 + 2 1 + 2 250 250 1 1us = 501usus = 501us外循環(huán)延時(shí):外循環(huán)延時(shí):T +T +(501 + 2T501 + 2T) CTS = 100ms = 100 000us CTS = 100ms = 100 000us 所以所以 , CTS = 198.8 CTS = 198.8 取取 199 199 實(shí)際延時(shí):實(shí)際延時(shí):1 + 1 + (501 + 2501 + 2)199 = 1000.98199 = 1000.98msms 例例4 4、設(shè)在、設(shè)在80318031內(nèi)部?jī)?nèi)部RAMRAM中存一無符號(hào)數(shù)的數(shù)組,其長(zhǎng)度為中存一無符號(hào)數(shù)的數(shù)組,其長(zhǎng)度為1
29、00100,起,起始地址是始地址是3030H H,要求將它們從大到小排序,排序后仍存放在原區(qū)域要求將它們從大到小排序,排序后仍存放在原區(qū)域中,試編者按程。中,試編者按程。 解:先舉四個(gè)數(shù)排序的例子解:先舉四個(gè)數(shù)排序的例子內(nèi)內(nèi)RAM RAM 第一次外循環(huán)第一次外循環(huán) 第二次外循環(huán)第二次外循環(huán) 第三次外循環(huán)第三次外循環(huán) 30 30H 0 0 0 3 0 3 0 6H 0 0 0 3 0 3 0 6 31H 0 3 0 2 0 6 0 3 31H 0 3 0 2 0 6 0 3 3232H 0 2 0 6 0 2 0 2H 0 2 0 6 0 2 0 2 3333H 0 6 H 0 6 0 0 0 0 0 00 0 0 0 0 0共共4 1 = 3 次外循環(huán)次外循環(huán)這就是所謂的這就是所謂的“冒泡法冒泡法”。4 4個(gè)數(shù)排序最多經(jīng)過個(gè)數(shù)排序最多經(jīng)過 3 3 次外循環(huán)就可排出次外循環(huán)就可排出, ,每次外循環(huán)都包含每次外循環(huán)都包含3 3次次內(nèi)循環(huán)。實(shí)際上大多情況不用內(nèi)循環(huán)。實(shí)際上大多情況不用 3 3 次外循環(huán)就可排完。次外循環(huán)就可排完。對(duì)于對(duì)于100100個(gè)數(shù)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧建筑職業(yè)學(xué)院《有機(jī)化學(xué)Ⅰ》2023-2024學(xué)年第一學(xué)期期末試卷
- 科爾沁藝術(shù)職業(yè)學(xué)院《算法分析與設(shè)計(jì)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇理工學(xué)院《視聽節(jié)目策劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 吉林大學(xué)《汽車電工電子技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南農(nóng)業(yè)大學(xué)《烹調(diào)工藝學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖北體育職業(yè)學(xué)院《消費(fèi)者保護(hù)法》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】《功》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教版(2024)初中物理八年級(jí)下冊(cè)
- 高考物理總復(fù)習(xí)《帶電粒子在交變場(chǎng)中的運(yùn)動(dòng)》專項(xiàng)測(cè)試卷含答案
- 重慶工程職業(yè)技術(shù)學(xué)院《分布式系統(tǒng)與云計(jì)算》2023-2024學(xué)年第一學(xué)期期末試卷
- 正德職業(yè)技術(shù)學(xué)院《學(xué)習(xí)科學(xué)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 代理記賬有限公司簡(jiǎn)介(5個(gè)范本)
- 校園物業(yè)管理層培訓(xùn)課件
- 安全生產(chǎn)培訓(xùn)資料-20220703152820
- 3-U9C操作培訓(xùn)-MRP基礎(chǔ)
- 2024至2030年中國(guó)銅制裝飾材料行業(yè)投資前景及策略咨詢研究報(bào)告
- 中金公司在線測(cè)評(píng)真題
- 高中英語新課程標(biāo)準(zhǔn)解讀課件
- 2024供應(yīng)商大會(huì)策劃方案
- 2024小學(xué)語文六年級(jí)上冊(cè)第四單元:大單元整體教學(xué)課件
- 12S108-1 倒流防止器選用及安裝
- 人教版六年級(jí)下冊(cè)數(shù)學(xué)期末測(cè)試卷附答案【達(dá)標(biāo)題】
評(píng)論
0/150
提交評(píng)論