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

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)名稱 分支與循環(huán)程序設(shè)計(jì)實(shí)驗(yàn) 指導(dǎo)教師 羅志祥 專業(yè)班級 光電1406 姓名 段昳暉 學(xué)號 U2014* 聯(lián)系電話 137*1、 任務(wù)要求1. 設(shè)有8bits符號數(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í)。設(shè)計(jì)1s延時(shí)子程序(延時(shí)誤差小于10us,晶振頻率12MHz)。2、 設(shè)計(jì)思路1. 設(shè)有8bits符號數(shù)X存于外部RAM單元,按以下

2、方式計(jì)算后的結(jié)果Y也存于外部RAM單元,請按要求編寫完整程序。 將外部單元1000H中的X,通過分支判斷,分別執(zhí)行不同的語句,三條語句分別為標(biāo)記為L1、L2、L3,先比較X與64的大小關(guān)系,再判斷X與10的大小關(guān)系,主要利用比較轉(zhuǎn)移指令CJNE,以及執(zhí)行CJNE指令后的進(jìn)位位CY,進(jìn)一步比較大小,分別跳轉(zhuǎn)至對應(yīng)語句。將結(jié)果存于外部單元的1001H以及1002H。2. 利用51系列單片機(jī)設(shè)計(jì)一個(gè)24小時(shí)制電子時(shí)鐘,電子時(shí)鐘的時(shí)、分、秒數(shù)值分別通過P0、P1、P2端口輸出(以壓縮BCD碼的形式)。P3.0為低電平時(shí)開始計(jì)時(shí),為高電平時(shí)停止計(jì)時(shí)。設(shè)計(jì)1s延時(shí)子程序(延時(shí)誤差小于10us,晶振頻率12

3、MHz)。 主程序設(shè)計(jì)三層循環(huán),分別對應(yīng)時(shí)、分、秒,最內(nèi)層安放一秒延時(shí)程序。利用R0、R1、R2計(jì)數(shù),R3保存分鐘數(shù)、R4保存小時(shí)數(shù),最內(nèi)層循環(huán)60次,中循環(huán)循環(huán)1次,中循環(huán)60秒,外循環(huán)循環(huán)1次,外循環(huán)循環(huán)24次,清零。其中對端口顯示的秒數(shù)、分鐘數(shù)、時(shí)間數(shù),進(jìn)行二進(jìn)制修正。利用循環(huán)來設(shè)計(jì)延時(shí)程序,合理計(jì)算語句長度,以及循環(huán)次數(shù)。程序運(yùn)行時(shí)修正P3.0的值,可以實(shí)現(xiàn)暫停計(jì)數(shù)和繼續(xù)的功能。提高部分(選做):1) 實(shí)現(xiàn)4位十進(jìn)制加、減1計(jì)數(shù),千位、百位由P1口輸出;十位、個(gè)位由P2口輸出。利用P3.7狀態(tài)選擇加、減計(jì)數(shù)方式。2) 利用P3口低四位狀態(tài)控制開始和停止計(jì)數(shù),控制方式自定。 初始化P1、

4、P2,計(jì)數(shù)循環(huán)中插入一秒延時(shí)程序。R1存千百位、R2存?zhèn)€十位,P3.7=0時(shí),進(jìn)行加1計(jì)數(shù),取出R2中的數(shù)存于A,對A 加1,同時(shí)進(jìn)行十進(jìn)制修正,存于P2,達(dá)到99,則進(jìn)位對千百位進(jìn)行加1。P3.7=1時(shí),進(jìn)行減一操作,取出R1中的數(shù)存于A,對A減1,同時(shí)進(jìn)行十進(jìn)制修正,存于P1,達(dá)到0,則對P2,對R2進(jìn)行減一。計(jì)數(shù)循環(huán)前判斷P3.0的值,當(dāng)P3.0=1時(shí),開始計(jì)數(shù),P3.0=0時(shí),原地循環(huán),停止計(jì)數(shù),直到P3.0=1,可以實(shí)現(xiàn)隨時(shí)停止與開始。3、 資源分配1. 設(shè)有8bits符號數(shù)X存于外部RAM單元,按以下方式計(jì)算后的結(jié)果Y也存于外部RAM單元,請按要求編寫完整程序。 X存于片外1000

5、HY存于片外1001H、1002H其中,求平方時(shí),低位存于1001H,,高位存于1002H除二時(shí),商存于1001H,,余數(shù)存于1002H2. 利用51系列單片機(jī)設(shè)計(jì)一個(gè)24小時(shí)制電子時(shí)鐘,電子時(shí)鐘的時(shí)、分、秒數(shù)值分別通過P0、P1、P2端口輸出(以壓縮BCD碼的形式)。P3.0為低電平時(shí)開始計(jì)時(shí),為高電平時(shí)停止計(jì)時(shí)。設(shè)計(jì)1s延時(shí)子程序(延時(shí)誤差小于10us,晶振頻率12MHz)。P0輸出小時(shí)數(shù)P1輸出分鐘數(shù)P2輸出秒數(shù)R0小時(shí)循環(huán)計(jì)數(shù)R1分鐘循環(huán)計(jì)數(shù)R2秒循環(huán)計(jì)數(shù)R3保存分鐘數(shù)R4保存小時(shí)數(shù)提高部分(選做):1)實(shí)現(xiàn)4位十進(jìn)制加、減1計(jì)數(shù),千位、百位由P1口輸出;十位、個(gè)位由P2口輸出。利用P

6、3.7狀態(tài)選擇加、減計(jì)數(shù)方式。2)利用P3口低四位狀態(tài)控制開始和停止計(jì)數(shù),控制方式自定。 P1輸出千百位P2輸出個(gè)十位P3.0 計(jì)數(shù)開始與停止控制P3.7 加1減1計(jì)數(shù)切換R1存千百位R2存?zhèn)€十位4、 流程圖1. 設(shè)有8bits符號數(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í)。設(shè)計(jì)1s延時(shí)子程序(延時(shí)誤差小于10us,晶振頻率12MHz)。提高部分(選做):1)實(shí)現(xiàn)4

7、位十進(jìn)制加、減1計(jì)數(shù),千位、百位由P1口輸出;十位、個(gè)位由P2口輸出。利用P3.7狀態(tài)選擇加、減計(jì)數(shù)方式。2)利用P3口低四位狀態(tài)控制開始和停止計(jì)數(shù),控制方式自定。 5、 源代碼 (含文件頭說明、語句行注釋)1. 設(shè)有8bits符號數(shù)X存于外部RAM單元,按以下方式計(jì)算后的結(jié)果Y也存于外部RAM單元,請按要求編寫完整程序。 File name: task1.asmDescription: 對8bits符號數(shù)X,對于不同的X進(jìn)行不同的運(yùn)算操作Date: 2016.10.13Designed by: Source used: 1000H: 存X的值 1001H、1002H: 存Y的值 1001H:

8、平方運(yùn)算所得低位;除法運(yùn)算所得商 1002H:平方運(yùn)算所得高位;除法運(yùn)算所得余數(shù)ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV DPTR,#1000H ;X存于1000H MOV A,#-1 ;給X賦值 MOV B,#0 MOVX DPTR,A ;正負(fù)判斷 JB ACC.7,L3 ;X<0,L3 ;X>0 CJNE A,#64,L2 ;A!=64,L2 SJMP L1L1: MOV B,A ;X>=64 MUL AB SJMP STORE ;低位存于1001H,¸高位存于1002H L2: JNC L1 ;X>64,L1 CJNE

9、 A,#10,L4 ;A!=10,L4 SJMP L3 ;X=10,L3 L4: JC L3 ;X<10,L3 MOV B,#2 DIV AB ;X>10 SJMP STORE ;商存于1001H,余數(shù)存于1002H L3: CPL A ;X<=10STORE: INC DPTR ;結(jié)果存于1001H MOVX DPTR,A INC DPTR MOV A,B MOVX DPTR,A SJMP $END 2. 利用51系列單片機(jī)設(shè)計(jì)一個(gè)24小時(shí)制電子時(shí)鐘,電子時(shí)鐘的時(shí)、分、秒數(shù)值分別通過P0、P1、P2端口輸出(以壓縮BCD碼的形式)。P3.0為低電平時(shí)開始計(jì)時(shí),為高電平時(shí)停止

10、計(jì)時(shí)。設(shè)計(jì)1s延時(shí)子程序(延時(shí)誤差小于10us,晶振頻率12MHz)。3.File name: task2.asmDescription: 24小時(shí)制電子時(shí)鐘Date: 2016.10.13Designed by: DYHSource used: P0:輸出小時(shí)數(shù)P1:輸出分鐘數(shù)P2:輸出秒數(shù)R0:小時(shí)循環(huán)計(jì)數(shù)R1:分鐘循環(huán)計(jì)數(shù)R2:秒循環(huán)計(jì)數(shù)R3:保存分鐘數(shù)R4:保存小時(shí)數(shù) ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP,#40H MOV P0,#0 MOV P1,#0 MOV P2,#0 MOV R3,#0 ;保存小時(shí) MOV R4,#0 ;保存分鐘 ;

11、設(shè)定循環(huán) MOV R0,#24 ;小時(shí) 外循環(huán)·24 MOV R1,#59 ;分鐘 中循環(huán)·60 MOV R2,#59 ;秒 內(nèi)循環(huán)·60 CLR A LOOP: JNB P3.0,$ ;p3.0=0,結(jié)束計(jì)數(shù) LCALL DELAY ;延時(shí)1s ADD A,#1 DA A MOV P2,A DJNZ R2,LOOP MOV A,R3 ;分鐘開始計(jì)數(shù) 將分鐘賦給A ADD A,#1 ;分鐘+1 DA A MOV R3,A MOV P1,A CLR A ;秒清零 MOV R2,#59 ;重置內(nèi)循環(huán)· DJNZ R1,LOOP ;R1!=0,中循環(huán) MOV

12、R3,#0 ;分鐘清零,小時(shí)計(jì)數(shù) MOV A,R4 ADD A,#1 DA A MOV R4,A MOV P0,A MOV R2,#59 ;重置中循環(huán) MOV R1,#59 ;重置外循環(huán) DJNZ R0,LOOPDONE: SJMP $ DELAY: MOV R7,#11 ;n=(201*5+5)*90+9)*11+2= DELAY3: MOV R6,#90 ;t=1.s DELAY2: MOV R5,#201 DELAY1: NOP NOP NOP DJNZ R5,DELAY1 NOP NOP DJNZ R6,DELAY2 NOP NOP NOP NOP NOP NOP DJNZ R7,DE

13、LAY3 RET END 提高部分(選做):1)實(shí)現(xiàn)4位十進(jìn)制加、減1計(jì)數(shù),千位、百位由P1口輸出;十位、個(gè)位由P2口輸出。利用P3.7狀態(tài)選擇加、減計(jì)數(shù)方式。2)利用P3口低四位狀態(tài)控制開始和停止計(jì)數(shù),控制方式自定。Description: 實(shí)現(xiàn)4位十進(jìn)制加、減1計(jì)數(shù)Date: 2016.10.13Designed by: DYHSource used: P1輸出千百位P2輸出個(gè)十位P3.0 計(jì)數(shù)開始與停止控制P3.7 加1減1計(jì)數(shù)切換R1存千百位R2存?zhèn)€十位 ORG 0000H MOV P1,#0 ;輸出千百位 MOV P2,#0 ;輸出個(gè)十位 MOV R1,#0 ;存千百位 MOV R2

14、,#0 ;存?zhèn)€十位 LJMP MAIN ORG 0100HMAIN: JB P3.0,$ ;計(jì)數(shù)開始與停止控制 JNB P3.7,ADD1 ;加1減1,模式選擇SUB1: MOV P1,#99 MOV P2,#99 MOV R1,#99 LOOP2: MOV R2,#99 LOOP1: JB P3.0,$ JNB P3.7,LOOP3 MOV A,R2 LCALL DELAY DEC A MOV R2,A MOV P2,R2 CJNE R2,#0H,LOOP1 MOV A,R1 DEC A MOV R1,A MOV P1,R1 CJNE R1,#0H,LOOP2 SJMP $ ADD1: MO

15、V P1,#0 MOV P2,#0 MOV R1,#0 LOOP4: MOV R2,#0 LOOP3: JB P3.0,$ JB P3.7,LOOP1 MOV A,R2 LCALL DELAY INC A MOV R2,A MOV P2,R2 CJNE R2,#99H,LOOP3 MOV A,R1 INC A MOV R1,A MOV P1,R1 CJNE R1,#99H,LOOP4 MOV R1,#0 SJMP $DELAY: MOV R7,#11 ;n=(201*5+5)*90+9)*11+2= DELAY3: MOV R6,#90 ;t=1.s DELAY2: MOV R5,#201 D

16、ELAY1: NOP NOP NOP DJNZ R5,DELAY1 NOP NOP DJNZ R6,DELAY2 NOP NOP NOP NOP NOP NOP DJNZ R7,DELAY3 RET END 6、 程序測試方法與結(jié)果1. 設(shè)有8bits符號數(shù)X存于外部RAM單元,按以下方式計(jì)算后的結(jié)果Y也存于外部RAM單元,請按要求編寫完整程序。 (1) X=-30=E2H Y=1DH(2) .X=5=05H,Y=FAH(3) .X=10=0AH,Y=F5H(4) X=25=19h Y=0CH(商) 01H(余數(shù))(5) .X=64=40H Y=1000H2. 利用51系列單片機(jī)設(shè)計(jì)一個(gè)24小

17、時(shí)制電子時(shí)鐘,電子時(shí)鐘的時(shí)、分、秒數(shù)值分別通過P0、P1、P2端口輸出(以壓縮BCD碼的形式)。P3.0為低電平時(shí)開始計(jì)時(shí),為高電平時(shí)停止計(jì)時(shí)。設(shè)計(jì)1s延時(shí)子程序(延時(shí)誤差小于10us,晶振頻率12MHz)。(1) P3.0=0,停止計(jì)數(shù)(2) 分鐘進(jìn)位前(3) 分鐘進(jìn)位后(4) 小時(shí)進(jìn)位前(5) 小時(shí)進(jìn)位后提高部分(選做):1)實(shí)現(xiàn)4位十進(jìn)制加、減1計(jì)數(shù),千位、百位由P1口輸出;十位、個(gè)位由P2口輸出。利用P3.7狀態(tài)選擇加、減計(jì)數(shù)方式。2)利用P3口低四位狀態(tài)控制開始和停止計(jì)數(shù),控制方式自定。 (1) P3.0=1,停止計(jì)數(shù)(2) P3.0=1,中途停止計(jì)數(shù)(3) P3.0=0,從暫停點(diǎn)繼續(xù)計(jì)數(shù)(4) P3.7=0,加1計(jì)數(shù)前后(5) P3.7=1,減1計(jì)數(shù)前后思考題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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論