微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)34——51單片機(jī)算術(shù)運(yùn)算、比較和查表_第1頁
微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)34——51單片機(jī)算術(shù)運(yùn)算、比較和查表_第2頁
微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)34——51單片機(jī)算術(shù)運(yùn)算、比較和查表_第3頁
微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)34——51單片機(jī)算術(shù)運(yùn)算、比較和查表_第4頁
微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)34——51單片機(jī)算術(shù)運(yùn)算、比較和查表_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、本科實(shí)驗(yàn)報(bào)告課程名稱:微機(jī)原理與接口技術(shù)姓 名:陳肖葦學(xué) 院:信息與電子工程學(xué)院專 業(yè):電子科學(xué)與技術(shù)學(xué) 號(hào):3140104580指導(dǎo)教師:黃凱2016年 11 月 17 日專業(yè):_電子科學(xué)與技術(shù)_姓名: 陳肖葦 學(xué)號(hào): 3140104580 日期: 2016.11.17 地點(diǎn):教十一400室 實(shí)驗(yàn)報(bào)告課程名稱: 微機(jī)原理與接口技術(shù) 指導(dǎo)老師: 黃凱 成績(jī):_實(shí)驗(yàn)名稱: 單片機(jī)軟件實(shí)驗(yàn)三四 實(shí)驗(yàn)三 算術(shù)運(yùn)算1. 基礎(chǔ)型實(shí)驗(yàn)內(nèi)容 以下程序完成單字節(jié)的BCD碼加法功能,完成空白處程序填寫,并在WAVE環(huán)境運(yùn)行程序,觀察寄存器及內(nèi)存單元的變化。代碼: RESULT EQU 30H ORG 0000H

2、 MOV A,#99H MOV B,#99H ADD A,B DA A ; BCD碼相加并得到BCD碼結(jié)果,即對(duì)結(jié)果進(jìn)行十進(jìn)制處理 MOV RESULT, A MOV A,#00H ADDC A,#00H ;加上進(jìn)位 MOV RESULT+1, A ;高位處理 LJMP $ END實(shí)驗(yàn)現(xiàn)象:30H開始的內(nèi)部單元中被放入了結(jié)果,低位在前,即98 01。圖一:?jiǎn)巫止?jié)的BCD碼加法結(jié)果,即99+99=01 98 下列程序完成多字節(jié)BCD碼加法運(yùn)算。內(nèi)部RAM30H開始的4字節(jié)長(zhǎng)的BCD碼和外部RAM 1000H開始的4字節(jié)長(zhǎng)的BCD碼相加,結(jié)果放在1100H開始的單元中(從低字節(jié)到高字節(jié))。代碼:

3、ORG 0000H CLR C MOV R5, #04H MOV R0,#30H MOV R1,#10H MOV R2,#00H MOV R3,#11H MOV R4,#00HL0: MOV DPH,R1 MOV DPL,R2 MOV A,#15H ;1000H開始的外部RAM都寫入15H MOVX DPTR,A MOV R0,#15H ;30H開始的內(nèi)部RAM都寫入15H INC R2 INC R0 DJNZ R5,L0 MOV R0,#30H ;重新初始化 MOV R2,#00H MOV R5, #04HL1: MOV DPH,R1 MOV DPL,R2 MOVX A,DPTR ADDC

4、A, R0 DA A ;十進(jìn)制調(diào)整 MOV DPH,R3 MOV DPL,R4 MOVX DPTR,A INC R2 INC R4 INC R0L2: DJNZ R5, L1 JNC L3 MOV DPTR,#1104H ;有進(jìn)位則結(jié)果的第五個(gè)字節(jié)置1 MOV A,#01H MOVX DPTR,A SJMP EXITL3: MOV DPTR,#1104H ;若沒有進(jìn)位則置為00H MOV A,#00H MOVX DPTR,AEXIT:END 代碼分析:L0部份為我自己?jiǎn)为?dú)加入的部份,原來的代碼會(huì)使FFH+00H=66H的錯(cuò)誤,因?yàn)镈A指令只可對(duì)BCD碼表示的數(shù)進(jìn)行調(diào)整,即只能調(diào)整09,而F為1

5、6,不是十進(jìn)制數(shù),所以會(huì)產(chǎn)生調(diào)整錯(cuò)誤。加入L0段,使加法變?yōu)?5H+15H=30H(BCD碼加法)。同時(shí),源代碼在產(chǎn)生進(jìn)位的時(shí)候會(huì)將第1104H位置1,沒有進(jìn)位的時(shí)候?yàn)镕FH,所以又將L3的NOP改為了若沒有進(jìn)位,則置為00H,使結(jié)果更加合理。實(shí)驗(yàn)現(xiàn)象:外部RAM的1100H開始的連續(xù)五個(gè)單元變?yōu)?0 30 30 30 0圖二:完成多字節(jié)BCD碼加法運(yùn)算之后,1100H單元開始的內(nèi)存單元變?yōu)?0 30 30 30 00 2. 設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容 設(shè)計(jì)程序,實(shí)現(xiàn)任意字節(jié)壓縮BCD碼的相加,使用單步、斷點(diǎn)方式調(diào)試程序,查看結(jié)果。代碼: MOV R0,#30H ;BCD碼的起點(diǎn) MOV R2,#00H

6、;寫入值 MOV R1,#40H ;BCD碼的起點(diǎn) MOV R3,#10H MOV R4,#0AH ;寫入次數(shù)控制L1: MOV A,R2 ;30H開始的內(nèi)部RAM寫入00H09H MOV R0,A MOV A,R3 ;40H開始的內(nèi)部RAM寫入10H19H MOV R1,A INC R0 INC R1 INC R2 INC R3 DJNZ R4,L1 MOV R0,#30H ;重新初始化 MOV R1,#40H MOV DPH,#10H ;求和后的結(jié)果保存點(diǎn)1000H MOV DPL,#00H MOV R4,#0AH ;求和次數(shù)控制 CLR CL2: MOV A,R0;開始求和 ADDC A

7、, R1 DA A ;十進(jìn)制調(diào)整 MOVX DPTR,A INC R0 INC R1 INC DPL DJNZ R4,L2 ;循環(huán)求和十次 JNC L3 ;無進(jìn)位則求和結(jié)果最后一位的下一個(gè)字節(jié)置0 MOV A,#01H ;有進(jìn)位則求和結(jié)果最后一位的下一個(gè)字節(jié)置1 MOVX DPTR,A SJMP EXITL3: MOV A,#00H MOVX DPTR,AEXIT: END實(shí)驗(yàn)現(xiàn)象: 外部RAM中存入了求和結(jié)果10 12 14 16 18 20 22 24 26 28 00(低位在前)圖三:初始化后內(nèi)存中的BCD碼值(低位在前)圖四:求和后的結(jié)果 設(shè)計(jì)程序,實(shí)現(xiàn)多字節(jié)十六進(jìn)制數(shù)的減法12345

8、6H005634H,使用單步、斷點(diǎn)方式調(diào)試程序,查看結(jié)果。代碼: ORG 0000H MIN EQU 30H;被減數(shù) SUB EQU 40H;減數(shù) RES EQU 50H;結(jié)果存放 MOV MIN,#12H;初始化被減數(shù) MOV MIN+1,#34H MOV MIN+2,#56H MOV SUB,#00H;初始化減數(shù) MOV SUB+1,#56H MOV SUB+2,#34H CLR C MOV A,MIN+2;從最后一位開始求差 SUBB A,SUB+2 MOV RES+2,A MOV A,MIN+1;開始求差 SUBB A,SUB+1 MOV RES+1,A MOV A,MIN;開始求差

9、SUBB A,SUB MOV RES,A END實(shí)驗(yàn)結(jié)果:30H和40H開始的單元處被存入被減數(shù)和減數(shù)123456和005634(高位在前),50H開始存入十六進(jìn)制減法結(jié)果11DE22。圖五:123456(30H)-005634(40H)=11DE22(50H)實(shí)驗(yàn)四 比較和查表1. 基礎(chǔ)型實(shí)驗(yàn)內(nèi)容 以下程序完成共陰數(shù)碼管數(shù)值顯示譯碼的功能,在WAVE環(huán)境運(yùn)行程序,觀察寄存器及內(nèi)存單 元的變化,將變化結(jié)果注釋于右側(cè)。代碼:ORG 0000H MOV R2,#10H ;循環(huán)16次 MOV DPTR,#TBL ;將表頭地址存入DPTRL0: MOV A,#00H MOVC A,A+DPTR ;變址

10、尋址查表 INC DPTR ;DPTR自增,查找下一個(gè) DJNZ R2,L0 ;循環(huán)16次 SJMP $TBL:DB 3FH,06H,5BH,4FH,66H,6DH ;表格 DB 7DH,07H,7FH,6FH,77H,7CH DB 58H,5EH,79H,71H,00H,40H END實(shí)驗(yàn)結(jié)果:ROM區(qū)從0013H開始存入表格3FH40H。對(duì)于內(nèi)部寄存器,R2循環(huán)10H之后,最終值為0;A中最終值為71H,即TBL中的第16個(gè)數(shù)。圖六:ROM區(qū)從0013H開始存入表格3FH40H圖七:對(duì)于REG,R2循環(huán)10H之后,最終值為0;A中最終值為71H,即TBL中的第16個(gè)數(shù)。 以下子程序完成一個(gè)

11、兩位十六進(jìn)制數(shù)到ASCII碼的轉(zhuǎn)換,數(shù)值存放在R2中,轉(zhuǎn)換結(jié)果地位存于R2,高位存于R3。用PC做基址實(shí)現(xiàn)。代碼: ORG 0000H HEXA:MOV R2,#1BH ;將1BH存入R2 MOV A,R2 ANL A,#0FH ;取A的低4位 ADD A,#09H ;以PC為基址的偏移量 MOVC A,A+PC ;以PC為基址尋址 XCH A,R2 ;交換A與R2中的內(nèi)容 ANL A,#0F0H ;得到A的高位 SWAP A ;將高位換到地位 ADD A,#02H ;以PC為基址的指令偏移量 MOVC A,A+PC MOV R3,A ;高位結(jié)果寫回R3 RETTAB: DB 0,1,2,3,

12、4 DB 5,6,7,8,9 DB A,B,C,D,E,F END實(shí)驗(yàn)現(xiàn)象: 轉(zhuǎn)換后的結(jié)果存入R2、R3,其中,R2中存入低位B的ASCII碼,即42;R3中存入高位1的ASCII碼,即31圖九:R2中存入低位B的ASCII碼,即42;R3中存入高位1的ASCII碼,即31圖十:ROM中從0012H開始存入0F的ASCII碼3145 以下程序完成256字節(jié)范圍內(nèi)程序散轉(zhuǎn)的功能,根據(jù)R7的內(nèi)容轉(zhuǎn)向各個(gè)子程序,在WAVE環(huán)境運(yùn)行程序,觀察寄存器及內(nèi)存單元的變化,將變化結(jié)果注釋于右側(cè)。代碼: ORG 0000HSTART: MOV DPTR,#TAB ;將表頭地址傳給DPTR MOV A, R7 A

13、DD A, R7 ;R7*2為了與JMP A+DPTR的機(jī)器碼匹配,若TAB JMP A+DPTR ;中的AJMP 換成LJMP則R7*3 ORG 0100HTAB: AJMP PROG0 ;無條件跳轉(zhuǎn)到對(duì)應(yīng)地址 AJMP PROG1 AJMP PROG2 AJMP PROG3 SJMP $PROG0: MOV A,#00H ;對(duì)應(yīng)的給A賦值 SJMP REPROG1: MOV A,#01H SJMP REPROG2: MOV A,#02H SJMP REPROG3: MOV A,#03HRE: NOPEND代碼解讀:先將R7中的值賦給A,再將A中數(shù)據(jù)擴(kuò)大兩倍當(dāng)作指令的偏移量;DPTR作為散轉(zhuǎn)

14、表的起始地址;通過JMP A+DPTR指令,尋找到對(duì)應(yīng)的指令,然后跳轉(zhuǎn)到相應(yīng)指令對(duì)A賦值。整個(gè)代碼的功能是通過散轉(zhuǎn)的方法,將R7中的值寫入A。實(shí)驗(yàn)現(xiàn)象: 代碼執(zhí)行后,R7中值為00,A中數(shù)據(jù)被寫入00;修改代碼,加入一條MOV R7,#01H,則代碼執(zhí)行之后,R7中值為01,A中數(shù)據(jù)被寫入01。圖十: R7中值為00,A中數(shù)據(jù)被寫入00圖十一:R7中值為01,A中數(shù)據(jù)被寫入012.設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容 分別用近程查表指令和遠(yuǎn)程查表指令,查找R3內(nèi)容的平方值。 R3內(nèi)容小于等于0FH,即平方值為單字節(jié)數(shù)據(jù)。代碼:近程查表: ORG 0000H MOV R3,#15 ;取數(shù) MOV A,R3 ADD A

15、,#04H ;偏移量 MOVC A,A+PC ;近程查表 MOV 30H,A SJMP $TAB:DB 0,1,4,9,16 ;平方值表格構(gòu)建 DB 25,36,49,64,81 DB 100,121,144,169,196,225END實(shí)驗(yàn)結(jié)果:內(nèi)部RAM的30H處寫入E1(即14*16+1=225,即15的平方),完成設(shè)計(jì)目標(biāo)。圖十一:代碼執(zhí)行后,內(nèi)部RAM的30H處寫入E1遠(yuǎn)程查表: ORG 0000H MOV R3,#10 ;取出R3中的值 MOV A,R3 MOV DPTR,#TAB ;將表頭地址寫入DPTR MOVC A,A+DPTR ;遠(yuǎn)程查表 MOV 30H,A SJMP $T

16、AB:DB 0,1,4,9,16 ;平方值表格構(gòu)建 DB 25,36,49,64,81 DB 100,121,144,169,196,225 END實(shí)驗(yàn)現(xiàn)象:內(nèi)部RAM的30H處寫入64(即6*16+4=100,即10的平方),完成設(shè)計(jì)目標(biāo)。圖十二:代碼執(zhí)行后,內(nèi)部RAM的30H處寫入64 在外部RAM 1000H開始處有10H個(gè)帶符號(hào)數(shù),請(qǐng)找出其中的最大值和最小值,分別存入內(nèi)部RAM的MAX、 MIN單元。代碼: MAX EQU 30HMIN EQU 31H ORG 0000H MOV R7,#0FH ;循環(huán)次數(shù) MOV DPTR,#1000H ;將外部RAM起始地址存入DPTR MOVX

17、A,DPTR ;將對(duì)應(yīng)數(shù)據(jù)存入A ADD A,#80H ;加80H便于直接比較,將有符號(hào)數(shù)化為無符號(hào)數(shù) MOV MAX,A ;初始化MAX(即存入第一個(gè)數(shù)) MOV MIN,A ;初始化MIN(即存入第一個(gè)數(shù))L1: INC DPTR ;讀入下一個(gè)數(shù) MOVX A,DPTR ADD A,#80H CLR C CJNE A,MAX,S1 ;相減比較,若不想相等則跳轉(zhuǎn)至S1 ,且若AMAX,則將C置1 SJMP NEXT ;相等則跳到NEXTS1: JC S2 ;若C=1,則說明AMAX,則跳轉(zhuǎn)至S2 MOV MAX,A ;將MAX值更新 SJMP NEXTS2: CJNE A,MIN,S3 ;相

18、減比較,若不想相等則跳轉(zhuǎn)至S2 ,且若AMIN,則轉(zhuǎn)入NEXT MOV MIN,A ;否則,將MIN更新NEXT:DJNZ R7,L1 ;判斷循環(huán)次數(shù),若沒到0FH次,則繼續(xù)循環(huán) MOV A,MAX SUBB A,#80H MOV MAX,A ;得到最大值 MOV A,MIN SUBB A,#80H MOV MIN,A ;得到最小值 SJMP $ END實(shí)驗(yàn)結(jié)果:內(nèi)部RAM30H處,即MAX處,寫入最大值7A; 31H處,即MIN處,寫入最小值00;同時(shí),因?yàn)槭怯蟹?hào)數(shù),所以對(duì)含有負(fù)數(shù)的進(jìn)行檢測(cè),也符合要求,完成設(shè)計(jì)目標(biāo)。 圖十三:手動(dòng)修改后的外部RAM值,其中最大值為7A,最小值為00圖十四:內(nèi)部

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論