微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)_第1頁
微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)_第2頁
微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)_第3頁
微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)_第4頁
微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

5、能?將程序中MOV A,R0改成MOVX A,R0,將MOV R1,A改成MOVX R1,A,運(yùn)行如下程序,觀察寄存器及內(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個(gè)字節(jié)存儲塊搬運(yùn)到內(nèi)部RAM的50H起始的2

6、0H個(gè)字節(jié)存儲塊。實(shí)驗(yàn)現(xiàn)象:從3000H和4000H起始的256個(gè)字節(jié)存儲塊全部賦值為01,實(shí)驗(yàn)結(jié)果如下圖:圖四:程序執(zhí)行結(jié)束后,內(nèi)部RAM的值從30H起始的20H個(gè)字節(jié)存儲塊與從30H起始的50H個(gè)字節(jié)存儲塊全部賦值為01圖五:程序執(zhí)行結(jié)束后內(nèi)部寄存器的值2. 設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容 在WAVE環(huán)境修改內(nèi)部RAM 30H 3FH的內(nèi)容分別為#00H-#0FH,設(shè)計(jì)程序?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實(shí)驗(yàn)現(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,設(shè)計(jì)程序?qū)崿F(xiàn)將片內(nèi)30H3FH單元的內(nèi)容復(fù)制到片外1030H103FH中。代碼: ORG 0000H MOV R0,#30H ;內(nèi)部RAM的30H起始位置 MOV DPH,#10H ;設(shè)置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實(shí)驗(yàn)結(jié)果:內(nèi)部RAM的30H3FH,以及外部RAM的1030H103FH,被依次寫入00H0FH。圖七:程序執(zhí)行之后,00H0FH被寫入外部RAM的1030H103FH實(shí)驗(yàn)二 數(shù)制及代碼轉(zhuǎn)換1. 基礎(chǔ)型實(shí)驗(yàn)內(nèi)容以下程序完成單字節(jié)的ASCII碼到十六進(jìn)制數(shù)轉(zhuǎn)換,完成空白處程序填寫,并在WAVE環(huán)境運(yùn)行程序,觀察寄存器及內(nèi)存單元的變化代碼:RESULT EQU 30H ORG 0000H MOV A,#41H ;“A”的ASCII碼 CLR C SUBB A,#37H ; 轉(zhuǎn)換為十六進(jìn)制值A(chǔ) MOV RESULT, A LJMP $ END代碼解讀:因?yàn)锳F的ASCII碼

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

11、A,#0F0H ;與1111 0000進(jìn)行邏輯與操作,結(jié)果為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 ;轉(zhuǎn)換高位 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 ; 轉(zhuǎn)換低位 SJMP $ EN

12、D代碼思路:先將高四位取出,將高四位與10相乘,保存起來,然后取出低四位,將兩者相加,即可得到對應(yīng)的十六進(jìn)制數(shù)。實(shí)驗(yàn)現(xiàn)象:內(nèi)部RAM處值為17,轉(zhuǎn)換成功,結(jié)果如下圖顯示:圖九:程序運(yùn)行之后,30H處的值為17 以下程序?qū)巫止?jié)十六進(jìn)制數(shù)A的值轉(zhuǎn)換為十進(jìn)制數(shù),并將結(jié)果的百位、十位、個(gè)位依次存放在30H32H中,完成空白處程序填寫,并在WAVE環(huán)境運(yù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ù)為個(gè)位數(shù) SJMP $ END代碼分析:將A除以100,可得百位數(shù),用余數(shù)再除以10,即可得十位數(shù)與個(gè)位數(shù),放入對應(yīng)內(nèi)存單元即可。實(shí)驗(yàn)現(xiàn)象:程序運(yùn)行之后,30H、31H、32H分別為01、02、03即123,轉(zhuǎn)換結(jié)果正確圖十:程序運(yùn)行之后,30H、31H、32H分別為01、02、032.設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容 設(shè)一串字母的ASCII存于30H起始的單元中,設(shè)計(jì)程序判斷字母是否為大寫字母,是則將大寫字母的ASCII字符轉(zhuǎn)換成小寫字母的ASCII字符,為小寫則不轉(zhuǎn)換。代碼:首先為了使結(jié)果更清晰,先執(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 ;將六個(gè)大寫字母裝入內(nèi)存 MOV R0,A ; INC R0 ;內(nèi)存位置加一 INC R1 ;寫入值加一 DJNZ R3,LOOP1 ;循環(huán)寫入六個(gè)數(shù) MOV R3,#06H ;重置初值LOOP2: MOV A,R2 ;裝入六個(gè)

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

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

17、然后寫入對應(yīng)的40H起始的位置;否則,直接寫回對應(yīng)的40H起始的位置。l 為了結(jié)果更直觀,本代碼首先對所有單元進(jìn)行了清零,然后在字符串末尾加入了0判斷,同時(shí)沒有按照題目將轉(zhuǎn)換的結(jié)果覆蓋原值,而是寫入了下一行對應(yīng)的內(nèi)存單元中。實(shí)驗(yàn)結(jié)果:30H開始的單元中,依次存放AF和af的ASCII碼;在40H開始的單元中,存放著其轉(zhuǎn)換后的結(jié)果,即af和af的ASCII碼。其中,ASCII碼值在左側(cè),對應(yīng)的字符在右側(cè)。圖十一:大寫字母ASCII碼轉(zhuǎn)換后的結(jié)果 將單字節(jié)十六進(jìn)制數(shù)D8H轉(zhuǎn)換為十進(jìn)制數(shù),存放在30H33H中。代碼: RESULT EQU 30H ORG 0000H MOV R0, #0D8H ;即123 MOV A,R0 ANL A,#0F0H ;先轉(zhuǎn)換高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)系上傳者。文件的所有權(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論