![單片機(jī)技術(shù)與應(yīng)用第三章_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/37f4a457-26f0-4fc7-aa25-368026bceb12/37f4a457-26f0-4fc7-aa25-368026bceb121.gif)
![單片機(jī)技術(shù)與應(yīng)用第三章_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/37f4a457-26f0-4fc7-aa25-368026bceb12/37f4a457-26f0-4fc7-aa25-368026bceb122.gif)
![單片機(jī)技術(shù)與應(yīng)用第三章_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/37f4a457-26f0-4fc7-aa25-368026bceb12/37f4a457-26f0-4fc7-aa25-368026bceb123.gif)
![單片機(jī)技術(shù)與應(yīng)用第三章_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/37f4a457-26f0-4fc7-aa25-368026bceb12/37f4a457-26f0-4fc7-aa25-368026bceb124.gif)
![單片機(jī)技術(shù)與應(yīng)用第三章_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/37f4a457-26f0-4fc7-aa25-368026bceb12/37f4a457-26f0-4fc7-aa25-368026bceb125.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、概述概述1匯編語(yǔ)言程序設(shè)計(jì)步驟匯編語(yǔ)言程序設(shè)計(jì)步驟2轉(zhuǎn)移程序設(shè)計(jì)轉(zhuǎn)移程序設(shè)計(jì) 45算術(shù)運(yùn)算程序設(shè)計(jì)算術(shù)運(yùn)算程序設(shè)計(jì)3數(shù)字濾波程序設(shè)計(jì)數(shù)字濾波程序設(shè)計(jì) 概述概述 v MCS-51單片機(jī)的編程語(yǔ)言可以是匯編語(yǔ)言也可以是高級(jí)語(yǔ)言(如C語(yǔ)言),高級(jí)語(yǔ)言編程快捷,但程序長(zhǎng),占用存儲(chǔ)空間大,執(zhí)行慢;匯編語(yǔ)言產(chǎn)生的目標(biāo)程序簡(jiǎn)短,占用存儲(chǔ)空間小,執(zhí)行快,能充分發(fā)揮計(jì)算機(jī)的硬件功能。無(wú)論是高級(jí)語(yǔ)言還是匯編語(yǔ)言,源程序都要轉(zhuǎn)換成目標(biāo)程序(機(jī)器語(yǔ)言)單片機(jī)才能執(zhí)行。 概述概述連接連接/定位器定位器L51匯編語(yǔ)言匯編語(yǔ)言源程序源程序匯編器匯編器A51符號(hào)轉(zhuǎn)換程序符號(hào)轉(zhuǎn)換程序OHS51絕對(duì)地址絕對(duì)地址目標(biāo)程序目標(biāo)程序
2、.BINC語(yǔ)言程序語(yǔ)言程序浮浮動(dòng)動(dòng)地地址址目目標(biāo)標(biāo)程程序序編譯器編譯器C51 HEXv兩種語(yǔ)言源程序轉(zhuǎn)換成目標(biāo)程序兩種語(yǔ)言源程序轉(zhuǎn)換成目標(biāo)程序概述概述v 目前很多公司將編輯器、匯編器、編譯器、連接/定位器、符號(hào)轉(zhuǎn)換程序做成集成軟件包,用戶進(jìn)入該集成環(huán)境,編輯好程序后,只需點(diǎn)擊相應(yīng)菜單就可以完成上述的各步,如WAVE、KEIL ,WAVE集成軟件。 匯編匯編:將匯編語(yǔ)言:將匯編語(yǔ)言源程序源程序轉(zhuǎn)換成機(jī)器語(yǔ)言轉(zhuǎn)換成機(jī)器語(yǔ)言目標(biāo)目標(biāo)程序的程序的過(guò)程稱為匯編。過(guò)程稱為匯編。 匯編程序匯編程序:能將匯編語(yǔ)言:能將匯編語(yǔ)言源程序源程序轉(zhuǎn)換成機(jī)器語(yǔ)言轉(zhuǎn)換成機(jī)器語(yǔ)言目標(biāo)目標(biāo)程序的系統(tǒng)軟件稱為匯編程序。程序的系
3、統(tǒng)軟件稱為匯編程序。概述概述一、匯編語(yǔ)言指令類一、匯編語(yǔ)言指令類型型1. 1. 機(jī)器指令:指令系統(tǒng)中的全部指令。每條機(jī)器指令都有對(duì)應(yīng)機(jī)器指令:指令系統(tǒng)中的全部指令。每條機(jī)器指令都有對(duì)應(yīng)的機(jī)器代碼,可以被的機(jī)器代碼,可以被CPUCPU執(zhí)行。執(zhí)行。2. 2. 偽指令:偽指令: 匯編控制指令,沒(méi)有指令代碼,只用于匯編過(guò)程,匯編控制指令,沒(méi)有指令代碼,只用于匯編過(guò)程,為匯編程序提供匯編信息。為匯編程序提供匯編信息。v宏匯編功能:將需要反復(fù)多次執(zhí)行的程序段定義成一個(gè)宏指宏匯編功能:將需要反復(fù)多次執(zhí)行的程序段定義成一個(gè)宏指令名(宏定義)。編程時(shí),可在程序中使用宏指令名來(lái)替代令名(宏定義)。編程時(shí),可在程序
4、中使用宏指令名來(lái)替代被定義的程序段(宏調(diào)用)。被定義的程序段(宏調(diào)用)。概述概述v 宏定義過(guò)程:宏定義過(guò)程:v 宏指令名 MACRO 形式參數(shù)v ;被定義的程序段v ENDMv 宏調(diào)用過(guò)程:宏調(diào)用過(guò)程:v v 宏指令名宏指令名 實(shí)際參數(shù)實(shí)際參數(shù)v v 宏指令名宏指令名 實(shí)際參數(shù)實(shí)際參數(shù)概述概述二偽指令二偽指令 常用偽指令及功能:常用偽指令及功能:v1.起始指令 ORG nnv功能:定義程序或數(shù)據(jù)塊的起始地址。指示此語(yǔ)句后面的程序或數(shù)據(jù)塊以nn為起始地址,連續(xù)存放在程序存儲(chǔ)器中。 v指令地址 機(jī)器碼源程序v ORG 2000Hv 2000H 78 30 MAIN:MOV R0,#30Hv 200
5、2H E6 MOV A,R0v v ORG 3000Hv 3000H 23 TAB: DB 23H,100,A v 3001H 64v 3002H 41概述概述 v2.字節(jié)定義 標(biāo)號(hào): DB(字節(jié)常數(shù),或字符或表達(dá)式)v功能:指示在程序存儲(chǔ)器中以標(biāo)號(hào)為起始地址的單元里存放的數(shù)為字節(jié)數(shù)據(jù)(八位二進(jìn)制數(shù))。v例如 LN:DB 32,C,25H,-1;LNLN+2 地址單元依次存放20H , 43H , 25H ,F(xiàn)FH地址 數(shù)據(jù)LN20LN+143LN+225LN+3FFv3. 字定義 標(biāo)號(hào):DW (字常數(shù)或表達(dá)式)v作用: 指示在程序存儲(chǔ)器中以標(biāo)號(hào)為起始地址v的單元里存放的數(shù)為字?jǐn)?shù)據(jù)(即16位的
6、二進(jìn)制數(shù)),例如:vGH :DW 1234H,5678H,08GH1234GH+25678GH+40008概述概述4保留字節(jié)保留字節(jié) 標(biāo)號(hào):標(biāo)號(hào):DS (數(shù)值表達(dá)式)數(shù)值表達(dá)式)作用:作用: 指示在程序存儲(chǔ)器中保留以標(biāo)號(hào)為起始地指示在程序存儲(chǔ)器中保留以標(biāo)號(hào)為起始地址的若干字節(jié)單元,其單元個(gè)數(shù)由數(shù)值表達(dá)式指定。址的若干字節(jié)單元,其單元個(gè)數(shù)由數(shù)值表達(dá)式指定。例如例如 L1:DS 32 ; 從從L1地址開始保留地址開始保留32個(gè)存儲(chǔ)單元。個(gè)存儲(chǔ)單元。 5. 等值指令 標(biāo)號(hào) EQU(數(shù)值表達(dá)式) 表示EQU兩邊的量等值,用于為標(biāo)號(hào)或標(biāo)識(shí)符賦值。例如: X1 EQU 2000H X2 EQU 0FH M
7、AIN: MOV DPTR,#X1 ; DPTR=2000H ADD A,#X2 ; A=A+0FH概述概述v 6. 位定義 標(biāo)號(hào) BIT 位地址v 作用: 同EQU指令,不過(guò)定義的是位操作地址。v 例如 AIC BIT P1.1。7.匯編結(jié)束匯編結(jié)束 END作用:作用: 指示源程序段結(jié)束。指示源程序段結(jié)束。 END指令放在程序的最后。指令放在程序的最后。A51匯編程序還有一些其它的偽指令,列在教材表匯編程序還有一些其它的偽指令,列在教材表3-1中,以中,以備查閱。備查閱。匯編語(yǔ)言程序設(shè)計(jì)步驟v一.確定方案和計(jì)算方法v二.了解應(yīng)用系統(tǒng)的硬件配置、性能指標(biāo)v三.建立系統(tǒng)數(shù)學(xué)模型,確定控制算法和操
8、作步驟v四.合理分配存儲(chǔ)器單元和了解I/O接口地址v五. 編制源程序v1.按功能設(shè)計(jì)程序,明確各程序之間的相互關(guān)系v2. 用流程圖表示程序結(jié)構(gòu)和功能v3.程序中用注釋說(shuō)明指令在程序中的作用,方便閱讀、調(diào)試和修改開始開始1 YN?順序程序設(shè)計(jì)順序程序設(shè)計(jì) v 順序程序設(shè)計(jì)v 例3-1 編程將外部數(shù)據(jù)存儲(chǔ)器的000EH和000FH單元的內(nèi)容相換。 常用程序結(jié)構(gòu)順序程序、分支程序、循環(huán)程序、子程序000EH000FH000EH000FH000EH000FH000EH000FH分析分析: 外部數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)操作只能外部數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)操作只能用用MOVX指令,且只能和指令,且只能和A之間傳送,之間傳
9、送,因此必須用一個(gè)中間環(huán)節(jié)作暫存,設(shè)因此必須用一個(gè)中間環(huán)節(jié)作暫存,設(shè)用用20H單元。用單元。用R0、R1指示兩單元的指示兩單元的低八位地址,高八位地址由低八位地址,高八位地址由P2指示。指示。編程過(guò)程如下:編程過(guò)程如下:000EH000FH000EH000FH000EH000FH順序程序設(shè)計(jì)順序程序設(shè)計(jì)v ORG 0000Hv MOV P2, #0H ;送地址高八位至P2口v MOV R0, #0EH ;R0= 0EH v MOV R1, #0FH ;R1=OFHv MOVX A, R0 ;A=(000EH)v MOV 20H, A ;(20H)=(000EH)v MOVX A, R1 ;A=
10、(000FH)v XCH A, 20H ;A=(000EH),(20H)=(000FH) v MOVX R1, A v MOV A, 20Hv MOVX R0, A ;交換后的數(shù)送各單元v SJMP $v END加法運(yùn)算程序x例、有兩個(gè)4字節(jié)的二進(jìn)制數(shù),存放在40H和50H為起始的單元中(低位在前)求這兩個(gè)數(shù)的和,并存放在40H開始的單元中v JAFA:MOV R0,#40Hv MOV R1,#50Hv MOV R2,#04Hv ACALL JASUBv JASUB: CLR Cv JASUB1: MOV A, R1v ADDC A,R0v MOV R0, Av INC R0v INC R1v
11、 DJNZ R2, JASUB1v CLR Av ADDC A,#00Hv MOV R0,Av RET乘法運(yùn)算乘法運(yùn)算v 例、將(例、將(R2R3)和(和(R6R7)中雙字節(jié)無(wú)符號(hào)數(shù)相乘,結(jié)果送中雙字節(jié)無(wú)符號(hào)數(shù)相乘,結(jié)果送 R4R5R6R7,采用部分積右移采用部分積右移NMUL: MOV R4,#0 MOV A,R7 MOV R5,#0 RRC A MOV R0,#16 MOV R7,A CLR C JNC NMLNNMLP: MOV A,R4 MOV A,R5 RRC A ADD A,R3 MOV R4,A MOV R5,A MOV A,R5 MOV A,R4 RRC A ADDC A,R2
12、 MOV R5,A MOV R4,A MOV A,R6 NMLN:DJNZ R0,NMLP RRC A MOV A,R4 MOV R6,A RRC A乘法運(yùn)算乘法運(yùn)算v 例、例、16位的被乘數(shù)在位的被乘數(shù)在R4、R3中,中,8位乘數(shù)在位乘數(shù)在R2中,乘積放在中,乘積放在R7、R6、R5中。中。(R4)(R3)(R2)=(R4)(R2) 28+ (R3)(R2)ZHENFA: MOV A,R2 MOV R6,A MOV B,R3 MOV A,B MUL AB ADDC A,#00H MOV R5,A MOV R7,A MOV R6,B RET MOV A,R2 MOV B,R4 MUL AB A
13、DD A,R6 思考思考: 16位數(shù)與位數(shù)與16位數(shù)相乘位數(shù)相乘, 被乘數(shù)在被乘數(shù)在R3、R2中,中,16位乘數(shù)在位乘數(shù)在R1、R0中,乘積放在中,乘積放在R7、R6、R5、R4中。中。 分支程序的設(shè)計(jì)例2 用單片機(jī)加重力傳感器作磅秤,秤出重量后算出行李運(yùn)費(fèi)價(jià)格,其秤出的重量以10kg為1個(gè)計(jì)價(jià)單位G , G已存入40H單元。計(jì)價(jià)方法為50kg以內(nèi)按3元, 50kg以上分段計(jì)價(jià): 50kg按3元計(jì)價(jià),超過(guò)部分按2元計(jì)價(jià)。 由此列出算式: G3 + (G-5)2; 當(dāng)當(dāng)G5M=G3 ;當(dāng);當(dāng)G5 3G因重復(fù)使用,先暫存在因重復(fù)使用,先暫存在R2。流程見(jiàn)左。流程見(jiàn)左, 程程序如下:序如下:v OR
14、G 0100Hv FRT: MOV A,40H ;取行李重量計(jì)價(jià)單位Gv MOV R3,Av MOV B,#03H ;運(yùn)費(fèi)M=G3v MUL ABv MOV R2,A ;暫存3Gv MOV A,R3 ;取回Gv CJNE A,#05H,L1 ;G 5 ?v SJMP WETCvL1: JC WETC ;是,轉(zhuǎn)至WETCv SUBB A,#05H ;否則 M=3G+2(G-5) v RLC Av ADD A,R2v MOV R2 ,Av WETC: MOV 41H,R2 ;存運(yùn)費(fèi) Mv RET多分支散轉(zhuǎn)程序的設(shè)計(jì)多分支散轉(zhuǎn)程序的設(shè)計(jì) 有一類分支程序有一類分支程序, ,它根據(jù)不同的輸入條件或不同的
15、運(yùn)算它根據(jù)不同的輸入條件或不同的運(yùn)算結(jié)果結(jié)果, ,轉(zhuǎn)向不同的處理程序轉(zhuǎn)向不同的處理程序, ,稱之為散轉(zhuǎn)程序。這類程序通常稱之為散轉(zhuǎn)程序。這類程序通常利用利用JMPA+DPTRJMPA+DPTR間接轉(zhuǎn)移指令實(shí)現(xiàn)轉(zhuǎn)移。有如下兩種設(shè)計(jì)方間接轉(zhuǎn)移指令實(shí)現(xiàn)轉(zhuǎn)移。有如下兩種設(shè)計(jì)方法:法: 1. 1. 查轉(zhuǎn)移地址表查轉(zhuǎn)移地址表: : 將將轉(zhuǎn)移地址轉(zhuǎn)移地址列成表格,將表格的內(nèi)容作轉(zhuǎn)移的目標(biāo)地址。列成表格,將表格的內(nèi)容作轉(zhuǎn)移的目標(biāo)地址。 2. 2. 查轉(zhuǎn)移指令表查轉(zhuǎn)移指令表: : 將轉(zhuǎn)移到不同程序的將轉(zhuǎn)移到不同程序的轉(zhuǎn)移指令轉(zhuǎn)移指令列成表格,判斷條件后查列成表格,判斷條件后查表,轉(zhuǎn)到表中指令執(zhí)行表,轉(zhuǎn)到表中指令
16、執(zhí)行, ,下面用兩個(gè)例子說(shuō)明。下面用兩個(gè)例子說(shuō)明。v 1. 利用轉(zhuǎn)移地址表實(shí)現(xiàn)轉(zhuǎn)移v 例3-7 根據(jù)R3的內(nèi)容轉(zhuǎn)向?qū)?yīng)的程序,R3的內(nèi)容為0n,處理程序的入口符號(hào)地址分別為PR0PRn (n128)。v 分析:將PR0PRn入口地址列在表格中,每一項(xiàng)占兩個(gè)單元,PRn在表中的偏移量為2n,因此將R3的內(nèi)容乘2即得PRn在表中的偏移地址,從偏移地址2n和2n+1兩個(gè)單元分別取出PRn的高八位地址和低八位地址送DPTR寄存器,用JMP A+DPTR指令(A先清零)即轉(zhuǎn)移到PRn入口執(zhí)行。v ORG 0000Hv MOV A,R3 ;R3Av ADD A,ACC ;A*2v MOV DPTR,#TA
17、Bv PUSH ACCv MOVC A,A+DPTR ;取地址表中高字節(jié)v MOV B,A ;暫存于Bv INC DPLv POP ACCv MOVC A,A+DPTR ;取地址表中低字節(jié)v MOV DPL,Av MOV DPH,B ;DPTR為表中地址v CLR A ;A=0v JMP A+DPTR ;轉(zhuǎn)移v TAB:DW PR0,PR1,PR2,.,PRn ;轉(zhuǎn)移地址表v END01100220.TABTAB+20220 利用轉(zhuǎn)移指令表實(shí)現(xiàn)轉(zhuǎn)移v 例3-8 設(shè)有五個(gè)按鍵 0、1、2、3、4其編碼分別為3AH、47H、65H、70H、8BH,要求根據(jù)按下的鍵轉(zhuǎn)向不同的處理程序,分別為PR0
18、、PR1 /PR2、PR3、PR4,設(shè)按鍵的編碼已在B寄存器中,編出程序。分析分析: 將鍵碼排成表,將鍵碼表中的值和將鍵碼排成表,將鍵碼表中的值和B中的鍵編碼比對(duì),中的鍵編碼比對(duì),記下在鍵碼表中和記下在鍵碼表中和B中的鍵編碼相等的序號(hào),另安排一個(gè)轉(zhuǎn)移中的鍵編碼相等的序號(hào),另安排一個(gè)轉(zhuǎn)移表表,安排安排AJMP指令指令(機(jī)器碼機(jī)器碼),因每條,因每條AJMP指令占二字節(jié),將指令占二字節(jié),將剛才記下的序號(hào)乘剛才記下的序號(hào)乘2即為轉(zhuǎn)移表的偏移地址,利用即為轉(zhuǎn)移表的偏移地址,利用JMP A+DPTR執(zhí)行表內(nèi)的執(zhí)行表內(nèi)的AJMP指令,從而實(shí)現(xiàn)多分支轉(zhuǎn)移,指令,從而實(shí)現(xiàn)多分支轉(zhuǎn)移, 設(shè)設(shè)JPT的地址為的地址
19、為001AH、PR0入口地址為入口地址為0110H、 ,參考,參考2.4.2節(jié),求節(jié),求AJMP PR0的機(jī)器碼的機(jī)器碼0000 0001 0001 0000 001 00001 0000 (2110h )a10a9a8a7a6a5a4a3a2a1a0 v AJMP PR0的機(jī)器碼為2110H, PR1入口地址為0220H AJMP PR1的機(jī)器碼為4120H,轉(zhuǎn)移指令表JPT的內(nèi)容如下所示。設(shè)B=65H,鍵值為2:2041JPT+42002JPT+21021JPTAJMP PR0AJMP PR1AJMP PR2TAB3AHTAB+147HTAB+265HTAB+370H轉(zhuǎn)移指令表轉(zhuǎn)移指令表J
20、PT鍵碼表鍵碼表TAB65HA2B2AA=1A=2A=065H65Hv ORG 0000Hv MOV DPTR,#TAB ;置鍵碼表首址v MOV A,#0 ;表的起始位的偏移量為0v NEXT: PUSH ACCv MOVC A,A+DPTR ;A=鍵碼表的編碼v CJNE A,B,AGAN ;將B中值和鍵碼表的值比較v POP ACCv RL A ;如相等,序號(hào)乘2得分支表內(nèi)偏移量v MOV DPTR,#JPT ;置分支表首址v JMP A+DPTRv AGAN: POP ACC ;不相等比較下一個(gè)v INC A ;序號(hào)加1v CJNE A,#5,NEXTv SJMP $ ;鍵碼查完還沒(méi)有
21、B中按鍵編碼程序結(jié)束v JPT: AJMP PR0 ;分支轉(zhuǎn)移表v AJMP PR1v AJMP PR2v AJMP PR3v AJMP PR4v TAB: DB 3AH,47H,65H,70H,8BH ;鍵碼表v ENDv 例例 根據(jù)根據(jù)R7R7的內(nèi)容轉(zhuǎn)向各個(gè)操作程序,即當(dāng)(的內(nèi)容轉(zhuǎn)向各個(gè)操作程序,即當(dāng)(R7R7)=0=0,轉(zhuǎn)向轉(zhuǎn)向OPR0OPR0,v (R7R7)=1=1,轉(zhuǎn)向轉(zhuǎn)向OPR1OPR1, (R7R7)=N=N,轉(zhuǎn)向轉(zhuǎn)向OPRNOPRN。v JNMP1JNMP1: MOV DPTRMOV DPTR,#JPTAB1#JPTAB1v MOV A MOV A,R7R7v ADD A A
22、DD A,R7R7v JNC NOAD JNC NOADv INC DPH INC DPHv NOADNOAD: JMP A+DPTRJMP A+DPTRv JATAB1: AJMP OPR0JATAB1: AJMP OPR0v AJMP OPR1 AJMP OPR1v v AJMP OPRN AJMP OPRN例: 要求根據(jù)R6R7中的數(shù)據(jù)轉(zhuǎn)向?qū)?yīng)的操作程序JUMP2: MOV DPTR,#JPTAB2 MOV A,R6 JPTAB2: LJMP OPR0 MOV B,#03H LJMP OPR1 MUL AB ADD A,DPH LJMP OPRN MOV DPH,A MOV A,R7 M
23、OV B,#03H MUL AB XCH A,B ADD A,DPH MOV DPH,A XCH A,B JMP A+DPTR三.采用“RET”指令的散轉(zhuǎn)程序例:例:根據(jù)根據(jù)R7的內(nèi)容轉(zhuǎn)向相應(yīng)的操作程序的內(nèi)容轉(zhuǎn)向相應(yīng)的操作程序 JUMP5: MOV DPTR,#TAB5 MOV A,R7 ADD A,R7 JNC NADD INC DPH NADD: MOV R3,A MOVC A,A+DPTR XCH A,R3 INC A MOVC A,A+DPTR PUSH A MOV A,R3 PUSH A RET TAB5: DW OPR0 DW OPR1 循循 環(huán)環(huán) 程程 序序 設(shè)設(shè) 計(jì)計(jì) 當(dāng)程序中
24、的某些指令需要反復(fù)執(zhí)行多次時(shí),采用循環(huán)程當(dāng)程序中的某些指令需要反復(fù)執(zhí)行多次時(shí),采用循環(huán)程序的方式,這樣會(huì)使序的方式,這樣會(huì)使程序縮短,節(jié)省存儲(chǔ)單元(并不節(jié)省程序縮短,節(jié)省存儲(chǔ)單元(并不節(jié)省執(zhí)行時(shí)間)。執(zhí)行時(shí)間)。 循環(huán)次數(shù)的控制,有兩種控制方式循環(huán)次數(shù)的控制,有兩種控制方式:第一種方法第一種方法先判斷再處理即先判斷滿不滿足循環(huán)條件,如不滿足,就先判斷再處理即先判斷滿不滿足循環(huán)條件,如不滿足,就不循環(huán),多以循環(huán)條件控制。不循環(huán),多以循環(huán)條件控制。第二種方法第二種方法先處理再判斷,即循環(huán)執(zhí)行一遍后,下一輪還需不需要進(jìn)先處理再判斷,即循環(huán)執(zhí)行一遍后,下一輪還需不需要進(jìn)行,多以計(jì)循環(huán)次數(shù)控制。循環(huán)可以
25、有單重循環(huán)和多重循行,多以計(jì)循環(huán)次數(shù)控制。循環(huán)可以有單重循環(huán)和多重循環(huán),在多重循環(huán)中,內(nèi)外循環(huán)不能交叉,也不允許外循環(huán)環(huán),在多重循環(huán)中,內(nèi)外循環(huán)不能交叉,也不允許外循環(huán)跳入內(nèi)循環(huán)。下面通過(guò)幾個(gè)實(shí)例說(shuō)明循環(huán)程序的設(shè)計(jì)方法。跳入內(nèi)循環(huán)。下面通過(guò)幾個(gè)實(shí)例說(shuō)明循環(huán)程序的設(shè)計(jì)方法。v 例 3-9 設(shè)計(jì)一個(gè)延時(shí)10ms的延時(shí)子程序,已知單片機(jī)使用的晶振為6MHz。v 分析 :v 延時(shí)時(shí)間與兩個(gè)因素有關(guān):晶振頻率和循環(huán)次數(shù)。由于晶振采用6MHz,一個(gè)機(jī)器周期是2s,用單循環(huán)可以實(shí)現(xiàn)1ms延時(shí),外循環(huán)10次即可達(dá)10ms延時(shí)。v 內(nèi)循環(huán)如何實(shí)現(xiàn)1ms延時(shí)呢,程序中可先以未知數(shù)MT代替,從附錄A查每條指令機(jī)器周
26、期計(jì)算程序的執(zhí)行時(shí)間。 v ORG 0020H v MOV R0,#0AH ;外循環(huán)10次v DL2: MOV R1,#MT ;內(nèi)循環(huán)MT次v DL1: NOP v NOP ;空操作指令v DJNZ R1,DL1 v DJNZ R0,DL2 RET內(nèi)循環(huán)內(nèi)循環(huán)DL1到指令到指令DJNZ R1,DL1的計(jì)算:的計(jì)算: (1+1+2)2SMT=1000S MT=125=7DH將將7DH代入上面程序的代入上面程序的MT,計(jì)算總的延時(shí)時(shí)間:,計(jì)算總的延時(shí)時(shí)間: 1+1+(1+1+2)125+2 10+22S =10066S=10.066mS若需要進(jìn)一步精確時(shí)間,如何修改程序。若需要進(jìn)一步精確時(shí)間,如何
27、修改程序。內(nèi)內(nèi)外外 數(shù)字濾波就是采集多個(gè)數(shù)以后經(jīng)過(guò)處理得到一個(gè)更加接近于真實(shí)值的數(shù)一、算術(shù)平均濾波例:8次采樣值依次存放在30H-37H連續(xù)單元中,平均值求出后,保留在累加器中FILT3FILT3: CLR A FILT31: SWAP A CLR A FILT31: SWAP A MOV R2 MOV R2,A RL AA RL A MOV R3 MOV R3,A XCH A,R3A XCH A,R3 MOV R0 MOV R0,#30H SWAP A#30H SWAP AFILT30FILT30: MOV AMOV A,R0 RL AR0 RL A ADD A,R3 ADD A,#80H
28、ADD A,R3 ADD A,#80H MOV R3,A ANL A,#1FH MOV R3,A ANL A,#1FH CLR A ADDC A,R3 CLR A ADDC A,R3 ADDC A,R2 RET ADDC A,R2 RET MOV R2,A MOV R2,A INC R0 INC R0 CJNE R0,#38H,FILT30 CJNE R0,#38H,FILT30數(shù)字濾波程序數(shù)字濾波程序二、中值濾波例、現(xiàn)有3次采樣值存放在R2、R3、R4中,經(jīng)過(guò)本算法之后,中值在R3中FILT2: MOV A,R2 MOV A,R4 CLR C XCH A,R3 SUBB A,R3 XCH A
29、,R4 JC FILT21 CLR C MOV A,R2 SUBB A,R2 XCH A,R3 JNC FILT22 MOV R2,A MOV A,R2FILT21:MOV A,R3 MOV R3,A CLR C FILT22: RET SUBB A,R4 JC FILT22數(shù)字濾波數(shù)字濾波三、去極值算術(shù)平均濾波三、去極值算術(shù)平均濾波v 例:采樣例:采樣1010個(gè)值,去掉最大最小值后平均個(gè)值,去掉最大最小值后平均FILT4FILT4: ACALL INPUT SUBB A ACALL INPUT SUBB A,R4 R4 MOV R3 MOV R3,A JC FILT41 A JC FILT4
30、1 MOV R2 MOV R2,#0 MOV A#0 MOV A,R6R6 MOV R4 MOV R4,A MOV R4A MOV R4,A A MOV R5 MOV R5,A SJMP FILT42A SJMP FILT42 MOV R7 MOV R7,#9 FILT41#9 FILT41:MOV AMOV A,R6R6FILT40FILT40: ACALL INPUT CLR C ACALL INPUT CLR C MOV R6 MOV R6,A SUBB AA SUBB A,R5R5 ADD A ADD A,R3 JNC FILT42R3 JNC FILT42 MOV R3 MOV R3
31、,A MOV AA MOV A,R6R6 CLR A MOV R5 CLR A MOV R5,A A ADDC A ADDC A,R2R2 MOV R2 MOV R2,A A MOV A MOV A,R6 R6 FILT42: DJNZ R7,F(xiàn)ILT40 CLR C MOV A,R3 SUBB A,R4 XCH A,R2 SUBB A,#0 XCH A,R2 SUBB A,R5 MOV R3,A MOV A,R2 SUBB A,#0 LJMP FILT31習(xí)題:將40H-45H中的6個(gè)數(shù)去掉2個(gè)最小值,然后求平均值。四、滑動(dòng)平均濾波四、滑動(dòng)平均濾波v 例:在例:在4040H-4FHH-4FH
32、中有中有1616個(gè)單元,個(gè)單元,R0R0作為對(duì)尾指針,每存入作為對(duì)尾指針,每存入一個(gè)新數(shù),就去掉一個(gè)老數(shù)一個(gè)新數(shù),就去掉一個(gè)老數(shù)v FILT6: ACALL INPUT ADDC A,R2v MOV R0,A MOV R2,Av INC R0 INC R1v MOV A,R0 CJNE R1,#50H,FILT60v ANL A,#4FH SWAP Av MOV R0,A XCH A,R3v MOV R1,#40H SWAP Av MOV R2,#0 ADD A,#80Hv MOV R3,#0 ANL A,#0FHv FILT60: MOV A,R1 ADDC A,R3v ADD A,R3 R
33、ETv MOV R3,Av CLR A五五. . 加權(quán)平均濾波加權(quán)平均濾波設(shè)有設(shè)有8 8個(gè)數(shù)據(jù)個(gè)數(shù)據(jù), , 存放在存放在3030H-37HH-37H單元中單元中, , 程序如下程序如下: : FILT5: MOV R0,#30H MOV A,R3FILT5: MOV R0,#30H MOV A,R3 MOV DPTR,#CI RLC A MOV DPTR,#CI RLC A MOV R2,#0 CLR A MOV R2,#0 CLR A MOV R3.#0 ADDC A,R2 MOV R3.#0 ADDC A,R2 FILT50: MOV B,R0 RET FILT50: MOV B,R0 RET CLR A CI: DB 18,22,26,30,34,38,42,46 CLR A CI: DB 18,22,26,30,34,38,42,46 MOVC A
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 國(guó)內(nèi)水路貨物運(yùn)輸合同
- 學(xué)校場(chǎng)地租賃協(xié)議
- 委托擔(dān)保合同展期協(xié)議
- 汽車居間服務(wù)協(xié)議
- 電話外呼系統(tǒng)合同
- 文化傳媒項(xiàng)目推廣執(zhí)行合同
- 船舶維修服務(wù)合同
- 六安職業(yè)技術(shù)學(xué)院《運(yùn)籌學(xué)(Ⅰ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 華南農(nóng)業(yè)大學(xué)《微積分A(1)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河北師范大學(xué)匯華學(xué)院《優(yōu)化方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 課題申報(bào)參考:法國(guó)漢學(xué)家弗朗索瓦·朱利安對(duì)中國(guó)山水畫論的闡釋研究
- 2025年北京生命科技研究院招聘筆試參考題庫(kù)含答案解析
- 銀行金融機(jī)構(gòu)銀行金融服務(wù)協(xié)議
- GB/T 27697-2024立式油壓千斤頂
- 《消防機(jī)器人相關(guān)技術(shù)研究》
- 游泳館安全隱患排查
- 《媒介社會(huì)學(xué)》課件
- 項(xiàng)目設(shè)計(jì)報(bào)告范文高中
- 成人手術(shù)后疼痛評(píng)估與護(hù)理團(tuán)體標(biāo)準(zhǔn)
- zemax-優(yōu)化函數(shù)說(shuō)明書
- 2021年《民法典擔(dān)保制度司法解釋》適用解讀之擔(dān)保解釋的歷程
評(píng)論
0/150
提交評(píng)論