版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單元 匯編語(yǔ)言程序設(shè)計(jì)第1頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)子程序的概念 通常把這些基本操作功能編制為程序段作為獨(dú)立的子程序, 以供不同程序或同一程序反復(fù)調(diào)用。在程序中需要執(zhí)行這種操作的地方放置一條調(diào)用指令, 當(dāng)程序執(zhí)行到調(diào)用指令, 就轉(zhuǎn)到子程序中完成規(guī)定的操作, 并返回到原來(lái)的程序繼 續(xù)執(zhí)行下去。子程序結(jié)構(gòu)能供調(diào)用的子程序,其結(jié)構(gòu)應(yīng)具備:必須標(biāo)明子程序的入口地址,又稱(chēng)首地址,以便程序調(diào)用必須以返回指令RET結(jié)束子程序。 第2頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)參數(shù)傳遞在使用調(diào)
2、用指令不附帶任何參數(shù)時(shí),參數(shù)的互相傳遞要由設(shè)計(jì)者通過(guò)程序安排。一般可采用以下方法:傳遞數(shù)據(jù)。將需傳遞的參數(shù)通過(guò)工作寄存器Rn或累加器A傳遞給子程序。即在主程序調(diào)用子程序前將參數(shù)差額主選定的工作寄存器組R0R7、累加器A中,供子程序讀取或者將參數(shù)在調(diào)用前先壓入堆棧,進(jìn)入子程序后再?gòu)亩褩V凶x出。傳遞地址。將要傳遞的參數(shù)存放在數(shù)據(jù)存儲(chǔ)器中,將其地址通過(guò)工作寄存器R0、R1或數(shù)據(jù)指針DPTR傳遞,供子程序讀取參數(shù)。 第3頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)現(xiàn)場(chǎng)保護(hù)主程序的現(xiàn)場(chǎng)保護(hù)和恢復(fù)。子程序(包括中斷服務(wù)程序)是個(gè)獨(dú)立的程序段,在子程序執(zhí)行過(guò)
3、程中常需用到通用單元,例如:工作寄存器R0R7、累加器A、數(shù)據(jù)指針DPTR,以及有關(guān)標(biāo)志、狀態(tài)位等。而這個(gè)單元中的原內(nèi)容在調(diào)用子程序結(jié)束之后 的主程序中仍有用,需進(jìn)行保護(hù),稱(chēng)現(xiàn)場(chǎng)保護(hù)。在執(zhí)行完子程序并返回繼續(xù)執(zhí)行主程序前應(yīng)恢復(fù)其原內(nèi)容,稱(chēng)現(xiàn)場(chǎng)恢復(fù)。一般有兩種現(xiàn)場(chǎng)保護(hù)/恢復(fù)方式:第4頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)調(diào)用前保護(hù)、返回后恢復(fù)。這種方式是在主程序邏輯的調(diào)節(jié)器用指令前進(jìn)行現(xiàn)場(chǎng)保護(hù),在調(diào)用指令之后,即返回原斷點(diǎn)處進(jìn)行恢復(fù)現(xiàn)場(chǎng)。其程序結(jié)構(gòu)如下所示: 主程序PUSH PSW ;將PSW、A、DPTR等入棧保護(hù)PUSH APUSH B
4、PUSH DPL PUSH DPH PUSH PSW,#10H ;選用工作寄存器組2,將0組保護(hù)第5頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)LCALL addr16 ;調(diào)用子程序addr16POP DPH ;出棧POP DPLPOP BPOP APOP PSW這種結(jié)構(gòu)靈活,可根據(jù)實(shí)際需要實(shí)現(xiàn)現(xiàn)場(chǎng)保護(hù)/恢復(fù)。調(diào)用后保護(hù)、返回前恢復(fù)。這種結(jié)構(gòu)是在子程序的開(kāi)始部分進(jìn)行現(xiàn)場(chǎng)保護(hù),而在子程序的結(jié)束部分、返回指令前恢復(fù)。其程序結(jié)構(gòu)如下所示: 第6頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí) ;子程序AD
5、DR:PUSH PSW 現(xiàn)場(chǎng)保護(hù) PUSH A PUSH B PUSH DPL PUSH DPH MOV PSW,#08H ;選用工作寄存器組1,0組保護(hù) ;子程序主體 POP DPH 現(xiàn)場(chǎng)恢復(fù)POP DPL POP B第7頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八LED顯示電路 相關(guān)知識(shí)POP APOP PSWRET ;返回這是子程序標(biāo)準(zhǔn)格式,現(xiàn)場(chǎng)保護(hù)/恢復(fù)內(nèi)容固定,但程序規(guī)范、清晰。上述兩種方式可由設(shè)計(jì)者任選。 第8頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)子程序特性隨著匯編語(yǔ)言程序設(shè)計(jì)技術(shù)的發(fā)展,子程序的應(yīng)用越
6、顯重要。因此,對(duì)子程序的設(shè)計(jì)具有較高要求,除通常在程序設(shè)計(jì)中應(yīng)遵循的原則外,還應(yīng)具備以下特性:通用性嚴(yán)格講,子程序有通用和專(zhuān)用兩種。前者如數(shù)制轉(zhuǎn)換、浮點(diǎn)運(yùn)算等子程序可廣泛應(yīng)用于同系列單片機(jī)的任何應(yīng)用系統(tǒng),后者僅限用于同一個(gè)應(yīng)用系統(tǒng)中。特別是前者,都應(yīng)注意子程序的通用性。為了使子程序具有通用性,在設(shè)計(jì)中要解決的一個(gè)重要問(wèn)題,就是確定哪些變量作為參量以及何傳遞參量。 第9頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)可浮動(dòng)性可浮動(dòng)性是指子程序段可安置在程序存儲(chǔ)器的任何區(qū)域。為此,在子程序中應(yīng)避免選用絕對(duì)轉(zhuǎn)移地址??蛇f歸和可重入性子程序能自己調(diào)用自己和
7、同時(shí)能被多個(gè)任務(wù)(或多個(gè)用戶(hù)程序)調(diào)用的特性,分別稱(chēng)之為子程序的可遞歸性和可重入性。這類(lèi)子程序常在龐大而復(fù)雜的程序中應(yīng)用,在單片機(jī)應(yīng)用程序設(shè)計(jì)中較少用到。 第10頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)子程序說(shuō)明文件對(duì)于通用子程序,為便于各種應(yīng)用程序的選用,要求在子程序編制、調(diào)試完成后應(yīng)提供一個(gè)說(shuō)明文件。其內(nèi)容應(yīng)包含以下內(nèi)容。子程序名。標(biāo)明子程序功能的名稱(chēng)。子程序功能。簡(jiǎn)要說(shuō)明子程序能完成的主要功能,包括重要算法、參量要求及有關(guān)存儲(chǔ)單元配置等。子程序調(diào)用。指明本子程序還需調(diào)用哪些子程序。附子程序流程圖及程序清單。由于子程序結(jié)構(gòu)在程序設(shè)計(jì)中應(yīng)
8、用極為普遍,因此,一般在指令集中均設(shè)有子程序調(diào)用指令。AT89S系列的指令集中,考慮到程序存儲(chǔ)器空間的限制和節(jié)省,特設(shè)置了絕對(duì)調(diào)用和長(zhǎng)調(diào)兩條指令,供實(shí)際應(yīng)用時(shí)選擇。 第11頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路 相關(guān)知識(shí) 查表程序結(jié)構(gòu) 查表程序是一種常用程序, 它廣泛使用于 LED顯示控制、 打印機(jī)打印控制、數(shù)據(jù)補(bǔ)償、數(shù)值計(jì)算、轉(zhuǎn)換等功能程序中, 這類(lèi)程序具有簡(jiǎn)單、執(zhí)行速度快等特點(diǎn)。 所謂查表法, 就是預(yù)先將滿(mǎn)足一定精度要求的表示變量與函數(shù)值之間關(guān)系的一張表求出, 然后把這張表存于單片機(jī)的程序存儲(chǔ)器中, 這時(shí)自變量值為單元地址, 相應(yīng)的函數(shù)值為該地
9、址單元中的內(nèi)容。查表, 就是根據(jù)變量 X在表格中查找對(duì)應(yīng)的函數(shù)值 Y, 使 Y=f(X)。 第12頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路 相關(guān)知識(shí)兩條查表指令: MOVC A, A+PC MOVC A, A+DPTR選用DPTR為首地址指針時(shí)表格參量可存放在64KB范圍內(nèi)的任何區(qū)段,可供無(wú)限次查表,選用PC當(dāng)前值為首地址指針時(shí)表硌參量必須設(shè)置在緊跟查表指令(MOVC)之后,基本上只能一次性查表,編程時(shí)應(yīng)根據(jù)實(shí)際情況進(jìn)行選擇,一般以選擇DPTR為基址指針的查表指令靈活、方便,可省去一些麻煩。 第13頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期
10、二4.4 任務(wù)八 LED顯示電路 相關(guān)知識(shí)選用DPTR作為基地址的查表指令時(shí),其操作可分3步進(jìn)行:將待查表格的首地址置入DPTR基址寄存器;將待查的表格具體項(xiàng)數(shù)值置入變址寄存器A中;執(zhí)行指令MOVC A,A+DPTR將查表結(jié)果值讀入累加器A中。 第14頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路 相關(guān)知識(shí)選用PC當(dāng)前值作為基地址的查表指令時(shí),由于PC的當(dāng)前值正是查表指令的下一條指令的第一個(gè)字節(jié)的地址值,亦即表格數(shù)據(jù)串的首地址,當(dāng)執(zhí)行完查表指令,讀取到表格數(shù)據(jù)后仍需從這個(gè)PC的當(dāng)前值繼續(xù)往下執(zhí)行,顯然兩者發(fā)生重疊,為解決這個(gè)矛盾,勢(shì)必將表格下移若干個(gè)字節(jié),
11、以便設(shè)置一條跳轉(zhuǎn)指令跳過(guò)表格串繼續(xù)安排順序往下執(zhí)行的程序。把表格串下移的字節(jié)數(shù)加到變址寄存器A中,即在查表指令前加一條指令。ADD A,#dataA中為經(jīng)動(dòng)態(tài)運(yùn)算得到的待查表格數(shù)的項(xiàng)數(shù)。Data為表格串下移的字節(jié)數(shù),亦即PC的當(dāng)前值到下移后的表格串首地址的距離數(shù)。這個(gè)距離數(shù)顯然不宜太大,因?yàn)樗鼘⒂绊懕砀翊拈L(zhǎng)度,兩者之和不能超過(guò)565B,這種表格一般屬一次性查找,因?yàn)镻C的當(dāng)前值隨程序的執(zhí)行而改變 第15頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路程序設(shè)計(jì)舉例【例4.8 】 4位BCD碼整數(shù)轉(zhuǎn)換成二進(jìn)制整數(shù)入口參數(shù):BCD碼字節(jié)地址指針R0,位數(shù)存于R2
12、中。出口參數(shù):二進(jìn)制數(shù)存于R3R4中。算法:A=103a3+102a2+10a1+a0程序流程如7.7所示。子程序清單如下:BCDA:PUSH PSW ;現(xiàn)場(chǎng)保護(hù)PUSH APUSH BMOV PSW,#08HMOV R3,#00HMOV R2,#3 ;BCD碼D的位數(shù)MOV A,R0 ; a0-R4第16頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路程序設(shè)計(jì)舉例MOV R4,ABCKB:MOV A,R3 ;(R3R4)10 MOV B,#10 ;R4MUL ABMOV R4,AXCH A,BMOV B,#10XCH A,R3MUL ABADD A,R3XCH A,R4INC R0 ;(R0)+1-R0ADD A,R0 ;( R3R4)- (R0)-RR3R4第17頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路程序設(shè)計(jì)舉例XCH A,R4ADDC A,#0MOV R3,ADJNZ R2,BCDB ;循環(huán)n-1次POP B ;恢復(fù)現(xiàn)場(chǎng)PIP APOP PSWRET ;返回上例中的R2內(nèi)容是BCD碼的位數(shù)n,本例中n=4,即兩個(gè)字節(jié)4位BCD碼,在程序中作為循環(huán)控制寄存器的計(jì)數(shù)值為n-1=4-1=3,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 13《橋》說(shuō)課稿-2024-2025學(xué)年六年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版
- 增材制造與創(chuàng)新設(shè)計(jì):從概念到產(chǎn)品 課件 第6、7章 3D打印產(chǎn)品創(chuàng)新結(jié)構(gòu)設(shè)計(jì)、增材制造創(chuàng)新綜合應(yīng)用實(shí)例
- 2024技術(shù)開(kāi)發(fā)合同約定的技術(shù)成果交付和保密
- 農(nóng)科創(chuàng)新之路
- 科技引領(lǐng)電商新紀(jì)元
- 12 故宮博物院(說(shuō)課稿)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文六年級(jí)上冊(cè)
- 基于信任關(guān)系產(chǎn)生的租賃合同范本(2篇)
- 專(zhuān)項(xiàng)活動(dòng)策劃委托:2024年合作合同版B版
- 2024年版混磚結(jié)構(gòu)煙囪拆除操作合同版B版
- 10-1《勸學(xué)》說(shuō)課稿 2024-2025學(xué)年統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- (自考)經(jīng)濟(jì)學(xué)原理中級(jí)(政經(jīng))課件 第二章 商品和貨幣
- ×××老舊小區(qū)改造工程施工組織設(shè)計(jì)(全面)
- 建筑展望與未來(lái)發(fā)展趨勢(shì)
- “互聯(lián)網(wǎng)+”大學(xué)生創(chuàng)新創(chuàng)業(yè)大賽計(jì)劃書(shū)一等獎(jiǎng)
- 水土保持方案投標(biāo)文件技術(shù)部分
- GB/T 3324-2024木家具通用技術(shù)條件
- 專(zhuān)題3-6 雙曲線(xiàn)的離心率與常用二級(jí)結(jié)論【12類(lèi)題型】(原卷版)-A4
- 2024年人力資源年度工作總結(jié)參考(2篇)
- DB52T 1776.1-2023 耕地質(zhì)量等別評(píng)價(jià) 第1部分:評(píng)價(jià)規(guī)范
- BIM工程師年終總結(jié)
- 釘釘OA辦公系統(tǒng)操作流程培訓(xùn)
評(píng)論
0/150
提交評(píng)論