分支程序設(shè)計(jì)實(shí)驗(yàn)

上傳人:仙*** 文檔編號(hào):34812747 上傳時(shí)間:2021-10-23 格式:DOC 頁數(shù):14 大?。?92KB
收藏 版權(quán)申訴 舉報(bào) 下載
分支程序設(shè)計(jì)實(shí)驗(yàn)_第1頁
第1頁 / 共14頁
分支程序設(shè)計(jì)實(shí)驗(yàn)_第2頁
第2頁 / 共14頁
分支程序設(shè)計(jì)實(shí)驗(yàn)_第3頁
第3頁 / 共14頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《分支程序設(shè)計(jì)實(shí)驗(yàn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《分支程序設(shè)計(jì)實(shí)驗(yàn)(14頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 《微機(jī)實(shí)驗(yàn)》報(bào)告 實(shí)驗(yàn)名稱 分支程序設(shè)計(jì)實(shí)驗(yàn) 專業(yè)班級(jí) xxxxx 姓名xxxxx 學(xué)號(hào)xxxxxx 聯(lián)系方式 xxxxxxxxxxxxxxxxxxxxxxx 一、 任務(wù)要求 1. 設(shè)有8bits符號(hào)數(shù)X存于外部RAM單元,按以下方式計(jì)算后的結(jié)果Y也存于外部RAM單元,請(qǐng)按要求編寫程序。 X2 當(dāng)X≥40 Y= X/2 當(dāng)20〈X〈40 /X =當(dāng)X≤20 < < 2. 利用51系列單片機(jī)

2、設(shè)計(jì)一個(gè)24小時(shí)制電子時(shí)鐘,電子時(shí)鐘的時(shí)、分、秒數(shù)值分別通過P0、P1、P2端口輸出(以壓縮BCD碼的形式)。 P3.0為低電平時(shí)開始計(jì)時(shí),為高電平時(shí)停止計(jì)時(shí)。 提高部分(選做): a. 實(shí)現(xiàn)4位十進(jìn)制加、減1計(jì)數(shù),千位、百位由P1口輸出;十位、個(gè)位由P2口輸出。利用P3.7狀態(tài)選擇加、減計(jì)數(shù)方式。 b. 利用P3口低四位狀態(tài)控制開始和停止計(jì)數(shù),控制方式自定。 二、 設(shè)計(jì)思路 任務(wù)1: 機(jī)器內(nèi)存入的數(shù)默認(rèn)為無符號(hào)數(shù),所以應(yīng)該先判斷正負(fù)性。如果是負(fù)數(shù)則直接歸到取反區(qū)間;如果是正數(shù),則與20,40進(jìn)行大小比較,即和20,40分別做減法,然后根據(jù)比較結(jié)果歸到各個(gè)區(qū)間。

3、 任務(wù)2: 先將R0~R2和P0~P2清零,開始先判斷控制位P3.0是否為0,當(dāng)P3.0=1時(shí)原地踏步重復(fù)判斷,當(dāng)P3.0=0時(shí)開始計(jì)時(shí)。計(jì)時(shí)開始,進(jìn)行秒鐘R0計(jì)數(shù),每次計(jì)數(shù)完成用BCD碼子程序轉(zhuǎn)換,然后判斷計(jì)數(shù)后R0值是否到60,若R0的值不足60,就直接輸出給P2,若R0的值為60,就把R0和P2進(jìn)行清零后,開始分鐘計(jì)數(shù)部分。同理,每次分鐘計(jì)數(shù)完之后用BCD碼子程序轉(zhuǎn)換,然后判斷計(jì)數(shù)后R1的值是否為60,若不為60,就直接輸出給P1,若R1的值為60,就把R1和P1清零后開始時(shí)鐘計(jì)數(shù)部分。時(shí)鐘計(jì)數(shù)完后同樣用BCD碼子程序轉(zhuǎn)換,然后判斷計(jì)數(shù)后的R2的值是否為24,若不為

4、24,就直接輸出給P0,若R2為24,就吧R2和P0清零后直接跳出計(jì)數(shù)部分,從判斷P3.0部分再開始.每兩次計(jì)數(shù)輸出之間穿插一個(gè)1s的延時(shí)程序。就可以達(dá)到時(shí)鐘的功能。 三、 資源分配 1.分支程序: 數(shù)據(jù)指針DPTR:對(duì)片外RAM進(jìn)行讀寫操作 2000H:存放8bits符號(hào)數(shù)X 2010H:存放結(jié)果Y(取反后的數(shù),或者平方后 的高8位,或者除法后的商) 2011H:存放結(jié)果Y(平方后的低8位,或者除 法后的余數(shù))

5、2.時(shí)鐘程序: R0、R1、R2:分別進(jìn)行秒鐘,分鐘,時(shí)鐘的計(jì)數(shù) P2、P1、P0:分別輸出秒鐘,分鐘,時(shí)鐘 P3.0:是否計(jì)數(shù)的控制位 R3、R4、R5:為1s延時(shí)程序指定循環(huán)次數(shù) B:BCD碼轉(zhuǎn)換子程序的操作數(shù) 四、 流程圖 1, 分支程序設(shè)計(jì) 2, 時(shí)鐘程序 五、 源代碼 (含文件頭說明、資源使用說明、語句行注釋) 任務(wù)一: File name : first.

6、asm Description : 多向分支程序設(shè)計(jì) Date : 2013.10.15 Designed by : 陳欣雨 ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV DPTR,#2000H MOV A,#10 MOVX @DPTR,A ;存數(shù) MOV B,0 ;寄存器B清零 MOVX A,@DPTR ;從R0中取出數(shù)x JNB ACC.7,COMP

7、1 ;判斷符號(hào)位,符號(hào)位為0時(shí)轉(zhuǎn)到COMP1 LP3: CPL A ;對(duì)x取反 SJMP STORE COMP1: CJNE A,#20,COMP2 ;A≠20時(shí),轉(zhuǎn)到COMP2 SJMP LP3 ;A=20時(shí),轉(zhuǎn)到LP3取反 COMP2: JC LP3 ;C=1,A<20,轉(zhuǎn)到LP3取反 CJNE A,#40,COMP3 ;C=0,A>20.當(dāng)A≠40時(shí),轉(zhuǎn)到COMP3 LP1: MOV B,A ;A=40時(shí),給B賦值為A MUL AB ;計(jì)算x平方 SJMP STORE C

8、OMP3: JNC LP1 ;C=0,A>40,轉(zhuǎn)到LP1計(jì)算x平方 MOV B,#02H ;C=1,A<40,賦值B=2 DIV AB ;計(jì)算x除以2 STORE: MOV DPTR,#2010H MOVX @DPTR,A ;存數(shù): INC DPTR ;對(duì)于平方,高位在前地位在后 MOV A,B ;對(duì)于除法,商在前余數(shù)在后 MOVX @DPTR,A SJMP $ END 任務(wù)二: ORG

9、 0000H SJMP START ORG 0030H START: MOV SP,#40H MOV P1,#0 MOV R3,#0 ;設(shè)定R3初值為0,用R3保存分鐘數(shù) MOV R4,#0 ;設(shè)定R4初值為0,用R4保存小時(shí)數(shù) MOV R0,#60 ;設(shè)定內(nèi)循環(huán)次數(shù)為60 MOV R1,#60 ;設(shè)定中循環(huán)次數(shù)為60 MOV R2,#24 ;設(shè)定外循環(huán)次數(shù)為24 CLR A NEXT: JNB P3.0,DONE ;如果P3.0等于0,則結(jié)束計(jì)數(shù) ADD A,#1 ;BCD碼加1

10、計(jì)數(shù) DA A ;對(duì)A進(jìn)行修正 MOV P2,A ;顯示計(jì)數(shù) DJNZ R0,NEXT ;R0<----R0-1,R0不等于零,跳到NEXT繼續(xù)循環(huán) MOV A,R3 ;將分鐘數(shù)賦給A ADD A,#1 ;分鐘數(shù)加1 DA A MOV R3,A ;分鐘數(shù)用R3保存 MOV P1,A ;顯示計(jì)數(shù) CLR A MOV R0,#60 ;重置內(nèi)循環(huán)次數(shù)為60 DJNZ R1,NEXT ;R1減一,若R1不為0,跳到最內(nèi)層循環(huán)入口處繼續(xù)循環(huán) MOV R3,#0 ;分鐘數(shù)滿六十,

11、小時(shí)開始計(jì)數(shù),同時(shí)將分鐘數(shù)R3清零 MOV A,R4 ;將小時(shí)數(shù)賦給A ADD A,#1 ;小時(shí)數(shù)加一 DA A MOV R4,A ;用R4保存小時(shí)數(shù) MOV P0,A MOV R0,#60 ;重置內(nèi)循環(huán)數(shù)為六十 MOV R1,#60 ;重置次循環(huán)數(shù)為六十 DJNZ R2,NEXT ;R2減一,若R2不為0,跳到最內(nèi)層循環(huán)入口處繼續(xù)循環(huán) DONE: SJMP $ END 程序測(cè)試方法與結(jié)果、軟件性能分析 實(shí)驗(yàn)一: (1) 取X=5,則最后結(jié)果應(yīng)為FA。編譯結(jié)果

12、如下圖: (2) 取X=36,則最后結(jié)果應(yīng)為12。編譯結(jié)果如下圖: (3) 取X=60,則最后結(jié)果應(yīng)為3600,即(2010H)=10H,(2011H)=0EH。編譯結(jié)果如下圖: 實(shí)驗(yàn)二: (1) P3.0設(shè)為低電平,開始計(jì)時(shí),達(dá)60秒時(shí),分從0變?yōu)? 分增加1,秒清零 P3.0置1則計(jì)數(shù)停止 六、 心得與體會(huì) 做分支程序的設(shè)計(jì)一定需要一個(gè)清醒的頭腦,必須在開始寫程序之前想好在什么地方進(jìn)行跳轉(zhuǎn),什么時(shí)候跳轉(zhuǎn)回來等等。在做第二個(gè)實(shí)驗(yàn)時(shí),則需要很清楚循環(huán)的次數(shù)以及數(shù)據(jù)的存儲(chǔ),不能混淆??偠灾?,在寫完這兩個(gè)程序之后,我覺得,寫復(fù)雜

13、一點(diǎn)的程序必須有足夠的經(jīng)驗(yàn),這也就要求我們多鍛煉,多寫程序,才能夠有一個(gè)清晰的思路,不至于在編寫過程中陷入混亂。 七、 思考題 1.實(shí)現(xiàn)多分支結(jié)構(gòu)程序的主要方法有哪些?舉例說明。 答:⑴當(dāng)分支比較少的時(shí)候,可以直接采用條件轉(zhuǎn)移指令,例如: JB P3.7,SUBJS;P3.7為1時(shí),跳到SUBJS進(jìn)行減1計(jì)數(shù);P3.7為0時(shí),進(jìn)行ADDJS加1計(jì)數(shù) ADDJS: MOV A,P2 ┇ ┇ SUBJS: CLR C

14、┇ ┇ ⑵當(dāng)分支比較多的時(shí)候,可以采用分支表法,常用的分支表法有三種:分支地址表,轉(zhuǎn)移指令表,分支偏移量表。 ①分支地址表法: MOV DPTR,#BRATAB ;取表首地址 MOV A,R3 ADD A,R3 ;A←R3*2 JNC NADD INC DPH ;R3*2的進(jìn)位加到DPH NADD: MOV R4,A

15、 ;暫存A MOVC A,@A+DPTR ;取分支地址高8位 XCH A,R4 INC A MOVC A,@A+DPTR ;取分支地址低8位 MOV DPL,A ;分支地址低8位送DPL MOV DPH,R4 ;分支地址高8位送DPH CLR A JMP @A+DPTR ;轉(zhuǎn)相應(yīng)

16、分支程序 BRATAB: DW SUBR0 ;分支地址表 DW SUBR1 ┇ DW SUBR7 ②轉(zhuǎn)移指令表法: MOV DPTR,#JMPTAB ;取表首地址 MOV A,R3 ADD A,R3 ;A←R32 JNC NADD INC DPH ;有進(jìn)位加到DPH NADD: JMP

17、@A+DPTR ;轉(zhuǎn)相應(yīng)分支程序 JMPTAB: AJMP SUBR0 ;轉(zhuǎn)移指令表 AJMP SUBR1 ┇ AJMP SUBR7 ③地址偏移量表法: MOV DPTR,#DIATAB ;取表首地址 MOV A,R3 ;表的序號(hào)數(shù)送A MOVC A,@A+DPTR ;查表 JMP @A+DPTR

18、 ;轉(zhuǎn)相應(yīng)分支程序 DISTAB: DB SUBR0-DISTAB ;地址偏移量表 DB SUBR1-DISTAB ┇ DB SUBR7-DISTAB SUBR0: ┇ SUBR1: ┇ 2. 在編程上,十進(jìn)制加1計(jì)數(shù)器與十六進(jìn)制加1計(jì)數(shù)器的區(qū)別是什么?怎樣用十進(jìn)制加法指令實(shí)現(xiàn)減1計(jì)數(shù)? 答:十六進(jìn)制加1計(jì)數(shù)器可以直接對(duì)計(jì)數(shù)器進(jìn)行加1的操作,相當(dāng)于單字節(jié)或者多字節(jié)的加法運(yùn)算,其中被加數(shù)為當(dāng)前計(jì)數(shù)器值,加數(shù)始終為1;但是十進(jìn)制加1計(jì)數(shù)器不能直接對(duì)計(jì)數(shù)器直接進(jìn)行加1操作,而必須在對(duì)加1操作后緊跟一條DA A指令對(duì)其進(jìn)行二—十進(jìn)制修正才能實(shí)現(xiàn)。 用十進(jìn)制加法進(jìn)行減1計(jì)數(shù)時(shí),應(yīng)講計(jì)數(shù)器當(dāng)前值與1的十進(jìn)制補(bǔ)碼99H進(jìn)行想加,然后用DA A指令進(jìn)行二—十進(jìn)制修正,從而實(shí)現(xiàn)十進(jìn)制減1計(jì)數(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!