分支程序的設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告_第1頁
分支程序的設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告_第2頁
分支程序的設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告_第3頁
分支程序的設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告_第4頁
分支程序的設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

./實(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單元,請按要求編寫程序.2.利用51系列單片機(jī)設(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ì)思路: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)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ī)的晶振頻率為12MHz3.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、2002H:片外存儲(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:低位寄存器R7R6:分別臨時(shí)儲(chǔ)存低位和高位的寄存器四、流程圖:1.分支函數(shù)程序流程圖2.電子時(shí)鐘程序流程圖3.四進(jìn)制加、減1計(jì)數(shù)程序流程圖各圖形如下:開始開始取數(shù)取數(shù)比較X與40的大小比較X與40的大小大于或等于40比較X與20的大小比較X與20的大小小于或等于20大于20求平均值執(zhí)行取反運(yùn)算執(zhí)行平方運(yùn)算求平均值執(zhí)行取反運(yùn)算執(zhí)行平方運(yùn)算存結(jié)果于Y存結(jié)果于Y結(jié)束結(jié)束電子時(shí)鐘:開始開始R0,R1,R2置零R0,R1,R2置零P0,P1,P2置零R2<-0R2<-0R1<-0R1<-0R0<-0R0<-0空操作延時(shí)1秒空操作延時(shí)1秒R0加1,輸出P2R0加1,輸出P2R0=60?R0=60?NOYESR1+1,輸出P1R1+1,輸出P1R1=60?NOR1=60?YESR2+1,輸出P0R2+1,輸出P0R2=24?R2=24?NOYES清零清零結(jié)束結(jié)束開始加減計(jì)數(shù)器流程圖:開始P0,P1,P2<-0P0,P1,P2<-0P3.7=0?P3.7=0?執(zhí)行—1計(jì)數(shù)執(zhí)行—1計(jì)數(shù)執(zhí)行+1計(jì)數(shù)R0=0?高兩位R1-1,轉(zhuǎn)換為十進(jìn)制,輸出P0R0<-99R0=0?R1<-99低位R0—1,轉(zhuǎn)換為十進(jìn)制,輸出P1P0,P1<-99P0,P1<-0R0=0?高兩位R1-1,轉(zhuǎn)換為十進(jìn)制,輸出P0R0<-99R0=0?R1<-99低位R0—1,轉(zhuǎn)換為十進(jìn)制,輸出P1P0,P1<-99P0,P1<-0R1<-0R1<-0R0<-0R0<-0低兩位R0+1,轉(zhuǎn)換為十進(jìn)制,輸出P1低兩位R0+1,轉(zhuǎn)換為十進(jìn)制,輸出P1R0=99?R0=99?NONOYESYES高兩位R1+1,轉(zhuǎn)換為十進(jìn)制,輸出P0高兩位R1+1,轉(zhuǎn)換為十進(jìn)制,輸出P0R0=99?YESYESR0=99?NONO清零清零結(jié)束結(jié)束五、源代碼:1ORG0000HMOVA,#50HMOVDPTR,#2000HMOVX@DPTR,A;將數(shù)存入片外RAMMOVDPTR,#2000HMOVXA,@DPTR ;從片外RAM中取數(shù)XMOVR7,ACLRCMOVR0,#40H ;對(duì)X的值進(jìn)行比較SUBBA,R0JNCMUTIMOVR1,#20HCLRCMOVA,R1SUBBA,R7JCDIVIMOVA,R7CPLA ;對(duì)X進(jìn)行取反MOVDPTR,#2001HMOVX@DPTR,A;存入片外RAMLJMPSTOPDIVI:MOVB,#2H;除法子程序MOVA,R7DIVABMOVDPTR,#2001HMOVX@DPTR,ALJMPSTOPMUTI:MOVA,R7;平方子程序MOVB,AMULABMOVDPTR,#2001H;低位存入片外RAM中2001H MOVX@DPTR,A INCDPTR MOVA,B MOVX@DPTR,A ;高位存入片外RAM中2002HSTOP:SJMP$ END2ORG0000HMOVR0,#0;R0,R1,R2置0MOVR1,#0MOVR2,#0MOVP0,#0;P0,P1,P2置0MOVP1,#0MOVP2,#0INPUT:JNBP3.0,STEPSTART:ACALLDELAY INCR0;秒鐘計(jì)數(shù)MOVA,R0ACALLOUTPUT;轉(zhuǎn)化為bcd碼 MOVP2,ACJNER0,#60,START;60進(jìn)制判斷進(jìn)1MOVR0,#0;MOVP2,#0;INCR1;分鐘計(jì)數(shù)MOVA,R1ACALLOUTPUT;轉(zhuǎn)化為bcd碼 MOVP1,ACJNER1,#60,START;60進(jìn)制判斷MOVR1,#0;MOVP1,#0;INCR2;時(shí)鐘計(jì)數(shù)MOVA,R2;ACALLOUTPUT;計(jì)算bcd碼 MOVP0,ACJNER2,#24,START;判斷是不是溢出了MOVR2,#0;溢出清0MOVP0,#0;輸出清0SJMPINPUT;跳出循環(huán)DELAY:MOVR3,#19H;循環(huán)次數(shù)LOOP:MOVR4,#28HLOOP1:MOVR5,#0FAH;循環(huán)次數(shù)LOOP2:NOPNOPDJNZR5,LOOP2DJNZR4,LOOP1DJNZR3,LOOPSJMPSTARTRETOUTPUT:MOVB,#0AH;DIVABSWAPAORLA,BRETDONE:SJMP$STEP:SJMPSTEPEND3ORG0000HMOVP0,#0HMOVP1,#0HMOVP2,#0HJUDGE:CLRCMOVC,P3.7 JNCADDDONESUBDDONE:MOVP0,#99HMOVP1,#99HMOVR0,#63H;千,百位MOVR1,#63H;十,個(gè)位START: MOVA,R1 ACALLDELAYDECA MOVR7,A ACALLOUTPUT MOVP1,A MOVB,R7 MOVR1,B CJNEA,#0H,START ;低位循環(huán) MOVA,#63H MOVR7,A ACALLOUTPUT MOVP1,A MOVB,R7 MOVR1,B MOVA,R0 MOVR7,A DECA ACALLOUTPUT MOVP0,A MOVB,R7 MOVR0,B CJNEA,#0H,START ;高位循環(huán) SJMP$;原地踏步ADDDONE:MOVP0,#00HMOVP1,#00HMOVR0,#00H;千,百位MOVR1,#00H;十,個(gè)位 MOVR0,#0HSTART1: MOVA,R1 ACALLDELAYINCA MOVR7,A ACALLOUTPUT MOVP1,A MOVB,R7 MOVR1,B CJNEA,#99H,START1 ;低位循環(huán) MOVA,#0H MOVR7,A ACALLOUTPUT MOVP1,A MOVB,R7 MOVR1,B MOVA,R0 INCA MOVR6,A ACALLOUTPUT MOVP0,A MOVB,R6 MOVR0,B CJNEA,#99H,START1 ;高位循環(huán) SJMP$;原地踏步OUTPUT:MOVB,#0AH;轉(zhuǎn)化為BCD碼DIVABSWAPAORLA,BRETDELAY:MOVR3,#32H;循環(huán)次數(shù)LOOP:MOVR4,#14H;循環(huán)次數(shù)LOOP1:MOVR5,#0FAH;循環(huán)次數(shù)LOOP2:NOPNOPDJNZR5,LOOP2DJNZR4,LOOP1DJNZR3,LOOPRETEND六、程序測試方法與結(jié)果、軟件性能分析1分段函數(shù)測試分別令X=10、30、50測試個(gè)分段函數(shù),再使用X=20、40測試分界點(diǎn),其對(duì)應(yīng)結(jié)果如下:X=40時(shí),得到X,Y存入片外RAMX=20時(shí),X=30時(shí),X=40時(shí),Y的高位存入片外RAM2002H,低位存入2001HX=50時(shí),Y的高位存入片外RAM2002H,低位存入2001H2>、電子時(shí)鐘測試當(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輸出十位和各位七、思考題1.實(shí)現(xiàn)多分支結(jié)構(gòu)程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論