版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、支持寫入單片機(jī)或仿真調(diào)試的目標(biāo)程序有兩種文件格式:支持寫入單片機(jī)或仿真調(diào)試的目標(biāo)程序有兩種文件格式: BIN BIN文件和文件和 HEX HEX文件文件 BIN BIN文件是由編譯器生成的二進(jìn)制文件,是程序的機(jī)器碼,文件是由編譯器生成的二進(jìn)制文件,是程序的機(jī)器碼, HEX HEX文件是由文件是由INTERINTER公司定義公司定義(dngy)(dngy)的一種格式,這種格式包括地址、數(shù)據(jù)和的一種格式,這種格式包括地址、數(shù)據(jù)和校驗(yàn)碼,并用校驗(yàn)碼,并用ASCIIASCII碼來(lái)存儲(chǔ),可供顯示和打印。碼來(lái)存儲(chǔ),可供顯示和打印。HEXHEX文件需通過(guò)符號(hào)轉(zhuǎn)換程序文件需通過(guò)符號(hào)轉(zhuǎn)換程序OHS51OHS51
2、進(jìn)行轉(zhuǎn)換進(jìn)行轉(zhuǎn)換 兩種語(yǔ)言的操作過(guò)程見(jiàn)圖兩種語(yǔ)言的操作過(guò)程見(jiàn)圖3-13-1。第1頁(yè)/共54頁(yè)第一頁(yè),共55頁(yè)。連接連接(linji)/定位器定位器L51匯編語(yǔ)言匯編語(yǔ)言(hu bin y yn)源程序源程序匯編器匯編器A51符號(hào)轉(zhuǎn)換符號(hào)轉(zhuǎn)換(zhunhun)程序程序OHS51絕對(duì)地址目絕對(duì)地址目標(biāo)程序標(biāo)程序 .BINC語(yǔ)言程序語(yǔ)言程序浮動(dòng)浮動(dòng)地址地址目標(biāo)目標(biāo)程序程序編譯器編譯器C51 HEX圖圖 3-1 兩種語(yǔ)言源程序轉(zhuǎn)換成目標(biāo)程序兩種語(yǔ)言源程序轉(zhuǎn)換成目標(biāo)程序第2頁(yè)/共54頁(yè)第二頁(yè),共55頁(yè)。 目前很多公司將編輯器、匯編器、編目前很多公司將編輯器、匯編器、編譯器、連接譯器、連接/ /定位器、符
3、號(hào)轉(zhuǎn)換程序做成集定位器、符號(hào)轉(zhuǎn)換程序做成集成軟件包,用戶進(jìn)入該集成環(huán)境,編輯好程成軟件包,用戶進(jìn)入該集成環(huán)境,編輯好程序后,只需點(diǎn)擊相應(yīng)序后,只需點(diǎn)擊相應(yīng)(xingyng)(xingyng)菜單就可菜單就可以完成上述的各步,如以完成上述的各步,如WAVEWAVE、KEIL KEIL ,WAVEWAVE集成軟件的使用見(jiàn)附錄。集成軟件的使用見(jiàn)附錄。匯編:將匯編語(yǔ)言源程序轉(zhuǎn)換成機(jī)器語(yǔ)言目匯編:將匯編語(yǔ)言源程序轉(zhuǎn)換成機(jī)器語(yǔ)言目標(biāo)程序的過(guò)程稱為匯編。標(biāo)程序的過(guò)程稱為匯編。匯編程序:能將匯編語(yǔ)言源程序轉(zhuǎn)換成機(jī)器匯編程序:能將匯編語(yǔ)言源程序轉(zhuǎn)換成機(jī)器語(yǔ)言目標(biāo)程序的系統(tǒng)軟件稱為匯編程序。語(yǔ)言目標(biāo)程序的系統(tǒng)軟件
4、稱為匯編程序。第3頁(yè)/共54頁(yè)第三頁(yè),共55頁(yè)。匯編的方法:匯編的方法有兩種匯編的方法:匯編的方法有兩種1.1.手工匯編:手工匯編: 人工查指令表,查出程序中每條指令人工查指令表,查出程序中每條指令對(duì)應(yīng)的機(jī)器代碼。早期的計(jì)算機(jī)使用。對(duì)應(yīng)的機(jī)器代碼。早期的計(jì)算機(jī)使用。2.2.機(jī)器匯編:機(jī)器匯編: 用計(jì)算機(jī)中的匯編程序?qū)τ脩粲糜?jì)算機(jī)中的匯編程序?qū)τ脩?yngh)(yngh)源程序進(jìn)行匯編。源程序進(jìn)行匯編。 用機(jī)器匯編要提供給匯編一些信息,用機(jī)器匯編要提供給匯編一些信息,遵循匯編程序的一些約定。這些由偽指令遵循匯編程序的一些約定。這些由偽指令指定。指定。第4頁(yè)/共54頁(yè)第四頁(yè),共55頁(yè)。3)提供錯(cuò)誤
5、信息4)提供目標(biāo)執(zhí)行文件(wnjin)(*.OBJ/*.HEX)和列表文件(wnjin)(*.LST) 地址(dzh) 機(jī)器碼 源程序 ORG 2000H 2000H 78 30 MAIN: MOV R0,#30H 2002H E6 MOV A,R0 匯編匯編(hubin)的主要任務(wù)的主要任務(wù)1)確定程序中每條匯編語(yǔ)言指令的指令機(jī)器碼2)確定每條指令在存儲(chǔ)器中的存放地址第5頁(yè)/共54頁(yè)第五頁(yè),共55頁(yè)。1.機(jī)器指令:指令系統(tǒng)中的全部指令。每條機(jī)器指令都有對(duì)應(yīng)的機(jī)器代碼,可以被CPU執(zhí)行。2.偽指令: 匯編(hubin)控制指令,沒(méi)有指令代碼,只用于匯編(hubin)過(guò)程,為匯編(hubin)程
6、序提供匯編(hubin)信息。一 . 匯 編 語(yǔ) 言 指 令(zhlng)類型3.宏指令 宏匯編功能:將需要反復(fù)多次執(zhí)行的程序段定義(dngy)成一個(gè)宏指令名(宏定義(dngy))。編程時(shí),可在程序中使用宏指令名來(lái)替代被定義(dngy)的程序段(宏調(diào)用)。第6頁(yè)/共54頁(yè)第六頁(yè),共55頁(yè)。宏定義(dngy)過(guò)程宏調(diào)用過(guò)程: 宏指令(zhlng)名 實(shí)際參數(shù) 宏指令(zhlng)名 實(shí)際參數(shù)宏指令(zhlng)名 MACRO 形式參數(shù) ;被定義的程序段 ENDM第7頁(yè)/共54頁(yè)第七頁(yè),共55頁(yè)。二偽指令二偽指令 常用常用(chn yn)(chn yn)偽偽指令及功能指令及功能1.1.起始指令起始
7、指令 ORG nn ORG nn功能:定義程序功能:定義程序(chngx)(chngx)或數(shù)據(jù)塊的起始地址?;驍?shù)據(jù)塊的起始地址。指示此語(yǔ)句后面的程序指示此語(yǔ)句后面的程序(chngx)(chngx)或數(shù)據(jù)塊以或數(shù)據(jù)塊以nnnn為為起始地址,連續(xù)存放在程序起始地址,連續(xù)存放在程序(chngx)(chngx)存儲(chǔ)器中。存儲(chǔ)器中。 指令地址指令地址 機(jī)器碼機(jī)器碼源程序源程序(chngx)(chngx) ORG 2000H ORG 2000H 2000H 78 30 2000H 78 30 MAIN MAIN:MOV R0MOV R0,#30H#30H 2002H E6 2002H E6 MOV A M
8、OV A,R0R0 ORG 3000H 3000H 23 TAB: DB 23H,100,A 3001H 64 3002H 41第8頁(yè)/共54頁(yè)第八頁(yè),共55頁(yè)。2.字節(jié)定義 標(biāo)號(hào): DB(字節(jié)常數(shù),或字符(z f)或表達(dá)式)功能:指示在程序存儲(chǔ)器中以標(biāo)號(hào)為起始地址的單元里存放的數(shù)為字節(jié)數(shù)據(jù)(八位二進(jìn)制數(shù))。例如 LN:DB 32,C,25H,-1LNLN+3 地址單元依次存放20H , 43H , 25H ,F(xiàn)FH地址地址 數(shù)據(jù)數(shù)據(jù)LN20LN+143LN+225LN+3FF3.3.字定義字定義 標(biāo)號(hào):標(biāo)號(hào):DW DW (字常數(shù)或表達(dá)式)(字常數(shù)或表達(dá)式)作用:作用: 指示指示(zhsh)(
9、zhsh)在程序存儲(chǔ)器中以在程序存儲(chǔ)器中以標(biāo)號(hào)為標(biāo)號(hào)為起始地址的單元里存放的數(shù)為字?jǐn)?shù)據(jù)起始地址的單元里存放的數(shù)為字?jǐn)?shù)據(jù)(即(即1616位的二進(jìn)制數(shù)),例如:位的二進(jìn)制數(shù)),例如:GH GH :DW 1234HDW 1234H,5678H5678H,0808GH1234GH+25678GH+40008第9頁(yè)/共54頁(yè)第九頁(yè),共55頁(yè)。 5. 5.等值指令等值指令 標(biāo)號(hào)標(biāo)號(hào) EQU EQU(數(shù)值(數(shù)值(shz)(shz)表達(dá)式)表達(dá)式) 表示表示EQUEQU兩邊的量等值,用于為標(biāo)號(hào)或標(biāo)識(shí)符賦值。兩邊的量等值,用于為標(biāo)號(hào)或標(biāo)識(shí)符賦值。 例如:例如:X1 EQU 2000HX1 EQU 2000H X
10、2 EQU 0FH X2 EQU 0FH MAIN:MOV DPTR MAIN:MOV DPTR,#X1 ; DPTR=2000H #X1 ; DPTR=2000H ADD A ADD A,#X2 ; A=A+0FH#X2 ; A=A+0FH4.4.保留字節(jié)保留字節(jié) 標(biāo)號(hào):標(biāo)號(hào):DS DS (數(shù)值表達(dá)式)(數(shù)值表達(dá)式)作用:指示在程序存儲(chǔ)器中保留以標(biāo)號(hào)為起始地作用:指示在程序存儲(chǔ)器中保留以標(biāo)號(hào)為起始地址的若干址的若干(rugn)(rugn)字節(jié)單元,其單元個(gè)數(shù)由數(shù)值表達(dá)式指定。字節(jié)單元,其單元個(gè)數(shù)由數(shù)值表達(dá)式指定。例如例如 L1 L1:DS 32 ; DS 32 ; 從從L1L1地址開(kāi)始保留地
11、址開(kāi)始保留3232個(gè)存儲(chǔ)單元。個(gè)存儲(chǔ)單元。第10頁(yè)/共54頁(yè)第十頁(yè),共55頁(yè)。6. 6. 位定義位定義(dngy) (dngy) 標(biāo)號(hào)標(biāo)號(hào) BIT BIT 位地址位地址 作用:作用: 同同EQUEQU指令,不過(guò)定義指令,不過(guò)定義(dngy)(dngy)的是位操作地址。的是位操作地址。例如例如 AIC BIT P1.1 AIC BIT P1.1。7.7.匯編結(jié)束匯編結(jié)束(jish) END(jish) END作用:作用: 指示源程序段結(jié)束指示源程序段結(jié)束(jish)(jish)。 END END指令放在程序的最后。指令放在程序的最后。A51A51匯編程序還有一些其它的偽指令,列在教材匯編程序還有
12、一些其它的偽指令,列在教材表表3-13-1中,以備查閱。中,以備查閱。第11頁(yè)/共54頁(yè)第十一頁(yè),共55頁(yè)。3-2 3-2 匯編語(yǔ)言匯編語(yǔ)言(hu bin y yn)(hu bin y yn)程序程序設(shè)計(jì)步驟設(shè)計(jì)步驟一一. .確定方案和計(jì)算方法確定方案和計(jì)算方法二二. .了解應(yīng)用系統(tǒng)的硬件配置了解應(yīng)用系統(tǒng)的硬件配置(pizh)(pizh)、性能指標(biāo)、性能指標(biāo)三三. .建立系統(tǒng)數(shù)學(xué)模型,確定控制算法和操作步驟建立系統(tǒng)數(shù)學(xué)模型,確定控制算法和操作步驟四四. .合理分配存儲(chǔ)器單元和了解合理分配存儲(chǔ)器單元和了解I/OI/O接口地址接口地址五.編制源程序1.按功能設(shè)計(jì)程序,明確(mngqu)各程序之間的
13、相互關(guān)系2.用流程圖表示程序結(jié)構(gòu)和功能3.程序中用注釋說(shuō)明指令在程序中的作用,方便閱讀、調(diào)試和修改第12頁(yè)/共54頁(yè)第十二頁(yè),共55頁(yè)。順序程序設(shè)計(jì)順序程序設(shè)計(jì)例例3-1 3-1 編程將外部數(shù)據(jù)存儲(chǔ)器編程將外部數(shù)據(jù)存儲(chǔ)器的的000EH000EH和和000FH000FH單元單元(dnyun)(dnyun)的內(nèi)容相換。的內(nèi)容相換。常用常用(chn yn)(chn yn)程序結(jié)程序結(jié)構(gòu)構(gòu) 順序程序、分支程序順序程序、分支程序 循環(huán)程序、子程序循環(huán)程序、子程序000EH000FH000EH000FH000EH000FH000EH000FH分析分析: : 外部數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)操作外部數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)操作
14、只能用只能用MOVXMOVX指令,且只能和指令,且只能和A A之間之間傳送,因此必須用一個(gè)中間環(huán)節(jié)作傳送,因此必須用一個(gè)中間環(huán)節(jié)作暫存,設(shè)用暫存,設(shè)用20H20H單元單元(dnyun)(dnyun)。用。用R0R0、R1R1指示兩單元指示兩單元(dnyun)(dnyun)的低的低八位地址,高八位地址由八位地址,高八位地址由P2P2指示。指示。編程過(guò)程如下:編程過(guò)程如下: 000EH000FH000EH000FH000EH000FH第13頁(yè)/共54頁(yè)第十三頁(yè),共55頁(yè)。 ORG 0000H MOV P2, #00H ;送地址(dzh)高八位至P2口 MOV R0, #0EH ;R0= 0EH M
15、OV R1, #0FH ;R1=OFH MOVX A, R0 ;A=(000EH) MOV 20H, A ;(20H)=(000EH) MOVX A, R1 ;A=(000FH) XCH A, 20H ; A=(000EH),(20H)=(000FH) MOVX R1, A MOV A, 20H MOVX R0, A ;交換后的數(shù)送各單元 SJMP $ END第14頁(yè)/共54頁(yè)第十四頁(yè),共55頁(yè)。3-3 3-3 順序程序順序程序順序程序順序程序( (簡(jiǎn)單程序簡(jiǎn)單程序) ),程序走向只有一條,程序走向只有一條(y tio)(y tio)路徑路徑例3-2:將R4R5雙字節(jié)符號(hào)數(shù)求補(bǔ)碼(b m)程序
16、。 ORG 0000H MOV A,R4 JB ACC.7, CPLL ;判符號(hào)(fho)位 SJMP $ ;正數(shù)的補(bǔ)碼原碼CPLL: MOV A,R5 ;取低字節(jié) CPL A ADD A,#1 ;低字節(jié)變補(bǔ) MOV R5,A MOV A,R4 ;取高字節(jié) CPL A ADDC A,#0 ;高字節(jié)變補(bǔ) ORL A, #80H ;恢復(fù)負(fù)號(hào) MOV R4,A SJMP $第15頁(yè)/共54頁(yè)第十五頁(yè),共55頁(yè)。地址數(shù)據(jù)TAB0TAB+1 1TAB+2 4TAB+3 9TAB+4 16TAB+5 25例例3-5 3-5 設(shè)變量放在片內(nèi)設(shè)變量放在片內(nèi)RAMRAM的的20H20H單元單元, ,其值為其值為
17、00H-05H00H-05H之間之間, ,要求編查表程序要求編查表程序(chngx),(chngx),查出變量的平方值查出變量的平方值, , 并放并放入片內(nèi)入片內(nèi)RAMRAM的的21H21H單元。單元。 ORG 0000H ORG 0000H MOV DPTR, #TAB MOV DPTR, #TAB MOV A, 20H MOV A, 20H MOVC A, A+DPTR ; MOVC A, A+DPTR ;查表查表 MOV 21H, AMOV 21H, A SJMP $ SJMP $TAB: DB 0,1,4,9,16,25 TAB: DB 0,1,4,9,16,25 END END分析分
18、析 :在程序存儲(chǔ)器安排一張平方表,首地址:在程序存儲(chǔ)器安排一張平方表,首地址(dzh)(dzh)為為TABTAB,以,以DPTRDPTR指向指向表首址,表首址,A A存放變量值,利用查表指令存放變量值,利用查表指令MOVC AMOVC A,A+DPTRA+DPTR,即可求得,即可求得表中數(shù)據(jù)用表中數(shù)據(jù)用BCDBCD碼存放合乎人們的習(xí)慣碼存放合乎人們的習(xí)慣. . 如果平方值為兩個(gè)字節(jié)如果平方值為兩個(gè)字節(jié)(z ji),程序應(yīng)如何編。,程序應(yīng)如何編。DPTRA第16頁(yè)/共54頁(yè)第十六頁(yè),共55頁(yè)。 ORG 0000H MOV A,R2 JNB ACC.7,N ;為正數(shù)(zhngsh)? CPL A
19、;負(fù)數(shù)變補(bǔ) INC A MOV R2,AN: SJMP $ ;結(jié)束3.4 分支程序的設(shè)計(jì)由條件(tiojin)轉(zhuǎn)移指令構(gòu)成程序判斷框部分,形成分支結(jié)構(gòu)3.4.1 單分支程序一個(gè)判斷(pndun)決策框,兩種分支結(jié)構(gòu)圖。條件滿足條件滿足?N影響條件影響條件Y處理處理1處理處理2例1 求8位有符號(hào)數(shù)的絕對(duì)值。方法:正數(shù)不變,負(fù)數(shù)變補(bǔ)條件滿足條件滿足?N影響條件影響條件Y處理段處理段第17頁(yè)/共54頁(yè)第十七頁(yè),共55頁(yè)。 例例2 2 用單片機(jī)加重力傳感器作磅秤,稱出重量用單片機(jī)加重力傳感器作磅秤,稱出重量(zhngling)(zhngling)后算出行李運(yùn)費(fèi)價(jià)格,其稱出的重量后算出行李運(yùn)費(fèi)價(jià)格,其稱
20、出的重量(zhngling)(zhngling)以以10kg10kg為為1 1個(gè)計(jì)價(jià)單位個(gè)計(jì)價(jià)單位G , GG , G已存入已存入40H40H單元。最終運(yùn)費(fèi)存放在單元。最終運(yùn)費(fèi)存放在41H41H單元。計(jì)價(jià)方法單元。計(jì)價(jià)方法為為50kg50kg以內(nèi)按以內(nèi)按3 3元元/G, 50kg/G, 50kg以上以上計(jì)價(jià)計(jì)價(jià): : 總重按總重按3 3元元/G,/G,,超過(guò),超過(guò)50kg50kg部分加收部分加收2 2元。元。 由此列出算式:由此列出算式: G3+(G-5)2;當(dāng)G5M=M=G G3 ;3 ;當(dāng)當(dāng)G5 G5 3G3G因重復(fù)使用,先暫存在因重復(fù)使用,先暫存在(cnzi)R2(cnzi)R2。流程見(jiàn)
21、左。流程見(jiàn)左, , 程序如程序如下:下:第18頁(yè)/共54頁(yè)第十八頁(yè),共55頁(yè)。 ORG 0100HFRT: MOV A,40H;取行李(xng li)重量計(jì)價(jià)單位GMOV R3,AMOV B,#03H;運(yùn)費(fèi)M=G3MUL ABMOV R2,A;暫存3G MOV A,R3 ;取回G CJNE A,#05H,L1 ;G 5 ?SJMP WETCL1:JC WETC ;小于5,轉(zhuǎn)至WETCSUBB A,#05H;否則 M=3G+2(G-5) RLC AADD A,R2 MOV R2 ,AWETC:MOV 41H,R2 ;存運(yùn)費(fèi) M RET第19頁(yè)/共54頁(yè)第十九頁(yè),共55頁(yè)。 多分支散轉(zhuǎn)程序的設(shè)計(jì)多
22、分支散轉(zhuǎn)程序的設(shè)計(jì) 有一類分支程序有一類分支程序,它根據(jù)不同的輸入條件或不同的運(yùn)它根據(jù)不同的輸入條件或不同的運(yùn)算結(jié)果算結(jié)果,轉(zhuǎn)向不同的處理程序轉(zhuǎn)向不同的處理程序,稱之為散轉(zhuǎn)程序。這類程序稱之為散轉(zhuǎn)程序。這類程序通常利用通常利用JMP A+DPTR間接轉(zhuǎn)移指令實(shí)現(xiàn)轉(zhuǎn)移。有如間接轉(zhuǎn)移指令實(shí)現(xiàn)轉(zhuǎn)移。有如下兩種設(shè)計(jì)方法:下兩種設(shè)計(jì)方法: 1. 查轉(zhuǎn)移地址表查轉(zhuǎn)移地址表: 將轉(zhuǎn)移地址列成表格,將表格的內(nèi)容作轉(zhuǎn)移的目標(biāo)地將轉(zhuǎn)移地址列成表格,將表格的內(nèi)容作轉(zhuǎn)移的目標(biāo)地址。址。 2. 查轉(zhuǎn)移指令表查轉(zhuǎn)移指令表: 將轉(zhuǎn)移到不同程序的轉(zhuǎn)移指令列成表格,判斷條件后將轉(zhuǎn)移到不同程序的轉(zhuǎn)移指令列成表格,判斷條件后查表,
23、轉(zhuǎn)到表中指令執(zhí)行查表,轉(zhuǎn)到表中指令執(zhí)行,下面下面(xi mian)用兩個(gè)例子說(shuō)明。用兩個(gè)例子說(shuō)明。第20頁(yè)/共54頁(yè)第二十頁(yè),共55頁(yè)。1. 1. 利用轉(zhuǎn)移地址表實(shí)現(xiàn)轉(zhuǎn)移利用轉(zhuǎn)移地址表實(shí)現(xiàn)轉(zhuǎn)移 例例3-7 3-7 根據(jù)根據(jù)R3R3的內(nèi)容轉(zhuǎn)向?qū)?yīng)的程序,的內(nèi)容轉(zhuǎn)向?qū)?yīng)的程序,R3R3的內(nèi)容為的內(nèi)容為0 0n,n,處理程序的入口符號(hào)地址分別為處理程序的入口符號(hào)地址分別為PR0PR0PRn PRn (n128)(nR1 MOV R2,#0 ;存放結(jié)果的高位清零;存放結(jié)果的高位清零 MOV A, R0 ;BCD碼千位數(shù)碼千位數(shù)A MOV R3, ALOOP: MOV A, R3 MOV B, #10
24、MUL AB MOV R3,A ;R3*10低低8位位R3 MOV A, B XCH A,R2 ;R3*10高高8位暫存位暫存R2 MOV B, #10 MUL AB ADD A,R2 ;R2*10(R3*10)高)高8位位第40頁(yè)/共54頁(yè)第四十頁(yè),共55頁(yè)。MOV R2, AINC R0 ;取下一個(gè);取下一個(gè)(y )BCD數(shù)數(shù)MOV A, R3ADD A, R0MOV R3, AMOV A, R2ADDC A,#0 ;加低字節(jié)來(lái)的進(jìn)位;加低字節(jié)來(lái)的進(jìn)位MOV R2, ADJNZ R1, LOOPSJMP $END第41頁(yè)/共54頁(yè)第四十一頁(yè),共55頁(yè)。 MCS-51 MCS-51單片機(jī)有著
25、優(yōu)異單片機(jī)有著優(yōu)異(yuy)(yuy)的位邏輯功能的位邏輯功能, ,可以方便可以方便的實(shí)現(xiàn)各種復(fù)雜的邏輯運(yùn)算的實(shí)現(xiàn)各種復(fù)雜的邏輯運(yùn)算. .這種用軟件替代硬件這種用軟件替代硬件的方法的方法, ,可以大大簡(jiǎn)化甚至完全不用硬件可以大大簡(jiǎn)化甚至完全不用硬件, ,但比硬件但比硬件要多花運(yùn)算時(shí)間。要多花運(yùn)算時(shí)間。例例3-17 3-17 編寫一程序編寫一程序, ,以實(shí)現(xiàn)圖以實(shí)現(xiàn)圖3-73-7中的邏輯運(yùn)算電路中的邏輯運(yùn)算電路. .3.6 3.6 位操作程序設(shè)計(jì)位操作程序設(shè)計(jì)(chn (chn x sh j)x sh j)第42頁(yè)/共54頁(yè)第四十二頁(yè),共55頁(yè)。P1.311&1P1.1P2.2TF0IE
26、125H(位)26H(位) 其中其中P1.1P1.1和和P2.2P2.2分別是端口線上的信息分別是端口線上的信息,TF0,TF0和和IE1IE1分別是定時(shí)分別是定時(shí)(dn sh)(dn sh)器定時(shí)器定時(shí)(dn sh)(dn sh)溢出標(biāo)志和外溢出標(biāo)志和外部中請(qǐng)求標(biāo)志部中請(qǐng)求標(biāo)志, 25H, 25H和和26H26H分別是兩個(gè)位地址分別是兩個(gè)位地址, , 運(yùn)算結(jié)果運(yùn)算結(jié)果由端口線由端口線P1.3P1.3輸出。輸出。. . 圖圖3-4 硬件硬件(yn jin)邏輯運(yùn)算電路邏輯運(yùn)算電路第43頁(yè)/共54頁(yè)第四十三頁(yè),共55頁(yè)。程序(chngx)如下:START:MOV C,P2.2 ORL C,TF0
27、 ANL C,P1.1 MOV F0,C MOV C,IE1 ORL C,/25H ANL C,F0 ANL C,/26H MOV P1.3,C SJMP $第44頁(yè)/共54頁(yè)第四十四頁(yè),共55頁(yè)。例3-18 設(shè)累加器A的各位ACC.0ACC.7分別(fnbi)記為X0X7,編制程序用軟件實(shí)現(xiàn)下式: Y=X0X1X2+X0X1X2+X0X1X2X3+X4X5X6X7 X0 BIT ACC.0 X1 BIT ACC.1 X2 BIT ACC.2 X3 BIT ACC.3 X4 BIT ACC.4 X5 BIT ACC.5 X6 BIT ACC.6 X7 BIT ACC.7第45頁(yè)/共54頁(yè)第四十
28、五頁(yè),共55頁(yè)。 ORG 0000HMOV C, X0ANL C, X1ANL C, X2MOV 00H,C ;X0X1X2MOV C, X0ANL C, /X1MOV 01H, C ;X0X1ANL C, /X2ORL C, 00HMOV 00H, C MOV C, X2ANL C, 01HANL C, X3 ;X0X1X2X3ORL C, /00HMOV 00H, C MOV C, X7ANL C, /X6ANL C, /X5ANL C, /X4 ; X4 X5 X6 X7ORL C, 00H ; 最終(zu zhn)結(jié)果 YC SJMP $ 第46頁(yè)/共54頁(yè)第四十六頁(yè),共55頁(yè)。 子程
29、序是構(gòu)成單片機(jī)應(yīng)用程序必不可少的部子程序是構(gòu)成單片機(jī)應(yīng)用程序必不可少的部分,通過(guò)分,通過(guò)ACALLACALL和和LCALLLCALL兩條子程序調(diào)用指令,可兩條子程序調(diào)用指令,可以十分方便地用來(lái)調(diào)用任何以十分方便地用來(lái)調(diào)用任何(rnh)(rnh)地址處的子程序。地址處的子程序。 子程序節(jié)省占用的存儲(chǔ)單元,使程序簡(jiǎn)短清子程序節(jié)省占用的存儲(chǔ)單元,使程序簡(jiǎn)短清晰,善于靈活的使用子程序,是程序設(shè)計(jì)的重要晰,善于靈活的使用子程序,是程序設(shè)計(jì)的重要技巧之一。技巧之一。 子程序必須以子程序必須以RETRET指令結(jié)尾指令結(jié)尾. . 在調(diào)用子程序時(shí),有以下幾點(diǎn)應(yīng)注意:在調(diào)用子程序時(shí),有以下幾點(diǎn)應(yīng)注意:3.7 3.
30、7 子程序子程序 當(dāng)一段程序當(dāng)一段程序(chngx)(chngx)需多次應(yīng)用需多次應(yīng)用, ,或?yàn)槎嗳藨?yīng)用或?yàn)槎嗳藨?yīng)用時(shí)時(shí), ,這段程序這段程序(chngx)(chngx)編為子程序編為子程序(chngx).(chngx).第47頁(yè)/共54頁(yè)第四十七頁(yè),共55頁(yè)。 1 1)保護(hù)現(xiàn)場(chǎng)。)保護(hù)現(xiàn)場(chǎng)。 如果在調(diào)用前主程序已經(jīng)使用了某些存儲(chǔ)單元或寄存器,在調(diào)用如果在調(diào)用前主程序已經(jīng)使用了某些存儲(chǔ)單元或寄存器,在調(diào)用時(shí),這些寄存器和存儲(chǔ)單元又有其他用途,就應(yīng)先把這些單元或寄存器時(shí),這些寄存器和存儲(chǔ)單元又有其他用途,就應(yīng)先把這些單元或寄存器中的內(nèi)容壓入堆棧保護(hù),調(diào)用完后再?gòu)亩褩V袕棾鲆员慵右曰謴?fù)。如果中的內(nèi)
31、容壓入堆棧保護(hù),調(diào)用完后再?gòu)亩褩V袕棾鲆员慵右曰謴?fù)。如果有較多的寄存器要保護(hù),應(yīng)使主、子程序使用不同的寄存器組。有較多的寄存器要保護(hù),應(yīng)使主、子程序使用不同的寄存器組。 2 2)設(shè)置入口參數(shù)和出口參數(shù)。)設(shè)置入口參數(shù)和出口參數(shù)。 用之前主程序要按子程序的要求設(shè)置好地址用之前主程序要按子程序的要求設(shè)置好地址(dzh)(dzh)單元或存儲(chǔ)單元或存儲(chǔ)器(稱為入口參數(shù)),以便子程序從指定的地址器(稱為入口參數(shù)),以便子程序從指定的地址(dzh)(dzh)單元或存儲(chǔ)器單元或存儲(chǔ)器獲得輸入數(shù)據(jù);獲得輸入數(shù)據(jù); 子程序經(jīng)運(yùn)算或處理后的結(jié)果存放到指定的地址子程序經(jīng)運(yùn)算或處理后的結(jié)果存放到指定的地址(dzh)(
32、dzh)單元或單元或寄存器(稱為出口參數(shù)),主程序調(diào)用后從指定的地址寄存器(稱為出口參數(shù)),主程序調(diào)用后從指定的地址(dzh)(dzh)單元或單元或寄存器讀取運(yùn)算或處理后的結(jié)果,只有這樣,才能完成子程序和主程序寄存器讀取運(yùn)算或處理后的結(jié)果,只有這樣,才能完成子程序和主程序間的數(shù)據(jù)的正確傳遞。間的數(shù)據(jù)的正確傳遞。 3 3)子程序中可包括對(duì)另外子程序的調(diào)用,稱為子程序嵌套。)子程序中可包括對(duì)另外子程序的調(diào)用,稱為子程序嵌套。第48頁(yè)/共54頁(yè)第四十八頁(yè),共55頁(yè)。例例3-16 3-16 用程序?qū)崿F(xiàn)用程序?qū)崿F(xiàn)c=a2+b2c=a2+b2,設(shè),設(shè)a,ba,b均小于均小于1010。a a存放在存放在31
33、H31H單元,單元,b b存放在存放在32H32H單元,把單元,把c c存入存入34H34H和和33H33H單元。單元。(和要求為(和要求為BCDBCD碼)。碼)。 解:因該算式兩次用到平方解:因該算式兩次用到平方(pngfng)(pngfng)值,所以值,所以在程序中采用把求平方在程序中采用把求平方(pngfng)(pngfng)編為子程序的方法。編為子程序的方法。求平方求平方(pngfng)(pngfng)采用查表法采用查表法, ,主程序和子程序編寫主程序和子程序編寫如下:如下:第49頁(yè)/共54頁(yè)第四十九頁(yè),共55頁(yè)。主程序: ORG 0000H MOV SP,#3FH MOV A,31H
34、 ;取aLCALL SQR ;求a方MOV R1,AMOV A,32H ;取bLCALL SQR ;求b方ADD A,R1 ;求和(qi h)DA A ;調(diào)整MOV 33H,A MOV A,#0ADDC A,0 MOV 34H,A SJMP $ 子程序: ORG 0030HSQR:INC A MOVC A,A+PC RETTAB:DB 00H,01H,04H,09H,16H,25H,36H,49H64H,81H END第50頁(yè)/共54頁(yè)第五十頁(yè),共55頁(yè)。例例3 317 17 求兩個(gè)無(wú)符號(hào)數(shù)據(jù)塊中的最大值的乘積。數(shù)據(jù)塊求兩個(gè)無(wú)符號(hào)數(shù)據(jù)塊中的最大值的乘積。數(shù)據(jù)塊的首地址分別為的首地址分別為60H
35、60H和和70H70H,每個(gè)數(shù)據(jù)塊的第一個(gè)字節(jié),每個(gè)數(shù)據(jù)塊的第一個(gè)字節(jié)(z (z ji)ji)都存放數(shù)據(jù)塊長(zhǎng)度。結(jié)果存入都存放數(shù)據(jù)塊長(zhǎng)度。結(jié)果存入5FH5FH和和5EH5EH單元單元 分析分析 本例可采用分別求出兩個(gè)數(shù)據(jù)塊的最大值,然后本例可采用分別求出兩個(gè)數(shù)據(jù)塊的最大值,然后求積的方法,求最大值的過(guò)程可采用子程序。子程序的入求積的方法,求最大值的過(guò)程可采用子程序。子程序的入口參數(shù)時(shí)數(shù)據(jù)塊首地址,存放在口參數(shù)時(shí)數(shù)據(jù)塊首地址,存放在R1R1中,出口參數(shù)即為最大中,出口參數(shù)即為最大值,存放在值,存放在A A中。下面分別列出主程序中。下面分別列出主程序 和子程序。和子程序。主程序:主程序:ORG 0100HORG 0100H MOV R1,#60H ; MOV R1,#60H ;置入口條件參數(shù)置入口條件參數(shù) ACALL QMAX ; ACALL QMAX ;調(diào)求最大值子程序調(diào)求最大值子程序 MOV B, A ; MOV B, A ;第一個(gè)數(shù)據(jù)塊的最大值暫存第一個(gè)數(shù)據(jù)塊的最大值暫存B B MOV R1, #
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【名師一號(hào)】2020-2021學(xué)年高中英語(yǔ)北師大版必修3-雙基限時(shí)練20
- 2024-2025學(xué)年遼寧省沈陽(yáng)市高一上學(xué)期1月期末質(zhì)量監(jiān)測(cè)數(shù)學(xué)試題(含解析)
- 22《鳥的天堂》課件(共28張)
- 【名師一號(hào)】2020-2021學(xué)年高中地湘教版必修1-雙基限時(shí)練4
- 【創(chuàng)新設(shè)計(jì)】2020-2021學(xué)年高中化學(xué)課堂講義(人教版選修四)配套試題:第四章-第二節(jié)-化學(xué)電源
- 【全程復(fù)習(xí)方略】2020年數(shù)學(xué)文(廣西用)課時(shí)作業(yè):第九章-第九節(jié)空間向量的坐標(biāo)運(yùn)算
- 三年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)匯編及答案
- 【創(chuàng)新設(shè)計(jì)】2020-2021學(xué)年高中物理人教版選修3-1(浙江專用)題組訓(xùn)練-章末檢測(cè)1
- 沁園春雪朗誦-原版
- 《ZDAL資源與門戶》課件
- 新版小學(xué)道德與法治課程標(biāo)準(zhǔn)的解讀與梳理培訓(xùn)課件(道德與法治新課程標(biāo)準(zhǔn)培訓(xùn))
- 單體澆鑄尼龍
- 公司金融學(xué)張德昌課后參考答案
- DB3302-T 1015-2022 城市道路清掃保潔作業(yè)規(guī)范
- 管線探測(cè)技術(shù)介紹
- 南醫(yī)大藥用植物學(xué)實(shí)驗(yàn)指導(dǎo)14被子植物(四):傘形科、唇形科、馬鞭草科、茜草科
- 2023年新改版教科版四年級(jí)下冊(cè)科學(xué)練習(xí)題(一課一練+單元+期中+期末)
- 手術(shù)室提高患者術(shù)中保溫措施的執(zhí)行率PDCA課件
- 醫(yī)院外科腸梗阻出院小結(jié)范文
- 2023年海南省三支一扶考試真題
- 風(fēng)機(jī)支吊架計(jì)算表
評(píng)論
0/150
提交評(píng)論