版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)二 分支程序設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:分支程序設(shè)計(jì)實(shí)驗(yàn) 指導(dǎo)教師 羅志祥 專業(yè)班級(jí) 光信1006 姓名 張博 學(xué)號(hào)U201013339 聯(lián)系方式一、任務(wù)要求:熟練掌握KeilC環(huán)境下匯編語言程序的調(diào)試方法,加深對(duì)匯編語言指令、機(jī)器碼、尋址方式等基本內(nèi)容的理解,掌握分支程序和簡單程序的設(shè)計(jì)與調(diào)試方法,了解并行IO口的使用。1. 設(shè)有8bits符號(hào)數(shù)X存于外部RAM單元,按以下方式計(jì)算后的結(jié)果Y也存于外部RAM單元,請(qǐng)按要求編寫程序。2. 利用51系列單片機(jī)設(shè)計(jì)一個(gè)24小時(shí)制電子時(shí)鐘,電子時(shí)鐘的時(shí)、分、秒數(shù)值分別通過P0、P1、P2端口輸出(以壓縮BCD碼的形式)。P
2、3.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ì)思路:1.分支函數(shù)程序設(shè)計(jì):首先將X賦給累加器A,與40比較大小,將大于或等于40的執(zhí)行乘方操作;小于40的再與20做比較,大于20的執(zhí)行取除法操作,小于或等于20的執(zhí)行取反操作。最后將計(jì)算結(jié)果Y存于片外的RAM上。2.電子時(shí)鐘程序設(shè)計(jì)思路:首先用循環(huán)程序的嵌套實(shí)現(xiàn)一個(gè)1s的延時(shí),同時(shí)讓記秒的端口P2同步加一,到60后清零;再讓此循環(huán)執(zhí)行60次實(shí)現(xiàn)
3、1min的延時(shí),同時(shí)讓P1同步加一,到60后清零;再讓分鐘的循環(huán)執(zhí)行24次,實(shí)現(xiàn)1hour的延時(shí),同時(shí)讓P0同步加一。至此循環(huán),即可實(shí)現(xiàn)24小時(shí)的時(shí)鐘功能。(注:本計(jì)算機(jī)的晶振頻率為12MHz)3.4位十進(jìn)制加、減1計(jì)數(shù)程序思路:低位的個(gè)位和十位賦給一個(gè)寄存器,而將高位即百位千位賦給另外一個(gè)寄存器,通過循環(huán)程序使低位數(shù)循環(huán)100次即向高位進(jìn)位或借位,高位循環(huán)100次后即回歸初始狀態(tài),同時(shí)設(shè)計(jì)兩個(gè)子函數(shù)分別執(zhí)行加一、減一操作。其中,用P3的第7位的狀態(tài)實(shí)現(xiàn)對(duì)計(jì)數(shù)與否的控制。三、資源分配:1.分支函數(shù)程序:A:累加器C:位操作B:做乘方的寄存器DPTR:片外尋址指針2000H、2001H、2002
4、H:片外存儲(chǔ)空間2.電子時(shí)鐘程序:A:累加器C:位操作P0、P1、P2:分別電子時(shí)鐘的時(shí)、分、秒輸出R0、R1、R2:分別時(shí)分秒計(jì)數(shù)用存儲(chǔ)器R3、R4、R5:完成1s延時(shí)的相關(guān)數(shù)據(jù)存儲(chǔ)3.四位十進(jìn)制加、減1計(jì)數(shù)程序:A:累加器C:位操作P0:低位輸出口 P1:高位輸出口 R0:高位寄存器 R1:低位寄存器 R7 R6:分別臨時(shí)儲(chǔ)存低位和高位的寄存器四、流程圖:1. 分支函數(shù)程序流程圖2電子時(shí)鐘程序流程圖3四進(jìn)制加、減1計(jì)數(shù)程序流程圖各圖形如下:開始取數(shù)比較X與40的大小 大于或等于40比較X與20的大小 小于或等于20 大于20求平均值執(zhí)行取反運(yùn)算執(zhí)行平方運(yùn)算 存結(jié)果于Y結(jié)束電子時(shí)鐘:開始R0
5、,R1,R2置零P0,P1,P2置零R2-0R1-0 R0-0 空操作延時(shí)1秒R0加1,輸出P2R0=60? NO YESR1+1,輸出P1 R1=60? NO YESR2+1,輸出P0R2=24? NO YES清零結(jié)束開始加減計(jì)數(shù)器流程圖:P0, P1, P2-0P3.7=0?執(zhí)行1計(jì)數(shù)執(zhí)行+1計(jì)數(shù) YESR0=0?高兩位R1-1,轉(zhuǎn)換為十進(jìn)制,輸出P0R0-99R0=0?R1-99低位R01,轉(zhuǎn)換為十進(jìn)制,輸出P1P0, P1-99P0, P1-0R1-0R0-0低兩位R0+1,轉(zhuǎn)換為十進(jìn)制,輸出P1R0=99? NO NO YES YES高兩位R1+1,轉(zhuǎn)換為十進(jìn)制,輸出P0R0=99?
6、 YES YES NO NO清零結(jié)束五、源代碼:1)ORG 0000HMOV A,#50HMOV DPTR,#2000HMOVX DPTR,A ;將數(shù)存入片外RAMMOV DPTR,#2000HMOVX A,DPTR ;從片外RAM中取數(shù)XMOV R7,ACLR CMOV R0,#40H ;對(duì)X的值進(jìn)行比較SUBB A,R0JNC MUTIMOV R1,#20HCLR CMOV A,R1SUBB A,R7JC DIVIMOV A,R7CPL A ;對(duì)X進(jìn)行取反MOV DPTR,#2001HMOVX DPTR,A ;存入片外RAMLJMP STOPDIVI:MOV B,#2H ;除法子程序 MO
7、V A,R7 DIV AB MOV DPTR,#2001H MOVX DPTR,A LJMP STOPMUTI:MOV A,R7 ;平方子程序 MOV B,A MUL AB MOV DPTR,#2001H ;低位存入片外RAM中2001H MOVX DPTR,A INC DPTR MOV A,B MOVX DPTR,A ;高位存入片外RAM中2002HSTOP:SJMP $ END2)ORG 0000H MOV R0,#0;R0,R1,R2置0MOV R1,#0MOV R2,#0MOV P0,#0;P0,P1,P2置0MOV P1,#0MOV P2,#0 INPUT:JNB P3.0,STEP
8、 START: ACALL DELAY INC R0;秒鐘計(jì)數(shù) MOV A,R0 ACALL OUTPUT;轉(zhuǎn)化為bcd碼 MOV P2, A CJNE R0,#60,START;60進(jìn)制判斷進(jìn)1 MOV R0,#0; MOV P2,#0; INC R1;分鐘計(jì)數(shù) MOV A,R1 ACALL OUTPUT;轉(zhuǎn)化為bcd碼 MOV P1,A CJNE R1,#60,START;60進(jìn)制判斷 MOV R1,#0; MOV P1,#0; INC R2;時(shí)鐘計(jì)數(shù) MOV A,R2; ACALL OUTPUT;計(jì)算bcd碼 MOV P0,A CJNE R2,#24,START;判斷是不是溢出了 MOV
9、 R2,#0;溢出清0 MOV P0,#0;輸出清0 SJMP INPUT;跳出循環(huán) DELAY:MOV R3,#19H;循環(huán)次數(shù)LOOP:MOV R4,#28HLOOP1:MOV R5,#0FAH;循環(huán)次數(shù)LOOP2:NOP NOP DJNZ R5,LOOP2 DJNZ R4,LOOP1 DJNZ R3,LOOP SJMP START RET OUTPUT:MOV B,#0AH; DIV AB SWAP A ORL A,B RET DONE:SJMP $STEP:SJMP STEP END3)ORG 0000HMOV P0,#0HMOV P1,#0HMOV P2,#0HJUDGE:CLR C
10、 MOV C,P3.7 JNC ADDDONESUBDDONE:MOV P0,#99H MOV P1,#99H MOV R0,#63H ;千,百位 MOV R1,#63H ;十,個(gè)位START: MOV A,R1 ACALL DELAY DEC A MOV R7,A ACALL OUTPUT MOV P1,A MOV B,R7 MOV R1,B CJNE A,#0H,START;低位循環(huán) MOV A,#63H MOV R7,A ACALL OUTPUT MOV P1,A MOV B,R7 MOV R1,B MOV A,R0 MOV R7,A DEC A ACALL OUTPUT MOV P0,
11、A MOV B,R7 MOV R0,B CJNE A,#0H,START ;高位循環(huán) SJMP $;原地踏步ADDDONE:MOV P0,#00H MOV P1,#00H MOV R0,#00H ;千,百位 MOV R1,#00H ;十,個(gè)位MOV R0,#0HSTART1: MOV A,R1 ACALL DELAY INC A MOV R7,A ACALL OUTPUT MOV P1,A MOV B,R7 MOV R1,B CJNE A,#99H,START1 ;低位循環(huán) MOV A,#0H MOV R7,A ACALL OUTPUT MOV P1,A MOV B,R7 MOV R1,B M
12、OV A,R0 INC A MOV R6,A ACALL OUTPUT MOV P0,A MOV B,R6 MOV R0,B CJNE A,#99H,START1 ;高位循環(huán) SJMP $;原地踏步 OUTPUT:MOV B,#0AH;轉(zhuǎn)化為BCD碼 DIV AB SWAP A ORL A,B RET DELAY:MOV R3,#32H;循環(huán)次數(shù)LOOP:MOV R4,#14H;循環(huán)次數(shù)LOOP1:MOV R5,#0FAH;循環(huán)次數(shù)LOOP2:NOP NOP DJNZ R5,LOOP2 DJNZ R4,LOOP1 DJNZ R3,LOOP RET END 六、 程序測(cè)試方法與結(jié)果、軟件性能分析
13、 1) 分段函數(shù)測(cè)試 分別令X=10、30、50測(cè)試個(gè)分段函數(shù),再使用X=20、40測(cè)試分界點(diǎn),其對(duì)應(yīng)結(jié)果如下:X=40時(shí),得到X,Y存入片外RAMX=20時(shí),X=30時(shí),X=40時(shí),Y的高位存入片外RAM 2002H,低位存入2001HX=50時(shí),Y的高位存入片外RAM 2002H,低位存入2001H2)、電子時(shí)鐘測(cè)試當(dāng)P3.0為高電平時(shí),不記時(shí),如圖:當(dāng)P3.7為低電平時(shí)計(jì)時(shí)開始,其計(jì)時(shí)效果如下:由于小時(shí)等待時(shí)間太長,故在此不再截圖顯示3)、4位十進(jìn)制加、減1計(jì)數(shù):當(dāng)P3.7為低電平時(shí)執(zhí)行加一計(jì)數(shù)P0輸出千位和百位 P1輸出十位和各位當(dāng)P3.7為高電平時(shí)執(zhí)行減一計(jì)數(shù)P0輸出千位和百位 P1
14、輸出十位和各位七、思考題1 1實(shí)現(xiàn)多分支結(jié)構(gòu)程序的主要方法有哪些?舉例說明。答:實(shí)現(xiàn)方法大致如下:1. 1.使用條件轉(zhuǎn)移指令實(shí)現(xiàn),如DJNZ,JNC2. 2.使用分支表法,如分支地址表、轉(zhuǎn)移指令表、地址偏移量表。2 2在編程上,十進(jìn)制加1計(jì)數(shù)器與十六進(jìn)制加1計(jì)數(shù)器的區(qū)別是什么?怎樣用十進(jìn)制加法指令實(shí)現(xiàn)減1計(jì)數(shù)?答:十進(jìn)制加一后需要在計(jì)算結(jié)果的基礎(chǔ)上進(jìn)行修正,運(yùn)用DA指令;而十六進(jìn)制加一指令所得結(jié)果即為最終結(jié)果,無需進(jìn)行修正。 寫十進(jìn)制加法指令時(shí),首先將結(jié)果與#0相加,即ADDA,0;然后運(yùn)用DAA指令,修正A為十進(jìn)制,最后再執(zhí)行減一操作,即DEC A。如此便可得到結(jié)果。八、心得與體會(huì)本次實(shí)驗(yàn)主要進(jìn)行了分支程序的設(shè)計(jì)實(shí)驗(yàn),并涉及到了函數(shù)的多分支,與子函數(shù)間的嵌套,加深了我們對(duì)如何運(yùn)用子函數(shù)進(jìn)行程序的分支的方法。其中,分支函數(shù)的實(shí)現(xiàn)過程不是很復(fù)雜,但是電子時(shí)鐘的24小時(shí)制程序設(shè)計(jì)需要對(duì)多級(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 無人機(jī)在工程測(cè)量中的應(yīng)用
- 石河子大學(xué)《網(wǎng)頁設(shè)計(jì)與制作》2023-2024學(xué)年期末試卷
- 石河子大學(xué)《軟件項(xiàng)目管理》2023-2024學(xué)年期末試卷
- 石河子大學(xué)《混凝土結(jié)構(gòu)原理道橋方向》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《電路(二)》2023-2024學(xué)年期末試卷
- 沈陽理工大學(xué)《中國文化概論》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《現(xiàn)代設(shè)計(jì)方法》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《嵌入式系統(tǒng)與Ke》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》2021-2022學(xué)年期末試卷
- 沈陽理工大學(xué)《功能型交互設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 關(guān)于定向詢價(jià)異議的申請(qǐng)書
- 重大事故隱患整改驗(yàn)收?qǐng)?bào)告
- 全國醫(yī)療服務(wù)價(jià)格項(xiàng)目規(guī)范(2012版)
- 一次性付款房屋買賣合同
- 組織行為學(xué)案例分析 組織行為學(xué)案例分析
- 重大事故隱患數(shù)據(jù)表
- 供應(yīng)鏈管理(第3版)高職PPT完整全套教學(xué)課件
- 急性扁桃體炎病人的護(hù)理
- 清淤、清表施工方案
- 2023上海外國語大學(xué)三亞附屬中學(xué)第一次招聘19人筆試備考題庫及答案解析
- 悅納兒童的文化生長東莞市莞城中心小學(xué)“悅納教育”的思與行
評(píng)論
0/150
提交評(píng)論