杭電單片機(jī)實(shí)驗(yàn)報(bào)告一.doc_第1頁(yè)
杭電單片機(jī)實(shí)驗(yàn)報(bào)告一.doc_第2頁(yè)
杭電單片機(jī)實(shí)驗(yàn)報(bào)告一.doc_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、杭電單片機(jī)實(shí)驗(yàn)報(bào)告一單片機(jī)原理與應(yīng)用技術(shù)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)題目:Keil軟件使用及匯編語(yǔ)言編程 姓名:_學(xué)號(hào):_實(shí)驗(yàn)日期:20_ 指導(dǎo)教師:1.Keil軟件的簡(jiǎn)介和使用 1.1 Keil uVision4的簡(jiǎn)介 最新的Keil uVision4 IDE,旨在提高開(kāi)發(fā)人員的生產(chǎn)力,實(shí)現(xiàn)更快,更有效的程序開(kāi)發(fā)。uVision4引入了靈活的窗口管理系統(tǒng),能夠拖放到視圖內(nèi)的任何地方,包括支持多顯示器窗口。uVision4在Vision3 IDE的基礎(chǔ)上,增加了更多大眾化的功能: 多顯示器和靈活的窗口管理系統(tǒng) 系統(tǒng)瀏覽器窗口的顯示設(shè)備外設(shè)寄存器信息 調(diào)試還原視圖創(chuàng)建并保存多個(gè)調(diào)試窗口布局 多項(xiàng)目工作區(qū)簡(jiǎn)化與

2、眾多的項(xiàng)目 1.2 Keil uVision4的使用 ,打開(kāi)Keil 4應(yīng)用軟件,其初始界面如下:、點(diǎn)擊菜單項(xiàng)“Project”下的“New uVisionProject”,如下圖所示。、選擇文件夾,并輸入工程名。、輸入工程名并保存后會(huì)彈出選擇芯片界面 、這里我們選擇Atmel公司的AT89S51單片機(jī),選擇后,點(diǎn)擊“OK”,即創(chuàng)建完工程。、單擊點(diǎn)擊下圖所示圓圈圈起的部分建立一個(gè)文件。也可以點(diǎn)擊菜單“File”下面的“NEW”來(lái)新建一個(gè)文件。、之后輸入程序的代碼后,單擊FileSave as,根據(jù)代碼語(yǔ)言的格類(lèi)型,可保存為后綴為.asm(匯編語(yǔ)言)和.c(C語(yǔ)言)的文件。、單擊“Target1

3、”前面的“+”號(hào),并用鼠標(biāo)右鍵點(diǎn)擊“SourceGroup1”,界面如圖10所示。在用鼠標(biāo)左鍵點(diǎn)擊“Add Files to Group Source Group1”即可把剛剛的代碼文件添加到工程。最后點(diǎn)擊左上角的編譯按鈕即可完成編譯。之后即可進(jìn)行程序的調(diào)試了。2.實(shí)驗(yàn)內(nèi)容 使用匯編語(yǔ)言完成課本P95的(2)、(5)、(8)三道題以及一個(gè)跑馬燈程序。2.1 P95-(2)設(shè)內(nèi)部RAM 5AH單元中有一個(gè)變量_,請(qǐng)編寫(xiě)計(jì)算下述函數(shù)式的程序,結(jié)果存入5BH。設(shè)計(jì)思路:顯然本題要使用分支語(yǔ)句,不妨使用JZ, JNB等,并通過(guò)_-10,_-15綜合判斷_處于哪個(gè)區(qū)間。代碼如下:ORG 0000H JM

4、P START ORG 1000H START: MOV A, 5AH ;直接尋址,將5AH地址上的數(shù)據(jù)_存入寄存器A MOV B, 5AH ;直接尋址,將5AH地址上的數(shù)據(jù)_再一次存入寄存器B SUBB A, #0FH ;將A中數(shù)據(jù)_先減去15,初步判斷_所屬區(qū)間 JNB ACC.7, DO3 ;若A的第7位不為1(_=15)則程序跳到DO3,否則順序執(zhí)行 MOV A, 5AH ;若_比15小,再次將_存入累加器A中 CLR C ;清零進(jìn)位C SUBB A, #0AH ;將_減去10 JNB ACC.7, DO1 ;若A的第7位不為1,(_=10),跳到DO1 JMP DO2 ;剩下的情況就

5、是:_10,跳到DO2 DO1:MOV A, 5AH ;10=_=15 MUL AB ;相當(dāng)于_,結(jié)果的低八位存入A ADD A, #08H ;即_+8A MOV 5BH,A ;即_+8B JMP DONE ;跳到程序結(jié)束段 DO2:MOV A,5AH ;_10 MUL AB ;_A CLR C ;進(jìn)位C清零 SUBB A, #01H ; _-1A MOV 5BH,A ; _-1B JMP DONE ;跳到程序結(jié)束段 DO3:MOV A, #29H ;41A MOV 5BH, A ;41B JMP DONE ;跳到程序結(jié)束段 DONE:SJMP $ END 程序截圖:程序結(jié)果:、當(dāng)_=12時(shí),

6、Y=12_12+8=152 、當(dāng)_=8時(shí),Y=8_8-1=63 、當(dāng)_=18時(shí),Y=41 2.2 P95-(5)設(shè)有兩個(gè)長(zhǎng)度均為15的數(shù)組,分別存放在以20_H和2100H為首的存儲(chǔ)區(qū)中,試編程求其對(duì)應(yīng)項(xiàng)之和,結(jié)果存放到以220_H為首的存儲(chǔ)區(qū)中。設(shè)計(jì)思路:本題需要用到LOOP進(jìn)行15次的求和及存放。并且由于地址過(guò)高,應(yīng)采用DPTR進(jìn)行訪問(wèn)。代碼如下:ORG 0000H JMP START ORG 1000H START: MOV R1,#00H ;求和寄存器,初始清零 MOV R2,#0FH ;循環(huán)次數(shù)為15次 MOV DPL,#00H ;類(lèi)似段內(nèi)偏移地址地址 LOOP: MOV DPH,#

7、20H ;DPTR的高八位,可理解為段地址,這里先指向第一個(gè)數(shù)組的首 ;地址20_H MOV_ A,DPTR ;A(DPTR) MOV R1,A ;R1(A) INC DPH ;DPH改成指向高8位是21H的存儲(chǔ)區(qū) MOV_ A,DPTR ;A(DPTR) ADD A,R1 ;兩數(shù)組對(duì)應(yīng)項(xiàng)求和 INC DPH ;DPH改成指向高8位是22H的存儲(chǔ)區(qū) MOV_ DPTR,A ;求和結(jié)果送入上述地址區(qū) INC DPL ;低8位地址自增 DJNZ R2,LOOP ;若循環(huán)次數(shù)-1后不為0,則跳轉(zhuǎn)到LOOP處進(jìn)行循環(huán) END 程序截圖:程序結(jié)果:首先分別在20_H和2100H存入15數(shù),這里我都存入了

8、1,2,3,14,15。結(jié)果得到:2.3 P95-(8)將片外數(shù)據(jù)存儲(chǔ)器地址為1000H1030H的數(shù)據(jù)塊,全部搬遷到片內(nèi)RAM 30H60H中,并將原數(shù)據(jù)塊區(qū)域全部清零。設(shè)計(jì)思路:顯然還是得用LOOP進(jìn)行搬遷,且每搬完一個(gè)就得清零原地址數(shù)據(jù),并用DPTR訪問(wèn)片外存儲(chǔ)器。代碼如下:ORG 0000H JMP START ORG 1000H START: MOV R1,#30 ;用R1保存循環(huán)次數(shù) 30次 MOV R0,#30H ;將地址30H存入R0中 MOV DPTR,#1000H ;將1000H這個(gè)地址存入DPTR中 LOOP: MOV_ A,DPTR ;寄存器間接尋址。A(DPTR) M

9、OV R0,A ;(R0)A CLR A ;A0 MOV_ DPTR, A ;原地址數(shù)據(jù)清零 INC R0 ;數(shù)據(jù)的寫(xiě)入地址 自增 INC DPTR ;數(shù)據(jù)的讀取地址 自增 DJNZ R1,LOOP ;若循環(huán)次數(shù)-1不為0,則跳轉(zhuǎn)到LOOP處進(jìn)行循環(huán) END 程序截圖:程序結(jié)果:先在片外存儲(chǔ)器1000H開(kāi)始存入數(shù)據(jù) 接下來(lái)開(kāi)始將數(shù)據(jù)搬遷到片內(nèi)30H開(kāi)始的區(qū)域中 且原地址數(shù)據(jù)依次被清零 2.4 P95-(8)題目:設(shè)計(jì)一個(gè)6+50=56ms跑馬燈,并在P1端口顯示。設(shè)計(jì)思路:首先我得設(shè)計(jì)一個(gè)56ms的延遲。這里已知當(dāng)單片機(jī)系統(tǒng)的振蕩頻率為fosc=12MHz時(shí),一個(gè)機(jī)器周期為1T=1us;執(zhí)行一

10、條DJNZ指令需要2個(gè)機(jī)器周期,執(zhí)行一條NOP需要一個(gè)機(jī)器周期,執(zhí)行一條MOV也是一個(gè)機(jī)器周期。接著,再通過(guò)循環(huán)左移指令RL A實(shí)現(xiàn)跑馬等效果。代碼如下:ORG 0000H JMP START ORG 0800H START:MOV A,#01H ;即將0000 0001存入A,后面會(huì)將最右邊1循環(huán)左移。SJMP DELAY ;進(jìn)入延時(shí)段起點(diǎn) LOOP: RL A ;從此處開(kāi)始跑馬燈模塊。先將A循環(huán)左移 MOV P1,A ;將A的值賦給端口P1的8位 SJMP DELAY ;從56ms的延遲程序段再跑一遍 DELAY: MOV R7, #224 ;設(shè)置外循環(huán)次數(shù)224次 DLY1: MOV R

11、6, #123 ;設(shè)置內(nèi)循環(huán)次數(shù)123次 DLY2: DJNZ R6, DLY2 NOP DJNZ R7, DLY1 ;延時(shí)程序段結(jié)束,總用時(shí)(123_2+2+1+1)T_224T+2T+1T=56ms SJMP LOOP SJMP END 程序截圖:程序結(jié)果:初始狀態(tài) 執(zhí)行一次56ms延遲后左移 再一次56ms延遲后左移 Proteus仿真截圖:3.實(shí)驗(yàn)心得 通過(guò)以上4個(gè)實(shí)驗(yàn),我學(xué)會(huì)了KEIL軟件的使用,即創(chuàng)建工程,創(chuàng)建并添加項(xiàng)目,編譯與調(diào)試等等。更重要的是學(xué)習(xí)了很多單片機(jī)編程方面的只是。比如用匯編語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)的傳送、運(yùn)算、移位等,同時(shí)還有一些簡(jiǎn)單的程序設(shè)計(jì),如分支程序、循環(huán)程序等等。這些實(shí)驗(yàn)使我更好的

溫馨提示

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

評(píng)論

0/150

提交評(píng)論