




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上單片機實驗報告實驗名稱 分支程序設(shè)計 指導(dǎo)教師 劉 冬 生 專業(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
2、. 實現(xiàn)4位十進(jìn)制加、減1計數(shù),千位、百位由P1口輸出;十位、個位由P2口輸出。利用P3.7狀態(tài)選擇加、減計數(shù)方式。 b. 利用P3口低四位狀態(tài)控制開始和停止計數(shù),控制方式自定。二 設(shè)計思路1.分段函數(shù)設(shè)計對于第一個任務(wù),根據(jù)變量X的值的不同進(jìn)行相應(yīng)的計算。所以我們首先要判斷X的值屬于那個范圍。我們可利用比較轉(zhuǎn)移指令CJNE來判斷X是否等于臨界值20,40,若不等,再根據(jù)執(zhí)行CJNE指令后的進(jìn)位位CY的值來判斷X與臨界值的的大小關(guān)系,如:CY=0則X大于臨界值,CY=1則X小于臨界值;然后根據(jù)X的值所在的區(qū)間進(jìn)行相應(yīng)的計算。應(yīng)該注意的是,除法計算中可能產(chǎn)生余數(shù),商和余數(shù)應(yīng)該分開存儲,若乘方運算
3、結(jié)果大于255,高八位與低八位應(yīng)分開存儲224進(jìn)制時鐘本程序須可以構(gòu)建兩部分循環(huán)。首先構(gòu)建一個三重循環(huán)實現(xiàn)“一秒延時”,循環(huán)體利用NOP指令(單字節(jié)指令,1s)經(jīng)多次循環(huán)達(dá)到延時一秒的效果。再利用已經(jīng)構(gòu)建好的“一秒延時”部分,設(shè)計計時系統(tǒng)的三重循環(huán),秒(0-59)、分(0-59)、時(0-23)。秒和分計60次,小時計24次,但,是從0開始計,所以在分、秒達(dá)到59,小時達(dá)到23時,下一次應(yīng)該為零。程序運行時修改P3.0的值可以實現(xiàn)暫停和繼續(xù)的功能三 資源分配1. 分段函數(shù) 根據(jù)題目的條件,首先,設(shè)該8位無符號數(shù)為30H,把片外地址4000H分配給它,把片外地址4001H和4002H分配給經(jīng)分段
4、函數(shù)計算得到的結(jié)果Y。按位取反計算結(jié)果存于4001H單元,而除法計算結(jié)果的商與余數(shù)和乘方計算中結(jié)果的高、低八位分開存儲于4001H-4002H單元。用寄存器A,B來存放在乘除運算中所得的中間結(jié)果。 2. 二十四進(jìn)制時鐘 工作寄存器R0、R1、R2分別用于秒、分、時循環(huán)次數(shù)的設(shè)定,R3、R4分別用于分與時的循環(huán)計數(shù),R5-R7用于“一秒延時”中三重循環(huán)的循環(huán)次數(shù)設(shè)定。秒、分、時數(shù)值分別由P2、P1、P0端口輸出。 四 流程圖開始給定X,并把X的值賦到A中設(shè)置一個數(shù)據(jù)指針將X的值存在外部存儲器中A20? N CY1? Y對X取反并賦給Y N YCY清零將A的值存到4001H A40?CY1? N
5、Y Y=X/2 Y NY=X2將A的值存到4001H將B的值存到4002H結(jié)束開始將P0,P1,P2,P3清零P3.0=0? N Y延時1S秒計數(shù),R0加1并存入A中,轉(zhuǎn)換成BCD碼R0=60H?將A賦給P2 N YR0,P2置零分計數(shù),R1加1,并存入A中,轉(zhuǎn)換成BCD碼R1=60H?將A賦給P1將R1,P1置零 Y N小時計數(shù),R2加1并存入A,轉(zhuǎn)換成BCD碼R2=R4? 將A賦給P0將R2,P0置零 N Y五 源代碼1. 分段函數(shù) ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV A, #29H ;將8位無符號數(shù)賦給A MOV DPTR, #4000H ;定義
6、數(shù)據(jù)指針 MOVX DPTR, A ;將X存于片外RAM CLR C ;將進(jìn)位位清零KIND1:CJNE A, #14H, KIND2 ;將A與14H比較,若不等于14H,跳轉(zhuǎn)至KIND2OUT1: CPL A ;對A中內(nèi)容取反 MOV DPTR, #4001H ;定義數(shù)據(jù)指針 MOVX DPTR, A ;將計算結(jié)果存于片外地址4001H SJMP DONEKIND2:JNC KIND3 ;判斷進(jìn)位位CY是否為0,若為0,跳轉(zhuǎn)至KIND3 SJMP OUT1 ;否則跳轉(zhuǎn)至OUT1KIND3:CLR C ;將進(jìn)位位清零 CJNE A,#28H, KIND4 ;將A中內(nèi)容與28H比較,若不等于28
7、H,跳轉(zhuǎn)至KIND4OUT2: MOV B,A ;將A中內(nèi)容賦給B MUL AB ;計算X的平方,將結(jié)果高八位存于B,低八位存于A MOV DPTR, #4001H ;定義數(shù)據(jù)指針 MOVX DPTR,A ;將結(jié)果低八位存于片外地址4001H INC DPTR ;數(shù)據(jù)指針加一 MOV A,B ;將B中內(nèi)容賦給A MOVX DPTR,A ;將結(jié)果高八位存于片外地址4002H SJMP DONEKIND4:JNC OUT2 ;判斷進(jìn)位位是否為0,若為0,跳轉(zhuǎn)至OUT2 SJMP OUT3 ;否則跳轉(zhuǎn)至OUT3OUT3: MOV B,#02H DIV AB ;計算X/2,將商存于A,余數(shù)存于B MO
8、V DPTR,#4001H ;定義數(shù)據(jù)指針 MOVX DPTR,A ;將商存于片外地址4001H INC DPTR ;數(shù)據(jù)指針加1 MOV A,B MOVX DPTR,A ;將余數(shù)存于片外地址4002H SJMP DONEDONE: SJMP $ END2. 24小時時鐘 ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV R0,#00HMOV P0,#00H ;時鐘位清零 MOV P1,#00H ;分鐘位清零 MOV P2,#00H ;秒鐘位清零START: JB P3.0,START ;P3.0為低電平開始計數(shù),高電平停止計數(shù) MOV R2,P2 ;P2的值存入R
9、2 CJNE R2,#60H,DEL ;秒鐘達(dá)到60繼續(xù),不足60跳轉(zhuǎn) MOV P2,#00H ;秒鐘清零 MOV A,P1 ADD A,#01H ;分鐘位加1 DA A ;分鐘位改為BCD碼 MOV P1,A MOV R1,P1 ;P1的值存入寄存器R1 CJNE R1,#60H,DEL;分鐘達(dá)到60繼續(xù),不足60跳轉(zhuǎn) MOV P1,#00H;分鐘清零 MOV A,R0 ADD A,#01H;時鐘位加1 DA A;時鐘位改為BCD碼 MOV R0,A MOV P0,A CJNE R0,#24H,DEL;時鐘達(dá)到24繼續(xù),不足24跳轉(zhuǎn) MOV P0,#00H ;時鐘位清零 MOV R0,#00
10、HDEL: MOV R7,#24 ;延時程序LOOP1: MOV R6,#61LOOP2: MOV R5,#170LOOP3: NOP NOP DJNZ R5,LOOP3 DJNZ R6,LOOP2 DJNZ R7,LOOP1 MOV A,P2 ADD A,#01H;秒鐘位加1 DA A MOV P2,A SJMP STARTEND 六. 程序測試方法與結(jié)果、軟件性能分析 1.分段函數(shù)改變X的值,分別在不同的X值時運行程序,結(jié)果如下截圖(1)X=29H (2)X=21H(3)X=0CH結(jié)果與預(yù)測相符合,程序正確。2.24小時時鐘程序 暫停時思考題:1實現(xiàn)多分支結(jié)構(gòu)程序的主要方法有哪些?舉例說明
11、。答:1.是利用條件轉(zhuǎn)移指令實現(xiàn),如DJNZ,JNC等等 例如:例如,判斷兩個單字節(jié)無符號數(shù)的大?。ǚ謩e存于片內(nèi) RAM 的 40H 和 41H 單元)并把大數(shù)存入 42H 單元??梢杂门袛?CY 的轉(zhuǎn)移指令 JNC 來實現(xiàn),程序如下:JUDGE:MOV A,40H CLR C SUBB A,41H JNC LP MOV 42H,41H RETLP: MOV 42H,40H RET2.利用分支表來實現(xiàn),如分支地址表、轉(zhuǎn)移指令表、地址偏移量表。例如:根據(jù) R3 的值控制轉(zhuǎn)向 8 個分支程序。采用分支地址表實現(xiàn):MOV DPTR,#BRATAB ;取表首地址MOV A,R3ADD A,R3 ;AR32JNC NADDINC DPH ;R32 進(jìn)位加到 DPHNADD:MOV A,R4 ;暫存 AMOVC A,A+DPTR ;取分支地址高 8 位XCH A,R4INC AMOVC A,A+DPTR ;取分支地址低 8 位MOV DPL,A ;分支地址低 8 位送 DPLMOV DPH,R4 ;分支地址高 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省阜陽市潁上縣第二中學(xué)2025屆化學(xué)高一下期末教學(xué)質(zhì)量檢測模擬試題含解析
- 江西省永豐中學(xué)2025年高一下化學(xué)期末達(dá)標(biāo)檢測試題含解析
- 河北省深州市中學(xué)2025屆高二化學(xué)第二學(xué)期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 條形碼管理辦法規(guī)定為
- 農(nóng)家書屋維護(hù)管理辦法
- 材料外放加工管理辦法
- 晉安白蟻防治管理辦法
- 華為電子發(fā)票管理辦法
- 機電運輸三違管理辦法
- 教師業(yè)務(wù)專長案例分析
- 河北省2025年中考數(shù)學(xué)真題試卷(含答案)
- 福建福州金山中學(xué)2024~2025學(xué)年高一下冊期末考試數(shù)學(xué)試題含解析
- 2025年廣東省高考生物真題(解析版)
- 2024年哈爾濱市道里區(qū)執(zhí)法輔助人員招聘考試真題
- 學(xué)堂在線 研究生的壓力應(yīng)對與健康心理 期末考試答案
- 2025年7月自考13811績效管理試題及答案含解析
- 企業(yè)環(huán)境監(jiān)測管理制度
- 試藥員知情協(xié)議書
- 2025年嘉興市恒光電力建設(shè)有限責(zé)任公司招聘筆試參考題庫附帶答案詳解
- 2025內(nèi)蒙古鄂爾多斯農(nóng)商行烏海各機構(gòu)員工社會招聘37人筆試歷年典型考題及考點剖析附帶答案詳解
- XX林場20XX年度森林質(zhì)量精準(zhǔn)提升項目實施方案(范文)
評論
0/150
提交評論