華中科技大學(xué)單片機實驗二報告_第1頁
華中科技大學(xué)單片機實驗二報告_第2頁
華中科技大學(xué)單片機實驗二報告_第3頁
華中科技大學(xué)單片機實驗二報告_第4頁
華中科技大學(xué)單片機實驗二報告_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論