嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)一系統(tǒng)認(rèn)識(shí)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí) dais 軟件的操作,熟悉程序編寫的操作步驟及調(diào)試方法。二、實(shí)驗(yàn)設(shè)備pc 計(jì)算機(jī)一臺(tái),dais-52pro+ 或 dais-pro163c 實(shí)驗(yàn)系統(tǒng)一套。三、實(shí)驗(yàn)內(nèi)容編寫程序,將80h8fh 共 16 個(gè)數(shù)寫入單片機(jī)內(nèi)部ram 的 30h3fh 空間。四、實(shí)驗(yàn)步驟1.運(yùn)行 dais 軟件,進(jìn)入集成開發(fā)環(huán)境,軟件彈出設(shè)置通信端口對(duì)話框(如圖 2-1-1) ,請(qǐng)確保實(shí)驗(yàn)裝置與pc 正確連接,并已打開實(shí)驗(yàn)裝置電源,使其進(jìn)入在待命狀態(tài)。這里選擇與實(shí)驗(yàn)裝置實(shí)際相連的通信端口,并單擊“確定”。 如通信正確則進(jìn)入dais軟件主界面,否則彈出“通信出錯(cuò)”的信息框(如圖2-1

2、-2) ,請(qǐng)檢查后重試。圖 2-1-1設(shè)置通信端口對(duì)話框圖 2-1-2通信錯(cuò)誤信息框2.通信成功后,單擊菜單欄“設(shè)置”“仿真模式”項(xiàng)打開對(duì)話框,選擇需要設(shè)置型號(hào)、程序數(shù)據(jù)空間。這里我們將型號(hào)設(shè)置為“mcs-51 實(shí)驗(yàn)系統(tǒng)”,外部數(shù)據(jù)區(qū)設(shè)置為“系統(tǒng)ram ” ,用戶程序區(qū)設(shè)置為“片外(ea=0 ) ” ,如圖2-1-3 所示,最后單擊“確定”按鈕保存設(shè)置。圖 2-1-3設(shè)置工作方式對(duì)話框3.工作方式設(shè)置完畢后,單擊菜單欄“文件”“新建”項(xiàng)或按ctrl+n 組合鍵(建議單擊工具欄“”按鈕)來(lái)新建一個(gè)文件,軟件會(huì)出現(xiàn)一個(gè)空白的文件編輯窗口。4.在新窗口中輸入程序代碼(a512_1.asm ) :or

3、g 0000h ljmp main org 0100h main: mov r1,#30h ; 片內(nèi) ram首地址mov a,#80h ; 寫入數(shù)據(jù)初值mov r7,#16 ; 循環(huán)變量loop1: mov r1,a ; 寫數(shù)據(jù)到片內(nèi)ram inc r1 ; 地址增量inc a ; 數(shù)據(jù) +1 djnz r7,loop1 ; 循環(huán)變量 -1,不為 0 繼續(xù)sjmp $ ; 結(jié)束end5.單擊菜單欄“文件”“保存”項(xiàng)(建議單擊工具欄“”按鈕)保存文件。若是新建的文件尚未命名,系統(tǒng)會(huì)彈出文件保存對(duì)話框(如圖 2-1-4) ,提示用戶選擇文件保存的路徑和文件名,再單擊“保存”按鈕。圖 2-1-4文件

4、保存對(duì)話框6.單擊菜單欄“編譯”“文件編譯、鏈接、裝載”項(xiàng)或按ctrl+f9 組合鍵(建議單擊工具欄“”按鈕),對(duì)當(dāng)前文件進(jìn)行編譯和鏈接,若程序無(wú)語(yǔ)法錯(cuò)誤,則開始自動(dòng)裝載,裝載完畢提示如圖2-1-5 所示的信息框。圖 2-1-5編譯信息框7.當(dāng)編譯無(wú)誤且下載成功后,即進(jìn)入調(diào)試狀態(tài),當(dāng)前pc 行高亮突出顯示,源程序窗口左側(cè)顯示小圓點(diǎn)以標(biāo)識(shí)可執(zhí)行語(yǔ)句行,如圖2-1-6 所示。圖 2-1-6進(jìn)入調(diào)試狀態(tài)的主界面8.單擊菜單欄“視圖”“存儲(chǔ)空間”“cpu 內(nèi)部存儲(chǔ)區(qū)”項(xiàng)打開內(nèi)存窗口,如圖 2-1-7。文件存放的路徑注意:由于編譯器對(duì)路徑和文件名的要求,請(qǐng)確保路徑和文件名均不含中文和空格,不要將文件存放

5、在“桌面”、 “我的文檔”等路徑,并遵循“8.3”命令規(guī)則,即前綴長(zhǎng)度不超過(guò)8 字符、后綴長(zhǎng)度不超過(guò)3字符。輸入新文件名圖 2-1-7初始時(shí)的 cpu 內(nèi)部存儲(chǔ)區(qū)數(shù)據(jù)顯示9.單擊菜單欄“調(diào)試”“單步運(yùn)行”項(xiàng)或按f7 快捷鍵(建議單擊工具欄“”按鈕) ,單步運(yùn)行程序,觀察寄存器和內(nèi)存單元的數(shù)據(jù)變化;10.也可單擊菜單欄 “調(diào)試” “連續(xù)運(yùn)行” 項(xiàng)或按 f9 快捷鍵(建議單擊工具欄“”按鈕) ,開始全速運(yùn)行。11.在全速運(yùn)行后, 須暫停運(yùn)行以便在待命狀態(tài)查看運(yùn)行結(jié)果,暫??蓡螕舨藛螜凇罢{(diào)試”“暫?!表?xiàng)或按esc 快捷鍵(建議單擊工具欄“”按鈕)。12.再觀察 cpu 內(nèi)部存儲(chǔ)區(qū)單元,驗(yàn)證程序運(yùn)行結(jié)

6、果(如圖2-1-8 所示) 。圖 2-1-8程序運(yùn)行后的cpu 內(nèi)部存儲(chǔ)區(qū)數(shù)據(jù)顯示13.除了用程序修改內(nèi)存單元,可以在dais 軟件直接修改。用鼠標(biāo)單擊某個(gè)內(nèi)存單元后,按鍵盤的09 或 af ,直接寫入數(shù)據(jù)以覆蓋該內(nèi)存單元原有數(shù)據(jù)。如圖2-1-9所示。圖 2-1-9修改后的內(nèi)存單元數(shù)據(jù)顯示14.除了單步或全速運(yùn)行,還可以使用斷點(diǎn)手段來(lái)調(diào)試程序。單擊菜單欄 “調(diào)試” “復(fù)位”項(xiàng)或按ctrl+f2 組合鍵(建議單擊工具欄“”按鈕)進(jìn)行復(fù)位,以便重新運(yùn)行程序。15.單擊源程序編輯窗口左側(cè)的行號(hào)即可快速設(shè)置斷點(diǎn),斷點(diǎn)行為紅色高亮顯示(如圖2-1-10) ,若要?jiǎng)h除該斷點(diǎn)只需再次單擊斷點(diǎn)行的行號(hào)即可清除

7、斷點(diǎn)。圖 2-1-10設(shè)置斷點(diǎn)后的源程序窗口16.設(shè)置斷點(diǎn)后,單擊菜單欄“調(diào)試”“連續(xù)運(yùn)行”項(xiàng)或按f9 快捷鍵(建議單擊工具欄“”按鈕),使用全速運(yùn)行方式,待程序運(yùn)行到斷點(diǎn)行時(shí)自動(dòng)停下(如圖2-1-11) 。圖 2-1-11全速運(yùn)行后遇斷點(diǎn)暫停的源程序窗口五、操作練習(xí)修改程序,將cpu 內(nèi)部存儲(chǔ)區(qū)30h3fh 單元的 16 個(gè)數(shù)據(jù)復(fù)制到40h4f 單元,通過(guò)單步、斷點(diǎn)等調(diào)試手段驗(yàn)證程序功能,查看40h4fh 單元的數(shù)據(jù)是否傳送正確。org 0000h ljmp main org 0100h main: mov r1,#30h mov r0,#40h ;片內(nèi) ram 首地址mov a,#80h

8、;寫入數(shù)據(jù)初值mov r7,#16 ;循環(huán)變量loop1: mov a,r1 mov r0,a inc r1 inc r0 ;地址增量djnz r7,loop1 ;循環(huán)變量 -1,不為 0 繼續(xù)sjmp $ ;結(jié)束end 六、實(shí)驗(yàn)心得通過(guò)第一次的上機(jī)實(shí)驗(yàn),我初步接觸到了dais 軟件,并對(duì)其有了一定的熟悉,能順利完成程序的單步運(yùn)行,連續(xù)運(yùn)行,設(shè)置斷點(diǎn),查看存儲(chǔ)器等操作,并掌握了該軟件程序編寫的操作步驟及調(diào)試方法,這對(duì)我接下來(lái)的實(shí)驗(yàn)很有幫助。實(shí)驗(yàn)二數(shù)碼轉(zhuǎn)換實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康恼莆詹煌M(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計(jì)方法,加深對(duì)數(shù)制轉(zhuǎn)換的理解。二、實(shí)驗(yàn)設(shè)備pc 計(jì)算機(jī)一臺(tái),dais-52pro+ 或 d

9、ais-pro163c 實(shí)驗(yàn)系統(tǒng)一套。三、實(shí)驗(yàn)內(nèi)容及步驟1.bcd 整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)將 bcd 碼整數(shù)0255 存入片內(nèi)ram的 20h、21h、22h 中,然后轉(zhuǎn)換為二進(jìn)制整數(shù)00hffh,保存到寄存器r4 中。參考程序( a512_2_1.asm ) :org 0000h ljmp main org 0100h main: mov r0,#20h ;bcd 存放高位地址mov r7,#3 ;bcd 碼 0255,最多 3 位clr a mov r4,a lp1: mov a,r4 mov b,#10 mul ab ; 乘 10 add a,r0 ; 加下一位的值inc r0 ; 指向下

10、一單元mov r4,a ;結(jié)果存入 r4 djnz r7,lp1 ; 轉(zhuǎn)換未結(jié)束則繼續(xù)sjmp main ; 設(shè)置斷點(diǎn) , 觀察實(shí)驗(yàn)結(jié)果r4 中的內(nèi)容end 實(shí)驗(yàn)步驟:1)編寫程序,經(jīng)編譯、鏈接無(wú)誤后裝載到實(shí)驗(yàn)系統(tǒng);2)修改 cpu 內(nèi)部存儲(chǔ)器20h、21h、22h 單元的內(nèi)容,如:00h,05h,08h;3)在 sjmpmain語(yǔ)句行設(shè)置斷點(diǎn),然后運(yùn)行程序;4)程序遇到斷點(diǎn)后暫停,此時(shí)查看寄存器r4 的內(nèi)容,應(yīng)為3ah;5)重新修改20h、 21h、22h 單元的內(nèi)容,再次運(yùn)行程序,驗(yàn)證程序的正確性。2.二進(jìn)制整數(shù)轉(zhuǎn)換為十進(jìn)制整數(shù)將 16 位二進(jìn)制整數(shù)存入r3、r4 寄存器中,轉(zhuǎn)換為十進(jìn)制整

11、數(shù),以組合 bcd 形式存儲(chǔ)在 cpu 內(nèi)部 ram 的 20h、21h、22h 單元中。參考程序( a512_2_2.asm ) :org 0000h ljmp main org 0100h main: mov r0,#22h ; 轉(zhuǎn)換結(jié)果低位地址mov a,r0 push acc ;a 累加器壓棧mov r7,#3 clr a lp1: mov r0,a ; 結(jié)果存儲(chǔ)地址清零dec r0 djnz r7,lp1 pop acc mov r0,a mov r7,#16 lp2: push acc clr c mov a,r4 ;r4 中為二進(jìn)制數(shù)的低位rlc a mov r4,a mov a

12、,r3 ;r3 中為二進(jìn)制數(shù)的高位rlc a mov r3,a mov b,#3 lp3: mov a,r0 addc a,r0 ; 執(zhí)行乘 2 操作da a ; 十進(jìn)制調(diào)整mov r0,a ; 結(jié)果保存dec r0 djnz b,lp3 pop acc ;a 累加器出棧mov r0,a djnz r7,lp2 sjmp main ; 設(shè)置斷點(diǎn)觀察結(jié)果, 可進(jìn)行下一次轉(zhuǎn)換end實(shí)驗(yàn)步驟:1)編寫程序,程序流程圖如圖2-2-1 所示,經(jīng)編譯、鏈接無(wú)誤后裝載到實(shí)驗(yàn)系統(tǒng);2)修改 r3、r4 寄存器,例如分別為a2h、fch;3)在 sjmpmain語(yǔ)句行設(shè)置斷點(diǎn),然后運(yùn)行程序;4)程序遇到斷點(diǎn)后暫

13、停,此時(shí)查看cpu 內(nèi)部存儲(chǔ)器20h 的內(nèi)容,應(yīng)為:04h、17h、24h;5)反復(fù)修改 r3、r4 寄存器的值,驗(yàn)證程序的正確性。開始r0轉(zhuǎn)換結(jié)果起始地址結(jié)果存儲(chǔ)單元清零循環(huán)計(jì)數(shù)器 r716r3 r4左移 1位b3a (r0) 2c十進(jìn)制調(diào)整r0r 01r0r 01b10?r0轉(zhuǎn)換結(jié)果起始地址r710?結(jié)束是是否否圖2-2-1 程序流程圖四、實(shí)驗(yàn)心得在這次實(shí)驗(yàn)中,我通過(guò)運(yùn)行既定程序后對(duì)程序經(jīng)行了分析,掌握了將bcd 整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)和二進(jìn)制整數(shù)轉(zhuǎn)換為十進(jìn)制整數(shù)的程序設(shè)計(jì)方法,對(duì)數(shù)制的轉(zhuǎn)換有了一個(gè)更深刻的認(rèn)識(shí),并自己編程實(shí)現(xiàn)了二進(jìn)制數(shù)和bcd 整數(shù)的轉(zhuǎn)換,受益匪淺。實(shí)驗(yàn)三運(yùn)算程序設(shè)計(jì)實(shí)驗(yàn)一

14、、實(shí)驗(yàn)?zāi)康牧私膺\(yùn)算類指令以及運(yùn)算類程序的設(shè)計(jì)方法。二、實(shí)驗(yàn)設(shè)備pc 計(jì)算機(jī)一臺(tái),dais-52pro+ 或 dais-pro163c 實(shí)驗(yàn)系統(tǒng)一套。三、實(shí)驗(yàn)內(nèi)容及步驟1.多字節(jié)加法程序多字節(jié)十進(jìn)制加法程序,被加數(shù)存放于20h 起始的 ram 空間, 加數(shù)存放于28h 起始的ram 空間,將兩數(shù)相加,結(jié)果存放于20h 起始的 ram 空間。參考程序( a512_3_1.asm ) :org 0000h ljmp main org 0100h ; 執(zhí)行程序前先修改r7 的值main: mov r0,#20h ; 被加數(shù)起始地址mov r1,#28h ; 加數(shù)起始地址clr c lp1: mov a

15、,r0 addc a,r1 ; 帶進(jìn)位加法運(yùn)算da a ; 十進(jìn)制調(diào)整mov r0,a ; 保存運(yùn)算結(jié)果inc r0 ; 指向下一單元inc r1 djnz r7,lp1 clr a mov acc.0,c mov r0,a ; 最高位有進(jìn)位時(shí)此地址中為1 nop ; 設(shè)置斷點(diǎn)查看運(yùn)算結(jié)果sjmp main ; 若需繼續(xù)運(yùn)算 , 改變加數(shù) , 被加數(shù)及 r7 end 實(shí)驗(yàn)步驟:1)編寫程序,程序流程圖如圖2-3-1 所示,經(jīng)編譯、鏈接無(wú)誤后裝載到實(shí)驗(yàn)系統(tǒng);2)為被加數(shù)及加數(shù)賦值:修改內(nèi)存單元20h 為 1234h、28h 為 1111h,寄存器r7 為02h;3)在 sjmpmain語(yǔ)句行設(shè)置

16、斷點(diǎn),然后運(yùn)行程序;4)程序遇到斷點(diǎn)后暫停,此時(shí)查看內(nèi)存單元20h 起始的內(nèi)容,應(yīng)為:2345h;5)反復(fù)修改被加數(shù)、加數(shù)及字節(jié)數(shù)r7 的值,驗(yàn)證程序的正確性。開始r0被加數(shù)起始地址r1加數(shù)起始地址取出被加數(shù)加上加數(shù)進(jìn)行十進(jìn)制調(diào)整保存結(jié)果r0r0+1r1r1+1運(yùn)算結(jié)束 ?設(shè)置最高位結(jié)束是否圖2-3-1 程序流程圖2.雙字節(jié)無(wú)符號(hào)數(shù)乘法利用單字節(jié)乘法指令來(lái)擴(kuò)展成多字節(jié)乘法運(yùn)算,擴(kuò)展時(shí)以字節(jié)為單位進(jìn)行乘法運(yùn)算。被乘數(shù)在 r2、r3 中,乘數(shù)在r4、r5 中,乘積保存r0 指向的 20h23h 內(nèi)存單元。運(yùn)算法則見(jiàn)圖 2-3-2。r2r3r 5 hr3r5 lr3r4r5r2r5 hr2r 5 l

17、r3r4 hr3r 4 lr2 r 4 hr2r 4 l(r0-3)(r0-2)(r0-1)(r0)圖 2-3-2乘法運(yùn)算法則參考程序( a512_3_2.asm ) :org 0000h ljmp main org 0100h main: mov r0,#23h ; 運(yùn)算結(jié)果低位地址mov a,r0 push acc clr a mov r7,#4 lp1: mov r0,a ; 運(yùn)算結(jié)果存儲(chǔ)單元清零dec r0 djnz r7,lp1 pop acc mov r0,a mov a,r3 mov b,r5 mul ab ; 計(jì)算 r3*r5 mov r0,a ; 計(jì)算的低8 位保存mov a

18、,b dec r0 mov r0,a ; 保存運(yùn)算的高8 位mov a,r2 mov b,r5 mul ab ; 計(jì)算 r2*r5 add a,r0 ; 此次運(yùn)算低8 位+r3*r5 運(yùn)算的高 8 位mov r0,a dec r0 mov a,b addc a,#00h ;r2*r5的高 8 位加進(jìn)位位mov r0,a inc r0 mov a,r3 mov b,r4 mul ab ; 計(jì)算 r3*r4 add a,r0 mov r0,a mov a,b dec r0 addc a,r0 mov r0,a dec r0 clr a addc a,#00h mov a,r0 mov a,r2 m

19、ov b,r4 mul ab ; 計(jì)算 r2*r4 inc r0 add a,r0 mov r0,a mov a,b dec r0 addc a,r0 mov r0,a nop ; 設(shè)置斷點(diǎn)查看運(yùn)算結(jié)果sjmp main ; 如需進(jìn)行下一次運(yùn)算, 可修改 r2 r3,r4 r5的值end 實(shí)驗(yàn)步驟:1)編寫程序,經(jīng)編譯、鏈接無(wú)誤后裝載到實(shí)驗(yàn)系統(tǒng);2)設(shè)置被乘數(shù)r2, r3 為 03h, 50h、乘數(shù) r4, r5 為 04h, 60h;3)在 sjmpmain語(yǔ)句行設(shè)置斷點(diǎn),然后運(yùn)行程序;4)程序遇到斷點(diǎn)后暫停,此時(shí)查看內(nèi)存單元20h 起始的內(nèi)容, 應(yīng)為:00h、0eh、7eh、00h;5)反

20、復(fù)修改被乘數(shù)、乘數(shù)的值,驗(yàn)證程序的正確性。3.雙字節(jié)除法mcs-51 指令系統(tǒng)中僅有單字節(jié)除法指令,若要擴(kuò)展為雙字節(jié)除法,可以采用“移位相減”的算法來(lái)實(shí)現(xiàn)。本例程的被除數(shù)在r7、r6 中,除數(shù)在r5、r4 中,將商存入r7、r6中,余數(shù)存入r3、r2 中。程序流程圖如圖3-3-3 所示。參考程序( a512_3_3.asm ) :org 0000h 除數(shù) =0?部分余數(shù)除數(shù)?余數(shù)寄存器 r3 r20循環(huán)計(jì)數(shù)器 r116開始余數(shù)、被除數(shù)左移1位r3 r2 r7 r6商加 1余數(shù)余數(shù)除數(shù)r1-1=0?置合法標(biāo)志 f0 0結(jié)束置除數(shù)非法標(biāo)志f01是否是否是否圖2-3-3 程序流程圖ljmp main

21、 org 0100h main: mov a,r4 ; 執(zhí)行程序前為r7r6( 被除數(shù) ), ;r5r4(除數(shù) ) 賦值jnz ddiv0 ; 除數(shù)不為 0, 轉(zhuǎn) ddiv0 mov a,r5 jz error ; 除數(shù)為 0, 轉(zhuǎn) error ddiv0: mov r2,#00h ; 余數(shù)寄存器清零mov r3,#00h mov r1,#16 ; 循環(huán)次數(shù)為16 ddiv1: clr c;r3 r2 r7 r6左移 1 位mov a,r6 rlc a mov r6,a mov a,r7 rlc a mov r7,a mov a,r2 rlc a mov r2,a mov a,r3 rlc a

22、 mov r3,a mov a,r2 ; 部分余數(shù)減除數(shù)subb a,r4 ; 低 8 位相減jc ddiv2 ; 不夠減 , 轉(zhuǎn) ddiv2 mov r0,a ; 暫存相減結(jié)果mov a,r3 subb a,r5 ; 高 8 位相減jc ddiv2 ; 不夠減 , 轉(zhuǎn) ddiv2 inc r6 ; 夠減 , 則商為 1 mov r3,a ; 相減結(jié)果送r3 r2 中mov a,r0 mov r2,a ddiv2: djnz r1,ddiv1 ;16位未除完則繼續(xù)clr f0 ; 除數(shù)合法標(biāo)志sjmp main ; 設(shè)置斷點(diǎn)觀察結(jié)果, 可繼續(xù)下一輪運(yùn)算error: setb f0 ; 除數(shù)非法

23、標(biāo)志sjmp main ; 設(shè)置斷點(diǎn)觀察結(jié)果, 可繼續(xù)下一輪運(yùn)算end 實(shí)驗(yàn)步驟:1)編寫程序,程序流程圖如圖2-3-3 所示,經(jīng)編譯、鏈接無(wú)誤后裝載到實(shí)驗(yàn)系統(tǒng);2)設(shè)置被除數(shù)r7, r6 為 46h,eeh、除數(shù) r5, r4 為 23h, 67h;3)在 sjmpmain語(yǔ)句行設(shè)置斷點(diǎn),然后運(yùn)行程序;4)程序遇到斷點(diǎn)后暫停,此時(shí)查看寄存器r7, r6(商)與r3, r2(余數(shù)),應(yīng)分別為00h,02h 與 00h、20h;5)反復(fù)修改被除數(shù)、除數(shù)的值,驗(yàn)證程序的正確性。四、實(shí)驗(yàn)心得在這次實(shí)驗(yàn)中, 我順利運(yùn)行了多字節(jié)的加法、雙字節(jié)無(wú)符號(hào)乘法和雙字節(jié)除法程序并得到了預(yù)期的結(jié)果, 通過(guò)對(duì)程序進(jìn)行

24、分析,我對(duì)多字節(jié)數(shù)的運(yùn)算在單片機(jī)內(nèi)實(shí)現(xiàn)有了一個(gè)更深刻的認(rèn)識(shí),提高了對(duì)程序的分析理解能力。實(shí)驗(yàn)四查表程序設(shè)計(jì)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)查表程序的設(shè)計(jì)方法,熟悉mcs-51 指令系統(tǒng)。二、實(shí)驗(yàn)設(shè)備pc 計(jì)算機(jī)一臺(tái),dais-52pro+ 或 dais-pro163c 實(shí)驗(yàn)系統(tǒng)一套。三、實(shí)驗(yàn)內(nèi)容及步驟1.采用查表的方法將16 進(jìn)制數(shù)轉(zhuǎn)換為ascii 碼根據(jù) ascii 碼表可知, 09 的 ascii 碼為 30h39h,af 的 ascii 碼為 41h46h,算法為(假定待轉(zhuǎn)換的數(shù)存放在r7 中) :當(dāng) r79 時(shí),相應(yīng)的ascii 碼為: r730h;當(dāng) r79 時(shí),相應(yīng)的ascii 碼為: r73

25、0h07h。參考程序( a512_4_1.asm ) :org 0000h ljmp main org 0100h main: mov dptr,#ascii ; 表格首地址送dptr mov a,r7 ;r7中為待轉(zhuǎn)換的數(shù)anl a,#0fh ; 取低 4 位movc a,a+dptr ; 查表mov r5,a ; 低 4 位轉(zhuǎn)換結(jié)果送r1 mov a,r7 anl a,#0f0h ; 取待轉(zhuǎn)換數(shù)的高4 位swap a ; 高 4 位與低 4 位交換movc a,a+dptr ; 查表mov r6,a ; 高 4 位轉(zhuǎn)換結(jié)果送r2 sjmp main ; 設(shè)置斷點(diǎn)觀察結(jié)果ascii: db

26、0123456789abcdef end 實(shí)驗(yàn)步驟:1)編寫程序,經(jīng)編譯、鏈接無(wú)誤后裝載到實(shí)驗(yàn)系統(tǒng);2)設(shè)置待轉(zhuǎn)換數(shù)據(jù)r7 為 8ah;3)在 sjmpmain語(yǔ)句行設(shè)置斷點(diǎn),然后運(yùn)行程序;4)程序遇到斷點(diǎn)后暫停, 此時(shí)查看寄存器r6, r5 的值, r6 中為高 4 位轉(zhuǎn)換結(jié)果38h,r5 中為低 4 位轉(zhuǎn)換結(jié)果41h;5)反復(fù)修改 r7 的值,驗(yàn)證程序的正確性。2.通過(guò)查表實(shí)現(xiàn)y=x2x 為 09 的十進(jìn)制數(shù),存放于寄存器r7,以 bcd 碼的形式保存,結(jié)果y 以 bcd 碼的形式存放于寄存器r6。參考程序( a512_4_2.asm ) :org 0000h ljmp main org

27、0100h main: mov dptr,#sqr ;取表格首地址mov a,r7 ;要計(jì)算的值movc a,a+dptr ; 查表mov r6,a ; 結(jié)果保存sjmp main sqr: db 00h,01h,04h,09h,16h ;平方表db 25h,36h,49h,64h,81h end 實(shí)驗(yàn)步驟:1)編寫程序,經(jīng)編譯、鏈接無(wú)誤后裝載到實(shí)驗(yàn)系統(tǒng);2)設(shè)置 r7 的值,如r7=09h;3)在 sjmpmain語(yǔ)句行設(shè)置斷點(diǎn),然后運(yùn)行程序;4)程序遇到斷點(diǎn)后暫停,此時(shí)查看寄存器r6 的值,應(yīng)為81h;5)反復(fù)修改 r7 的值,驗(yàn)證程序的正確性。四、實(shí)驗(yàn)心得通過(guò)這次實(shí)驗(yàn),我對(duì)查表程序的設(shè)計(jì)

28、方法有了一個(gè)更加深刻的理解:查表程序常用于數(shù)據(jù)的補(bǔ)償、修正、計(jì)算、轉(zhuǎn)換等場(chǎng)合,具有程序簡(jiǎn)單、執(zhí)行速度快等特點(diǎn)。同時(shí),通過(guò)對(duì)查表指令“ movc a ,a+dptr ”和“ movc a,a+pc ”的運(yùn)用,我對(duì)它們區(qū)別也有了體會(huì):指令“ movc a,a+dptr ”完成把 a 中的內(nèi)容作為一個(gè)無(wú)符號(hào)數(shù)與dptr 中的內(nèi)容相加,所得結(jié)果為某一程序存儲(chǔ)單元的地址,然后把該地址單元中的內(nèi)容送到累加器a 中。指令“ movc a,a+pc ”以 pc 作為基址寄存器,pc 的內(nèi)容和a 的內(nèi)容作為無(wú)符號(hào)數(shù),相加后所得的數(shù)作為某一程序存儲(chǔ)單元的地址,然后把該地址單元中的內(nèi)容送到累加器a中。實(shí)驗(yàn)五數(shù)據(jù)排序

29、實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康氖煜?mcs-51 指令系統(tǒng),掌握數(shù)據(jù)排序程序的設(shè)計(jì)方法。二、實(shí)驗(yàn)設(shè)備pc 計(jì)算機(jī)一臺(tái),dais-52pro+ 或 dais-pro163c 實(shí)驗(yàn)系統(tǒng)一套。三、實(shí)驗(yàn)內(nèi)容及步驟在單片機(jī)片內(nèi)ram 的 30h3fh 寫入 16 個(gè)數(shù), 編寫實(shí)驗(yàn)程序, 將這 16 個(gè)數(shù)按照由小到大的順序排列。參考程序( a512_5.asm ) :org 0000h ljmp main org 0100h main: mov r0,#30h ; 數(shù)據(jù)起始地址mov r7,#16 ; 排序數(shù)據(jù)個(gè)數(shù)lp1: mov a,r7 mov r6,a mov a,r0 mov r1,a inc r1 lp2:

30、mov a,r0 ; 取出一個(gè)數(shù)據(jù)clr c subb a,r1 ; 與第二個(gè)數(shù)進(jìn)行比較jc lp3 ;r0 中的數(shù)小于r1 中的數(shù)則跳轉(zhuǎn)mov a,r0 ;r0 中的數(shù)大于r1 中的數(shù) , 交換數(shù)據(jù)xch a,r1 mov r0,a lp3: inc r1 djnz r6,lp2 inc r0 djnz r7,lp1 sjmp $ end 開始圖2-5-1 程序流程圖r0數(shù)據(jù)起始地址r7數(shù)據(jù)個(gè)數(shù)r1r 0+1r6r 7清進(jìn)位標(biāo)志a (r0)a(r1)?r0與r1所指單元中的數(shù)交換r1r 1+1r6-1=0?r0r 0+1r7-1=0?結(jié)束是否是是否否實(shí)驗(yàn)步驟:1)編寫程序,經(jīng)編譯、鏈接無(wú)誤后裝載到實(shí)驗(yàn)系統(tǒng);2)待排序的數(shù)據(jù)存放于片內(nèi)ram 的 30h3fh 單元,可在存儲(chǔ)器窗口直接輸入;3)在 s

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論