版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
...wd......wd......wd...《微機實驗》報告實驗名稱分支程序設(shè)計實驗專業(yè)班級姓名學(xué)號序號聯(lián)系方式一、任務(wù)要求熟練掌握KeilC環(huán)境下匯編語言程序的調(diào)試方法,加深對匯編語言指令、機器碼、尋址方式等根本內(nèi)容的理解,掌握分支程序和簡單程序的設(shè)計與調(diào)試方法,了解并行IO口的使用。1.設(shè)有8bits符號數(shù)X存于外部RAM單元,按以下方式計算后的結(jié)果Y也存于外部RAM單元,請按要求編寫程序。2.利用51系列單片機設(shè)計一個24小時制電子時鐘,電子時鐘的時、分、秒數(shù)值分別通過P0、P1、P2端口輸出〔以壓縮BCD碼的形式〕。P3.0為低電平時開場計時,為高電平時停頓計時。提高局部〔選做〕:a.實現(xiàn)4位十進制加、減1計數(shù),千位、百位由P1口輸出;十位、個位由P2口輸出。利用P3.7狀態(tài)選擇加、減計數(shù)方式。b.利用P3口低四位狀態(tài)控制開場和停頓計數(shù),控制方式自定。二、設(shè)計思路1.分段函數(shù)設(shè)計對于第一個任務(wù),相當(dāng)于設(shè)計一個分段函數(shù)程序,根據(jù)變量X的值所處的區(qū)間進展相應(yīng)的計算。由學(xué)過的知識知道,可利用比擬轉(zhuǎn)移指令CJNE來判斷X是否等于臨界值20,40,假設(shè)不等,再根據(jù)執(zhí)行CJNE指令后的進位位CY的值來判斷X與臨界值的的大小關(guān)系,易知CY=0則X大于臨界值,CY=1則X小于臨界值;如此,再進展相應(yīng)的計算。另外,除法計算中可能產(chǎn)生余數(shù),商和余數(shù)應(yīng)該分開存儲,假設(shè)乘方運算結(jié)果大于255,高八位與低八位應(yīng)分開存儲。2.24小時制時鐘程序本程序須可以構(gòu)建兩局部循環(huán)。首先構(gòu)建一個三重循環(huán)實現(xiàn)“一秒延時〞,循環(huán)體利用NOP指令〔單字節(jié)指令,1μs〕經(jīng)屢次循環(huán)到達延時一秒的效果。再利用已經(jīng)構(gòu)建好的“一秒延時〞局部,設(shè)計計時系統(tǒng)的三重循環(huán),秒〔0-59〕、分〔0-59〕、時〔0-23〕。需要注意的是,在小時、分、秒到達59時,下一次應(yīng)該為零。程序運行時修改P3.0的值可以實現(xiàn)暫停和繼續(xù)的功能。3.加一減一程序先初始化P1和P2,然后當(dāng)P3低四位均為0作為開場計數(shù)的標志,每次計數(shù)中插一個延時程序。P3.7為0時進展加1計數(shù):先把低2位從P2中取出至A,對A進展ADD加一計數(shù)并進展十進制修正,然后存進P2;再把高2位從P1取出至A,對A進展ADDC的加進位操作并十進展進制修正,然后存進P1。P3.7為1時進展減一計數(shù):只需改用ADD指令加上1的補碼即可,高2位在第二位為99時進展同樣的操作,最后分別用P1和P2輸出高2位和低2位。即可實現(xiàn)所需功能。三、資源分配1.分段函數(shù)根據(jù)題目的條件,首先,設(shè)該8位無符號數(shù)為30H,把片外地址4000H分配給它,把片外地址4001H和4002H分配給經(jīng)分段函數(shù)計算得到的結(jié)果Y。按位取反計算結(jié)果存于4001H單元,而除法計算結(jié)果的商與余數(shù)和乘方計算中結(jié)果的高、低八位分開存儲于4001H-4002H單元。用存放器A,B來存放在乘除運算中所得的中間結(jié)果。2.二十四小時制時鐘工作存放器R0、R1、R2分別用于秒、分、時循環(huán)次數(shù)的設(shè)定,R3、R4分別用于分與時的循環(huán)計數(shù),R5-R7用于“一秒延時〞中三重循環(huán)的循環(huán)次數(shù)設(shè)定。秒、分、時數(shù)值分別由P2、P1、P0端口輸出。3.加、減1計數(shù)程序:將十進制數(shù)的千位數(shù)和百位數(shù)存于P1,將十進制數(shù)的十位數(shù)和個位數(shù)存放于P2,P3.0至P3.3為是否進展計數(shù)的4個控制位,P3.7為選擇加一或減一的計數(shù)方式的控制位;R3,R4,R5為計數(shù)中的延時程序指定循環(huán)次數(shù)。流程圖1.分段函數(shù)〔DPTR〕←A存X于片外RAM設(shè)置數(shù)據(jù)指針X賦值A(chǔ)〔DPTR〕←A存X于片外RAM設(shè)置數(shù)據(jù)指針X賦值A(chǔ)←X開場AA≠20NYY=/XCY≠Y=/XCY≠1?(4001H)←A(4001H)←ACY←0Y=X/2CY≠1?A≠Y=X/2CY≠1?A≠40?Y=X2Y=X2(4001H)←A(4002H)←B完畢完畢時鐘程序開場開場POPO←0P1←0P2←0P3←0P3.0=0?P3.0=0?NNY延時1s延時1s秒鐘計數(shù),R0加1秒鐘計數(shù),R0加1A←R0,并轉(zhuǎn)換成BCD碼P2←AP2←AR0=60H?YNYR0R0←0P2←0分鐘計數(shù),R1加1A分鐘計數(shù),R1加1A←R1,并轉(zhuǎn)換為BCD碼NR1=60H?NR1=60H?P1←P1←AR1←R1←0P1←0時鐘計數(shù),R2加1時鐘計數(shù),R2加1A←R2,并轉(zhuǎn)換為BCDR2←0P0←0P0R2←0P0←0P0←AR2=24?源代碼1.分段函數(shù)ORG0000H LJMPMAIN ORG0100HMAIN:MOVA,#30H;將8位無符號數(shù)賦給AMOVDPTR,#4000H ;定義數(shù)據(jù)指針 MOVX@DPTR,A ;將X存于片外RAM CLRC;將進位位清零KIND1:CJNEA,#14H,KIND2 ;將A與14H比擬,假設(shè)不等于14H,跳轉(zhuǎn)至KIND2OUT1:CPLA ;對A中內(nèi)容取反MOVDPTR,#4001H ;定義數(shù)據(jù)指針 MOVX@DPTR,A ;將計算結(jié)果存于片外地址4001H SJMPDONEKIND2:JNCKIND3 ;判斷進位位CY是否為0,假設(shè)為0,跳轉(zhuǎn)至KIND3SJMPOUT1 ;否則跳轉(zhuǎn)至OUT1KIND3:CLRC ;將進位位清零CJNEA,#28H,KIND4 ;將A中內(nèi)容與28H比擬,假設(shè)不等于28H,跳轉(zhuǎn)至KIND4OUT2:MOVB,A ;將A中內(nèi)容賦給BMULAB ;計算X的平方,將結(jié)果高八位存于B,低八位存于A MOVDPTR,#4001H ;定義數(shù)據(jù)指針 MOVX@DPTR,A ;將結(jié)果低八位存于片外地址4001H INCDPTR ;數(shù)據(jù)指針加一 MOVA,B ;將B中內(nèi)容賦給A MOVX@DPTR,A ;將結(jié)果高八位存于片外地址4002H SJMPDONEKIND4:JNCOUT2 ;判斷進位位是否為0,假設(shè)為0,跳轉(zhuǎn)至OUT2SJMPOUT3 ;否則跳轉(zhuǎn)至OUT3OUT3:MOVB,#02HDIVAB ;計算X/2,將商存于A,余數(shù)存于B MOVDPTR,#4001H ;定義數(shù)據(jù)指針 MOVX@DPTR,A ;將商存于片外地址4001H INCDPTR ;數(shù)據(jù)指針加1 MOVA,BMOVX@DPTR,A ;將余數(shù)存于片外地址4002H SJMPDONEDONE:SJMP$ END時鐘程序ORG0000HLJMPMAINORG0100HMAIN: MOVR0,#00H MOVP0,#00H ;時鐘位清零 MOVP1,#00H ;分鐘位清零 MOVP2,#00H ;秒鐘位清零START: JBP3.0,START ;P3.0為低電平開場計數(shù),高電平停頓計數(shù) MOVR2,P2 ;P2的值存入R2 CJNER2,#60H,DEL;秒鐘到達60繼續(xù),缺乏60跳轉(zhuǎn) MOVP2,#00H ;秒鐘清零 MOVA,P1 ADDA,#01H ;分鐘位加1 DAA ;分鐘位改為BCD碼 MOVP1,A MOVR1,P1 ;P1的值存入存放器R1 CJNER1,#60H,DEL ;分鐘到達60繼續(xù),缺乏60跳轉(zhuǎn) MOVP1,#00H ;分鐘清零 MOVA,R0 ADDA,#01H ;時鐘位加1 DAA ;時鐘位改為BCD碼 MOVR0,A MOVP0,A CJNER0,#24H,DEL ;時鐘到達24繼續(xù),缺乏24跳轉(zhuǎn) MOVP0,#00H ;時鐘位清零 MOVR0,#00H DEL:MOVR7,#24 ;延時程序LOOP1:MOVR6,#61LOOP2:MOVR5,#170LOOP3:NOP NOP DJNZR5,LOOP3 DJNZR6,LOOP2 DJNZR7,LOOP1 MOVA,P2 ADDA,#01H ;秒鐘位加1 DAA MOVP2,A SJMPSTARTEND加一減一程序ORG0000HLJMPMAINORG0100HMAIN: MOVP1,#00H ;P1端口置零 MOVP2,#00H ;P2端口置零 MOVP3,#7FH ;P3端口置#7FHSTART:JBP3.0,STARTJBP3.1,STARTJBP3.2,START JBP3.3,START ;判斷是否開場計時 LJMPDELAY ;跳轉(zhuǎn)到延時子程序DELAY: MOVR7,#24 DEL1: MOVR6,#61DEL2: MOVR5,#170DEL3: NOP NOP DJNZR5,DEL3 DJNZR6,DEL2 DJNZR7,DEL1 ;延時1秒 JBP3.7,DOWN ;P3.7為0時,加1計數(shù);P3.7為1時,減1計數(shù) LJMPUPDOWN:MOVA,P2CLRCSUBBA,#01HMOVR1,AANLA,#0FHMOVR7,AMOVA,R1ANLA,#0F0HMOVR1,AMOV A,P1SUBBA,#00HMOVR0,AANL A,#0FHMOVR6,AMOVA,R0ANLA,#0F0HMOVR0,ACJNER7,#0FH,LOOP1MOVR7,#09H LOOP1: CJNER1,#0F0H,LOOP2 MOVR1,#90H LOOP2: CJNER6,#0FH,LOOP3 MOVR6,#09H LOOP3: CJNER0,#0F0H,LOOP4 MOVR0,#90H LOOP4: MOVA,R1 ADDA,R7 DAA MOVP2,A MOVA,R0 ADDA,R6 DAA MOVP1,A LJMPDELAY ;減1計數(shù)子程序UP:MOVA,P2ADDA,#01HDAAMOVP2,AMOVA,P1ADDCA,#00HDAAMOVP1,A LJMPDELAY ;加1計數(shù)子程序END程序測試方法與結(jié)果、軟件性能分析1.分段函數(shù)對于分段函數(shù)的問題,可以將X設(shè)為某一值,運行程序,觀察各個存放器及有關(guān)地址中內(nèi)容,進展驗證。截圖如下:〔1〕X=30H(2)X=0AH(3)X=18H經(jīng)歷證,所有結(jié)果正確,且運行程序過程中并未出現(xiàn)任何問題,故源程序正確2.24小時時鐘程序附加:思考題1.實現(xiàn)多分支構(gòu)造程序的主要方法有哪些舉例說明。2.在編程上,十進制加1計數(shù)器與十六進制加1計數(shù)器的區(qū)別是什么怎樣用十進制加法指令實現(xiàn)減1計數(shù)答:1.一是利用條件轉(zhuǎn)移指令實現(xiàn),如DJNZ,JNC等等例如:例如,判斷兩個單字節(jié)無符號數(shù)的大小〔分別存于片內(nèi)RAM的40H和41H單元〕并把大數(shù)存入42H單元。可以用判斷CY的轉(zhuǎn)移指令JNC來實現(xiàn),程序如下:JUDGE:MOVA,40HCLRCSUBBA,41HJNCLPMOV42H,41HRETLP:MOV42H,40HRET二是利用分支表來實現(xiàn),如分支地址表、轉(zhuǎn)移指令表、地址偏移量表。例如:根據(jù)R3的值控制轉(zhuǎn)向8個分支程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年潮玩品牌運營策略培訓(xùn)
- 2026年水利工程中的智能化監(jiān)測技術(shù)
- 2025年財務(wù)副職競聘筆試題及答案
- 2025年延長石油秋招筆試及答案
- 2025年大學(xué)競選干部筆試題目及答案
- 2025年網(wǎng)易3d角色制作筆試及答案
- 2026新疆中閩(哈密)能源有限公司招聘3人考試備考試題及答案解析
- 2025年永州網(wǎng)人事考試及答案
- 2025年幼教筆試重點歸納知識點及答案
- 2026湖南智谷投資發(fā)展集團有限公司招聘補充筆試備考題庫及答案解析
- ISO 15609-1 2019 金屬材料焊接工藝規(guī)程和評定-焊接工藝規(guī)程-電弧焊(中文版)
- 2024年四川省成都市青羊區(qū)中考數(shù)學(xué)二診試卷(含答案)
- 肥胖患者麻醉管理
- 小鯉魚跳龍門電子版
- 2019年急性腦梗死出血轉(zhuǎn)化專家共識解讀
- 左心導(dǎo)管檢查及造影操作技術(shù)規(guī)范
- 《混凝土結(jié)構(gòu)工程施工規(guī)范》
- 社會實踐登記表
- 土地證延期申請書
- 硫乙醇酸鹽流體培養(yǎng)基適用性檢查記錄
- 進階切分技法advanced funk studies rick latham-藍色加粗字
評論
0/150
提交評論