資源描述:
《單片機(jī)原理與應(yīng)用技術(shù)實(shí)驗(yàn)報(bào)告--Keil軟件使用及匯編語(yǔ)言編程 》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、單片機(jī)原理與應(yīng)用技術(shù)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)題目:Keil軟件使用及匯編語(yǔ)言編程姓名:***學(xué)號(hào):********實(shí)驗(yàn)日期:2017.4.15指導(dǎo)教師:高惠芳1.Keil軟件的簡(jiǎn)介和使用1.1KeiluVision4的簡(jiǎn)介最新的KeiluVision4IDE,旨在提高開發(fā)人員的生產(chǎn)力,實(shí)現(xiàn)更快,更有效的程序開發(fā)。uVision4引入了靈活的窗口管理系統(tǒng),能夠拖放到視圖內(nèi)的任何地方,包括支持多顯示器窗口。uVision4在μVision3IDE的基礎(chǔ)上,增加了更多大眾化的功能:·多顯示器和靈活的窗口管理系統(tǒng)·系統(tǒng)瀏覽器窗口的顯示設(shè)備外設(shè)寄存器
2、信息·調(diào)試還原視圖創(chuàng)建并保存多個(gè)調(diào)試窗口布局·多項(xiàng)目工作區(qū)簡(jiǎn)化與眾多的項(xiàng)目1.2KeiluVision4的使用①,打開Keil4應(yīng)用軟件,其初始界面如下:②、點(diǎn)擊菜單項(xiàng)“Project”下的“NewuVisionProject”,如下圖所示。③、選擇文件夾,并輸入工程名。④、輸入工程名并保存后會(huì)彈出選擇芯片界面⑤、這里我們選擇Atmel公司的AT89S51單片機(jī),選擇后,點(diǎn)擊“OK”,即創(chuàng)建完工程。⑥、單擊點(diǎn)擊下圖所示圓圈圈起的部分建立一個(gè)文件。也可以點(diǎn)擊菜單“File”下面的“NEW”來(lái)新建一個(gè)文件。⑦、之后輸入程序的代碼后,
3、單擊File—Saveas,根據(jù)代碼語(yǔ)言的格類型,可保存為后綴為.asm(匯編語(yǔ)言)和.c(C語(yǔ)言)的文件。⑧、單擊“Target1”前面的“+”號(hào),并用鼠標(biāo)右鍵點(diǎn)擊“SourceGroup1”,界面如圖10所示。在用鼠標(biāo)左鍵點(diǎn)擊“AddFilestoGroupSourceGroup1...”即可把剛剛的代碼文件添加到工程。最后點(diǎn)擊左上角的編譯按鈕即可完成編譯。之后即可進(jìn)行程序的調(diào)試了。2.實(shí)驗(yàn)內(nèi)容使用匯編語(yǔ)言完成課本P95的(2)、(5)、(8)三道題以及一個(gè)跑馬燈程序。2.1P95-(2)設(shè)內(nèi)部RAM5AH單元中有一個(gè)變量X
4、,請(qǐng)編寫計(jì)算下述函數(shù)式的程序,結(jié)果存入5BH。設(shè)計(jì)思路:顯然本題要使用分支語(yǔ)句,不妨使用JZ,JNB等,并通過(guò)X-10,X-15綜合判斷X處于哪個(gè)區(qū)間。代碼如下:ORG0000HJMPSTARTORG1000HSTART:MOVA,5AH;直接尋址,將5AH地址上的數(shù)據(jù)X存入寄存器AMOVB,5AH;直接尋址,將5AH地址上的數(shù)據(jù)X再一次存入寄存器BSUBBA,#0FH;將A中數(shù)據(jù)X先減去15,初步判斷X所屬區(qū)間JNBACC.7,DO3;若A的第7位不為1(X>=15)則程序跳到DO3,否則順序執(zhí)行MOVA,5AH;若X比15小
5、,再次將X存入累加器A中CLRC;清零進(jìn)位CSUBBA,#0AH;將X減去10JNBACC.7,DO1;若A的第7位不為1,(X>=10),跳到DO1JMPDO2;剩下的情況就是:X<10,跳到DO2DO1:MOVA,5AH;10<=X<=15MULAB;相當(dāng)于X*X,結(jié)果的低八位存入AADDA,#08H;即X*X+8→AMOV5BH,A;即X*X+8→BJMPDONE;跳到程序結(jié)束段DO2:MOVA,5AH;X<10MULAB;X*X→ACLRC;進(jìn)位C清零SUBBA,#01H;X*X-1→AMOV5BH,A;X*X-1→BJ
6、MPDONE;跳到程序結(jié)束段DO3:MOVA,#29H;41→AMOV5BH,A;41→BJMPDONE;跳到程序結(jié)束段DONE:SJMP$END程序截圖:程序結(jié)果:①、當(dāng)X=12時(shí),Y=12*12+8=152②、當(dāng)X=8時(shí),Y=8*8-1=63③、當(dāng)X=18時(shí),Y=412.2P95-(5)設(shè)有兩個(gè)長(zhǎng)度均為15的數(shù)組,分別存放在以2000H和2100H為首的存儲(chǔ)區(qū)中,試編程求其對(duì)應(yīng)項(xiàng)之和,結(jié)果存放到以2200H為首的存儲(chǔ)區(qū)中。設(shè)計(jì)思路:本題需要用到LOOP進(jìn)行15次的求和及存放。并且由于地址過(guò)高,應(yīng)采用DPTR進(jìn)行訪問(wèn)。代碼如下
7、:ORG0000HJMPSTARTORG1000HSTART:MOVR1,#00H;求和寄存器,初始清零MOVR2,#0FH;循環(huán)次數(shù)為15次MOVDPL,#00H;類似段內(nèi)偏移地址地址LOOP:MOVDPH,#20H;DPTR的高八位,可理解為段地址,這里先指向第一個(gè)數(shù)組的首;地址2000HMOVXA,@DPTR;A←((DPTR))MOVR1,A;R1←(A)INCDPH;DPH改成指向高8位是21H的存儲(chǔ)區(qū)MOVXA,@DPTR;A←((DPTR))ADDA,R1;兩數(shù)組對(duì)應(yīng)項(xiàng)求和INCDPH;DPH改成指向高8位是22H
8、的存儲(chǔ)區(qū)MOVX@DPTR,A;求和結(jié)果送入上述地址區(qū)INCDPL;低8位地址自增DJNZR2,LOOP;若循環(huán)次數(shù)-1后不為0,則跳轉(zhuǎn)到LOOP處進(jìn)行循環(huán)END程序截圖:程序結(jié)果:首先分別在2000H和2100H存入15數(shù),這里我都存入了1,2,3,…,14,