微機原理與接口技術軟件實驗_第1頁
微機原理與接口技術軟件實驗_第2頁
微機原理與接口技術軟件實驗_第3頁
微機原理與接口技術軟件實驗_第4頁
微機原理與接口技術軟件實驗_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、本科實驗報告課程名稱:微機原理與接口技術姓 名:陳肖葦學 院:信息與電子工程學院專 業(yè):電子科學與技術學 號:3140104580指導教師:黃凱2016年 11 月 3 日專業(yè):_電子科學與技術_姓名: 陳肖葦 學號: 3140104580 日期: 2016.11.3 地點:教十一400室 實驗報告課程名稱: 微機原理與接口技術 指導老師: 黃凱 成績:_實驗名稱: 單片機軟件實驗一二 實驗一 內(nèi)存操作1. 基礎型實驗內(nèi)容 下列程序的功能是給外部RAM800080FFH的256個單元的內(nèi)容賦值,賦值的內(nèi)容取決于程序中A的賦值。在WAVE環(huán)境運行該程序,并觀察寄存器及內(nèi)存單元的變化。代碼: OR

2、G 0000HSTART EQU 8000HMAIN: MOV DPTR, #START MOV R0, #0 ;設置256字節(jié)計數(shù)值 MOV A, #1H ;置A中內(nèi)容為1Loop: MOVX DPTR, A INC DPTR ;指向下一個位置 DJNZ R0, Loop ;循環(huán)256次 NOP SJMP $ END 代碼分析:l 功能:將外部RAM800080FFH的256個單元的內(nèi)容賦值為1。實驗現(xiàn)象: XDATA區(qū)的800080FFH的256個單元被賦值為01。實驗結果如下:圖一:內(nèi)存操作實驗一截圖 下列程序?qū)?000H起始的256個字節(jié)存儲塊移動到4000H起始的256個字節(jié)存儲塊,

3、在WAVE環(huán)境運行如下程序,觀察寄存器及存儲單元的變化。代碼:ORG 0000H MOV DPTR,#3000H MOV A,#01H MOV R5,#0LOOP: MOVX DPTR,A INC DPTR DJNZ R5,LOOP MOV R0, #30H MOV R1, #00H MOV R2, #40H MOV R3, #00H MOV R7, #0LOOP1:MOV DPH, R0 MOV DPL, R1 MOVX A, DPTR MOV DPH, R2 MOV DPL, R3 MOVX DPTR, A INC R1 INC R3 DJNZ R7, LOOP1 SJMP $ END代碼

4、分析:l 功能:將4000H起始的256個字節(jié)存儲塊全部賦值為1。l 實現(xiàn):先通過256次循環(huán),將3000H起始的256個字節(jié)存儲塊賦值為1,然后利用MOVX指令,先將30XXH中的數(shù)據(jù)值寫入A,然后修改DPTR,指向40XXH,循環(huán)256次,實現(xiàn)將4000H起始的256個字節(jié)存儲塊全部賦值為1。實驗現(xiàn)象:從3000H和4000H起始的256個字節(jié)存儲塊全部賦值為01,實驗結果如下圖:圖二:從3000H起始的256個字節(jié)存儲塊全部賦值為01圖三:從4000H起始的256個字節(jié)存儲塊全部賦值為01 在WAVE環(huán)境運行如下程序,觀察寄存器及內(nèi)存單元的變化,將變化結果注釋于右側,并說明程序完成什么功

5、能?將程序中MOV A,R0改成MOVX A,R0,將MOV R1,A改成MOVX R1,A,運行如下程序,觀察寄存器及內(nèi)存單元的變化。代碼: ORG 0000H MOV R0,#30H ;賦值 MOV R1,#50H MOV R2,#20HL1: MOV R0,#01H ;源代碼無賦值,看不出變化,為突出變化,此處賦值為1 MOV A ,R0 ;將30H中的內(nèi)容搬給A MOV R1,A ;將A中的內(nèi)容搬給50H INC R0 ;自增 INC R1 ;自增 DJNZ R2,L1 ;循環(huán)20H次END代碼分析:l 功能:將內(nèi)部RAM的30H起始的20H個字節(jié)存儲塊搬運到內(nèi)部RAM的50H起始的2

6、0H個字節(jié)存儲塊。實驗現(xiàn)象:從3000H和4000H起始的256個字節(jié)存儲塊全部賦值為01,實驗結果如下圖:圖四:程序執(zhí)行結束后,內(nèi)部RAM的值從30H起始的20H個字節(jié)存儲塊與從30H起始的50H個字節(jié)存儲塊全部賦值為01圖五:程序執(zhí)行結束后內(nèi)部寄存器的值2. 設計型實驗內(nèi)容 在WAVE環(huán)境修改內(nèi)部RAM 30H 3FH的內(nèi)容分別為#00H-#0FH,設計程序?qū)崿F(xiàn)將內(nèi)部RAM30H-3FH到40H-4FH的數(shù)據(jù)塊拷貝。代碼: ORG 0000H MOV R0,#30H ;內(nèi)部RAM的30H起始位置 MOV R1,#40H ;內(nèi)部RAM的40H起始位置 MOV R2,#10H ;循環(huán)次數(shù),16

7、次 MOV R3,#00H ;要寫入的內(nèi)容,初值為0LOOP: MOV A,R3 ;將要寫入的內(nèi)容寫入A MOV R0,A ; 將內(nèi)容寫入R1所指向的單元 MOV R1,A ;將內(nèi)容寫入R1所指向的單元 INC R0 ;寫入位置自增1 INC R1 ;寫入目的位置自增1 INC R3 ;寫入內(nèi)容自增1 DJNZ R2,LOOP ;循環(huán)16次 END實驗現(xiàn)象:內(nèi)部RAM 30H 3FH的內(nèi)容分別為#00H-#0FH,且內(nèi)部RAM 40H 4FH的內(nèi)容也為#00H-#0FH。圖六:程序執(zhí)行之后,00H0FH被寫入30H4FH 在WAVE環(huán)境修改內(nèi)部RAM 30H 3FH的內(nèi)容分別為#00H-#0F

8、H,設計程序?qū)崿F(xiàn)將片內(nèi)30H3FH單元的內(nèi)容復制到片外1030H103FH中。代碼: ORG 0000H MOV R0,#30H ;內(nèi)部RAM的30H起始位置 MOV DPH,#10H ;設置DPTR的值 MOV DPL,#30H MOV R2,#10H ;循環(huán)次數(shù),16次 MOV R3,#00H ;要寫入的內(nèi)容,初值為0LOOP: MOV A,R3 ;將要寫入的內(nèi)容寫入A MOV R0,A ; 將內(nèi)容寫入R1所指向的單元 MOVX DPTR,A ;將內(nèi)容寫入R1所指向的單元 INC R0 ;寫入位置自增1 INC DPL ;DPTR自增1 INC R3 ;寫入內(nèi)容自增1 DJNZ R2,LO

9、OP ;循環(huán)16次 END實驗結果:內(nèi)部RAM的30H3FH,以及外部RAM的1030H103FH,被依次寫入00H0FH。圖七:程序執(zhí)行之后,00H0FH被寫入外部RAM的1030H103FH實驗二 數(shù)制及代碼轉換1. 基礎型實驗內(nèi)容以下程序完成單字節(jié)的ASCII碼到十六進制數(shù)轉換,完成空白處程序填寫,并在WAVE環(huán)境運行程序,觀察寄存器及內(nèi)存單元的變化代碼:RESULT EQU 30H ORG 0000H MOV A,#41H ;“A”的ASCII碼 CLR C SUBB A,#37H ; 轉換為十六進制值A MOV RESULT, A LJMP $ END代碼解讀:因為AF的ASCII碼

10、值從41H開始,而A的十六進制值為0AH,所以41H-0AH=37H,即AF的ASCII碼需減去37H,才能得到對應的十六進制值。(因為為程序填空,所以沒有寫出一段完整的子程序,所以只能完成AF的正確轉換,而不能完成01的ASCII碼轉16進制)實驗結果:可以觀察到內(nèi)部RAM的30H單元處寫入0AH,程序執(zhí)行正確,結果如下:圖八:轉換后的十六進制數(shù)寫入30H 以下程序完成單字節(jié)的BCD碼到十六進制數(shù)轉換, ,在WAVE環(huán)境運行程序,觀察寄存器及內(nèi)存單元的變化。代碼:RESULT EQU 30H ORG 0000H MOV A,#23H ;0010 0011(35?) MOV R0,A ANL

11、A,#0F0H ;與1111 0000進行邏輯與操作,結果為0010 0000 SWAP A ;A的高低4位交換,為0000 0010 MOV B, #0AH ;0000 1010 MUL AB ;0000 0010(2)*0000 1010(10)=0000 0000(b,0) 0001 0100(a,20) MOV RESULT, A ;轉換高位 MOV A,R0 ANL A,#0FH ;0000 0011(3) ADD A,RESULT ;0000 0011(3)+0001 0100(20)=0001 0111(23,即1 7) MOV RESULT,A ; 轉換低位 SJMP $ EN

12、D代碼思路:先將高四位取出,將高四位與10相乘,保存起來,然后取出低四位,將兩者相加,即可得到對應的十六進制數(shù)。實驗現(xiàn)象:內(nèi)部RAM處值為17,轉換成功,結果如下圖顯示:圖九:程序運行之后,30H處的值為17 以下程序?qū)巫止?jié)十六進制數(shù)A的值轉換為十進制數(shù),并將結果的百位、十位、個位依次存放在30H32H中,完成空白處程序填寫,并在WAVE環(huán)境運行程序,觀察寄存器及內(nèi)存單元的變化。代碼:RESULT EQU 30H ORG 0000H MOV A, #7BH ;即123 MOV B, #100 DIV AB MOV RESULT, A ;除以100得百位數(shù) MOV A, B MOV B, #1

13、0 DIV AB MOV RESULT+1, A ;除以10得十位數(shù) MOV RESULT+2, B ;余數(shù)為個位數(shù) SJMP $ END代碼分析:將A除以100,可得百位數(shù),用余數(shù)再除以10,即可得十位數(shù)與個位數(shù),放入對應內(nèi)存單元即可。實驗現(xiàn)象:程序運行之后,30H、31H、32H分別為01、02、03即123,轉換結果正確圖十:程序運行之后,30H、31H、32H分別為01、02、032.設計型實驗內(nèi)容 設一串字母的ASCII存于30H起始的單元中,設計程序判斷字母是否為大寫字母,是則將大寫字母的ASCII字符轉換成小寫字母的ASCII字符,為小寫則不轉換。代碼:首先為了使結果更清晰,先執(zhí)

14、行一段清理程序,使內(nèi)部RAM全部清零 ORG 0000H MOV R0,#00HLOOP: MOV R0,#00H INC R0 SJMP LOOP下面為正式的代碼:ORG 0000H MOV R0,#30H MOV R1,#41H ;大寫字母的起始ASCII碼 MOV R2,#61H ;小寫字母的起始ASCII碼 MOV R3,#06HLOOP1: MOV A,R1 ;將六個大寫字母裝入內(nèi)存 MOV R0,A ; INC R0 ;內(nèi)存位置加一 INC R1 ;寫入值加一 DJNZ R3,LOOP1 ;循環(huán)寫入六個數(shù) MOV R3,#06H ;重置初值LOOP2: MOV A,R2 ;裝入六個

15、小寫字母 MOV R0,A INC R0 INC R2 DJNZ R3,LOOP2 ;初值裝入完畢 MOV R0,#0H ;字符串末尾寫入0(借鑒C的字符串處理標志) MOV R0,#30H ;指向已經(jīng)存入的字母串起始位置 MOV R1,#40HMAIN: MOV A,R0 ;61為小寫字母a的ASCII碼 CLR C ;判斷標志位C清零 SUBB A,#61H ; 若A<61H,則置位C=1否則A>61H,為小寫字母,C=0 JC CHAN ;若為大寫字母,則調(diào)用程序變?yōu)樾?MOV A,R0 MOV R1,A ;否則直接將結果搬入40H INC R0 INC R1 CJNE R

16、0,#0,MAIN ;若不為零則字符串還有內(nèi)容,再次循環(huán) MOV R1,#0H ;末尾寫入0 SJMP EXITCHAN: MOV A,R0 ;大寫字母轉小寫字母 ADD A,#20H ;將轉換后的結果搬入40H MOV R1,A INC R0 INC R1 CJNE R0,#0,MAIN ;若不為零則字符串還有內(nèi)容,再次循環(huán) MOV R1,#0H ;末尾寫入0EXIT: END代碼思路:l 先將六個大寫字母與六個小寫字母的ASCII碼寫入30H開始的連續(xù)單元l 將30H開始的單元中的內(nèi)容依次取出進行判斷,若為大寫字母的ASCII碼,則調(diào)CHAN(change),轉換為小寫字母的ASCII碼,

17、然后寫入對應的40H起始的位置;否則,直接寫回對應的40H起始的位置。l 為了結果更直觀,本代碼首先對所有單元進行了清零,然后在字符串末尾加入了0判斷,同時沒有按照題目將轉換的結果覆蓋原值,而是寫入了下一行對應的內(nèi)存單元中。實驗結果:30H開始的單元中,依次存放AF和af的ASCII碼;在40H開始的單元中,存放著其轉換后的結果,即af和af的ASCII碼。其中,ASCII碼值在左側,對應的字符在右側。圖十一:大寫字母ASCII碼轉換后的結果 將單字節(jié)十六進制數(shù)D8H轉換為十進制數(shù),存放在30H33H中。代碼: RESULT EQU 30H ORG 0000H MOV R0, #0D8H ;即123 MOV A,R0 ANL A,#0F0H ;先轉換高4位 SWAP A ;高低4位交換 MOV B, #10 DIV AB MOV RESULT, A ;除以10得十位數(shù) MOV RESULT+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論