Keil開發(fā)平臺課案_第1頁
Keil開發(fā)平臺課案_第2頁
Keil開發(fā)平臺課案_第3頁
Keil開發(fā)平臺課案_第4頁
Keil開發(fā)平臺課案_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目錄實(shí)驗(yàn)一熟悉Keil開發(fā)平臺 1實(shí)驗(yàn)二片內(nèi)存儲器及特殊功能寄存器實(shí)驗(yàn) 4實(shí)驗(yàn)三分支程序?qū)嶒?yàn) 11實(shí)驗(yàn)四數(shù)據(jù)塊傳送實(shí)驗(yàn) 13實(shí)驗(yàn)五流水燈輸出控制實(shí)驗(yàn) 14實(shí)驗(yàn)六中斷服務(wù)程序的實(shí)驗(yàn) 21實(shí)驗(yàn)七定時(shí)顯示實(shí)驗(yàn)26實(shí)驗(yàn)八顯示實(shí)驗(yàn)28實(shí)驗(yàn)九串行通信實(shí)驗(yàn) 35實(shí)驗(yàn)十鍵盤顯示試驗(yàn) 41附錄一keil 51 windows集成開發(fā)平臺的使用 45附錄二Keil程序調(diào)試 52附錄三通用編程器的使用 59附錄四最小系統(tǒng)原理圖 71實(shí)驗(yàn)一 熟悉 Keil 開發(fā)平臺一、實(shí)驗(yàn)?zāi)康?. 掌握Keil C51卩Vision2集成開發(fā)環(huán)境的基本使用方法;2. 學(xué)會(huì)使用匯編語言進(jìn)行程序編輯、匯編與模擬仿真調(diào)試的過程。3. 學(xué)會(huì)

2、在線下載,調(diào)試。4. 學(xué)會(huì)編程器的使用二、實(shí)驗(yàn)設(shè)備1. 裝有Keil C51卩Vision2集成開發(fā)環(huán)境、編程器軟件、在線下載軟件的計(jì)算機(jī)。2. 最小系統(tǒng)的實(shí)驗(yàn)板。3. 通用編程器三、實(shí)驗(yàn)內(nèi)容1. 斷電,連接計(jì)算機(jī)、實(shí)驗(yàn)板2. 給計(jì)算機(jī)、實(shí)驗(yàn)板通電。3. 打開計(jì)算機(jī),進(jìn)入 Keil C51 開發(fā)環(huán)境。4. 正確設(shè)置通信口,連接好開發(fā)環(huán)境和實(shí)驗(yàn)板。5. 新建一個(gè)項(xiàng)目,并將該項(xiàng)目建立在指定的文件下。6. 新建一個(gè)文件,其路徑與剛才建的項(xiàng)目相同。7. 將新建的文件添加到項(xiàng)目中,保存項(xiàng)目,觀察項(xiàng)目窗口和編輯窗口的內(nèi)容。8. 在編輯窗口編輯如下程序:MAIN:ORG0000HLJMPMAINORG010

3、0HMOVA, #34HMOVB, #34HMOVP3, #00HMOVP3, #0FHMOVP3, #0F0HSJMP$END9. 對程序進(jìn)行匯編,觀察信息窗口的信息,如果正確,執(zhí)行下一步;否則檢查修改程序 錯(cuò)誤,重新匯編。10. 生成目標(biāo)代碼,觀察消息窗口的信息,如果正確,執(zhí)行下一步;否則檢查修改程序錯(cuò)誤,重新生成目標(biāo)代碼。11. 打開下載軟件,將生成的目標(biāo)代碼下載到實(shí)驗(yàn)板上的CPU中。12.打開查看窗口,8051SFR窗口和端口窗口。觀察A、B、P3的初值,并用萬用表測試16P3 口各引腳電平。13.單步運(yùn)行程序,在計(jì)算機(jī)上觀察特殊功能寄存器A、B、P3的變化,測試電路上 P3口各引腳的

4、電平變化,分析原因。14. 全速運(yùn)行程序,觀察調(diào)試環(huán)境的變化,觀察A、B、P3的結(jié)果,分析原因。15. 操作流程如圖1-1所示;16. 按下面實(shí)驗(yàn)一的程序,重新操作一遍,單步運(yùn)行,并把觀察的結(jié)果填在表中。實(shí)驗(yàn)一記錄地址代碼行號號 標(biāo)匯編(偽)指令注釋1ORG 0000H2SE01 :MOVRO,#00H3MOVDPTR, #2000H;(2000H )送 DPTR4LOO1 :MOVA, #55H5MOVX DPTR, A;55 送(DPTR)6INC R0字節(jié)數(shù)加17INC DPTR字節(jié)數(shù)加18CJNE R0,#00H, LOO1不到FF個(gè)字節(jié)再清9LOOP :SJMP LOOP10END圖

5、1-1由源程序到十六進(jìn)制機(jī)器代碼的操作過程實(shí)驗(yàn)二片內(nèi)存儲器及特殊功能寄存器實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?. 掌握Keil C51Vision2集成開發(fā)環(huán)境進(jìn)行匯編語言的編輯、匯編和生成的基本方法。2. 學(xué)會(huì)使用Keil C511 Vision2集成開發(fā)環(huán)境下,觀察存儲器與修改的方法。3. 掌握不同存儲器區(qū)的特點(diǎn)。4. 通過實(shí)驗(yàn)掌握51單片機(jī)的指令。二、實(shí)驗(yàn)設(shè)備1. 裝有Keil C51 i Vision2集成開發(fā)環(huán)境、編程器軟件、在線下載軟件的計(jì)算機(jī)。2. 最小系統(tǒng)的實(shí)驗(yàn)板。3. 通用編程器三、實(shí)驗(yàn)內(nèi)容1斷電,連接計(jì)算機(jī)、實(shí)驗(yàn)板2. 給計(jì)算機(jī)、實(shí)驗(yàn)板通電。3. 打開計(jì)算機(jī),進(jìn)入 Keil C51開發(fā)環(huán)境。

6、4. 正確設(shè)置通信口,連接好開發(fā)環(huán)境和實(shí)驗(yàn)板。5. 新建一個(gè)項(xiàng)目,并將該項(xiàng)目建立在指定的文件下。6. 新建一個(gè)文件,其路徑與剛才建的項(xiàng)目相同。7. 將新建的文件添加到項(xiàng)目中,保存項(xiàng)目,觀察項(xiàng)目窗口和編輯窗口的內(nèi)容。8. 在編輯窗口編輯如下程序,觀察結(jié)果填入下表2-1。表2 1機(jī)器碼表程序在RO中的地址機(jī)器碼ORG 0000HLJMP MAINORG 0100HMAIN: MOV R0,#78HMOV Rl,#65HLJMP MAINEND9. 對程序進(jìn)行匯編,觀察信息窗口的信息,如果正確,執(zhí)行下一步;否則檢查修改程序 錯(cuò)誤,重新匯編。10. 生成目標(biāo)代碼,觀察消息窗口的信息,如果正確,執(zhí)行下一

7、步;否則檢查修改程序錯(cuò) 誤,重新生成目標(biāo)代碼。四、實(shí)驗(yàn)觀察記錄填到表中1. 片內(nèi)RAM工作寄存器區(qū)的觀察與修改內(nèi)部RAM工作寄存器區(qū)地址為 OOH 1FH(1) 打開寄存器窗口、RAM窗口和SFR窗口觀察。(2) 把觀察結(jié)果填入下表 2-2。 在RAM區(qū)直接修改00H和01H單元內(nèi)容為99H 78H,觀察并記錄寄存器 R0,R1的變 化,說明原因。表2-2寄存器窗口和 RAM窗口內(nèi)容觀察結(jié)果程序寄存器窗口RAM 窗口SFR 一8051 窗口執(zhí)行前執(zhí)行后執(zhí)行前執(zhí)行后執(zhí)行前執(zhí)行后LJMP MAIN(R0)=(R1)=(R0)=(R1)=(00H)=(01H)=(00H)=(01H)=(PC)=(P

8、C)=MAIN:MOVR0, #78卜(R0)=(R1)=(R0)=(R1)=(00H)=(0lH)=(00H)=(01H)=(PC)=(PC)=MOV Rl , #59H(RO)=(R1)=(RO)=(R1)=(00H)=(01H)=(00H)=(0lH)=(PC)=(PC)=SJMP MAIN(R0)=(R1)=(RO)=(R1)=(00H)=(01H)=(00H)=(01H)=(PC)=(PC)=END(4)在MOV RO, #78H指令前加入2條指令,觀察變化情況,填入表 2-3表2 3工作寄存器區(qū)觀察結(jié)果程序寄存器窗口RAM窗口執(zhí)行前執(zhí)行后執(zhí)行前執(zhí)行后執(zhí)行前執(zhí)行后(R0)=(R0)=

9、(00H)=(00H)=(08H)=(08H)=MAIN:SETB RSO(R1)=(R1)=(01H)=(01H)=(09H)=(09H)=(R0)=(R0)=(00H)=(00H)=(08H)=(08H)=CLR RSl(R1)=(R1)=(01H)=(OlH)=(09H)=(09H)=(R0)=(RO)=(00H)=(00H)=(08H)=(08H)=MOVR0 , #45H(R1)=(R1)=(01H)=(01H)=(09H)=(09H)=(RO)=(R0)=(00H)=(00H)=(08H)=(08H)=MOVRl , #67H(R1)=(R1)=(01H)=(01H)=(09H)=

10、(09H)=LJMPMAIN2. 內(nèi)部RAM位尋址區(qū)的觀察結(jié)果與內(nèi)容修改內(nèi)部RAM位尋址區(qū)的地址為 20H 2FH(1) 建一個(gè)新項(xiàng)目,建一個(gè)新文件放在項(xiàng)目的目錄中。按表2 4輸入程序、編譯,打開寄存器窗口、RAM窗口和SFR窗口觀察。(2) 觀察調(diào)試觀察結(jié)果,填入表2 4中(3) 執(zhí)行MOV RO, 20H前,將RAM窗口直接將20H單元內(nèi)容修改為 05H,在執(zhí)行該指 令,結(jié)果怎樣?表2 4位尋址區(qū)觀察表結(jié)果程序RA區(qū)預(yù)期結(jié)果RAMS實(shí)際觀察結(jié)果尋址方式執(zhí)行前執(zhí)行后位尋址字節(jié)尋址ORG 0000HLJMP MAINORG 0100HMAIN: MOV 20H, #00H(20H)=(20H)

11、=(20H)=MOV 21H, #00H(21H)=(21H)=(21H)=SETB 20H.0(20H)=(20H)=(20H)=CLR 20H.0(20H)=(20H)=(20H)=SETB 00H(20H)=(20H)=(20H)=CLR OOH(20H)=(20H)=(20H)=SETB 20H.1(20H)=(20H)=(20H)=CLR 20H.1(20H)=(20H)=(20H)=SETB 01H(20H)=(20H)=(20H)=CLR 01H(20H)=(20H)=(20H)=SETB 21H.7(21H)=(21H)=(21H)=CLR 21H.7(2lH)=(21H)=(

12、21H)=SETB OFH(21H)=(21H)=(21H)=CLR OFH(21H)=(21H)=(21H)=MOV R0, 20H(Ro)=(RO)=(R0)=LJMP MAINEND3. RAM間接與直接寄存器區(qū)的觀察與修改內(nèi)部RAM直接和間接尋址區(qū)地址為 30H-7FH(1) 在指定路徑中建立一個(gè)新項(xiàng)目,新建一個(gè)文件,將文件添加到此項(xiàng)目中。(2)按表2 5輸入程序(3) 執(zhí)行程序后,預(yù)期結(jié)果和尋址方式填入表2 5中(4) 程序經(jīng)匯編、生成、下載后,打開RAM窗口,觀察執(zhí)行前和單步執(zhí)行后的結(jié)果。如 果預(yù)期結(jié)果和實(shí)際執(zhí)行后不一致,分析原因,體會(huì)直接尋址和間接尋址方法。(5) 在程序中添加指

13、令, 將數(shù)99H送地址為60H的RAM單元中,要求用直接尋址和間接 尋址兩種方法,并進(jìn)行調(diào)試,驗(yàn)證程序的正確性。表2-5直接和間接尋址區(qū)觀察結(jié)果程序預(yù)期結(jié)果實(shí)際觀察結(jié)果尋址方式執(zhí)行前執(zhí)行后直接尋址間接尋址ORG 0000HLJMP MAINORG 0100HMAIN:MOV 30H,#00H(30H)=(30H)=(30H)=MOV 30H, #87H(30H)=(30H)=(30H)=MOV R0,#30H(R0)=(R0)=(R0)=MOV R0,#00H(30H)=(30H)=(30H)=MOV R0,#87H(RO)=(RO)=(30H)=(30H)=(R0)=MOV 7FH,#44H

14、(7FH)=(7FH)=(7FH)=MOV R0, #7FH(R0)=(R0)=(RO)=MOV R0,#55H(7FH)=(7FH)=(7FH)=LJMP MAINEND4. 內(nèi)部RAM間接尋址區(qū)地址為 80H OFFH。(1)在指定路徑中建立一個(gè)新項(xiàng)目,新建一個(gè)文件,將文件添加到此項(xiàng)目中。(2)按表2 6輸入程序(3) 執(zhí)行程序后,預(yù)期結(jié)果和尋址方式填入表2 6中(4) 程序經(jīng)匯編、生成、下載后,打開RAM窗口,觀察執(zhí)行前和單步執(zhí)行后的結(jié)果。如 果預(yù)期結(jié)果和實(shí)際執(zhí)行后不一致,分析原因,體會(huì)直接尋址和間接尋址方法。(5) 在程序中添加指令, 用間接尋址方式將數(shù) 99H送地址為90H的RAM單

15、元中,進(jìn)行調(diào) 試,驗(yàn)證程序的正確性表2 6間接尋址區(qū)觀察結(jié)果程序預(yù)期結(jié)果實(shí)際觀察結(jié)果尋址方式執(zhí)行前執(zhí)行后直接尋址間接尋址0RG 0000HLJMP MAINORG 0100HMAIN: MOV R0 #0EOHMOV R0, #00H(RO)=(OEOH)=(RO)=(0EOH)=(R0)=(0EoH)=MOV R0, #87H(R0)=(0EOH)=(R0)=(OEOH)=(RO)=(0EOH)=MOV R0 , #0FFHMOV R0, #00H(RO)=(0FFH)=(R0)=(OFFH)=(R0)=(OFFH)=MOV R0, #87H(RO)=(OFFH)=(RO)=(OFFH)=(

16、RO)=(OFFH)=LJMP MAINEND5.內(nèi)部RAM持殊功能寄存器區(qū)的觀察與內(nèi)容修改內(nèi)部RAM特殊功能寄存器區(qū)地址也是 80HOFFH=(1) 在指定路徑中建立一個(gè)新項(xiàng)目,新建一個(gè)文件,將文件添加到此項(xiàng)目中。(2) 按表2 7輸入程序(3) 執(zhí)行程序后,預(yù)期結(jié)果和尋址方式填入表2 7中(4) 程序經(jīng)匯編、生成、下載后,打開RAM窗口,寄存器窗口、觀察每條指令執(zhí)行前和 單步執(zhí)行后的結(jié)果。如果預(yù)期結(jié)果和實(shí)際執(zhí)行后不一致,分析原因,體會(huì)直接尋址和間 接尋址方法。(5) 執(zhí)行加法指令后,PSW各個(gè)位的變化規(guī)律掌握否?(6) 是否所有指令都影響 PSW的C AC OV P?(7) 在程序中添加寫

17、指令“ MOV OFQH#66H和“ MOV R0 #0FOH、“ MOV R0, #66H,判斷這兩組指令的執(zhí)行結(jié)果有何不同。表2 7 SFR區(qū)觀察結(jié)果程序預(yù)期結(jié)果執(zhí)行后結(jié)果尋址方式SFR區(qū)RAMSSFR區(qū)RAMS直接間接ORG 0000HLJMP MAINORG 0100HMAIN: MOV A,#81H(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW)=(0EOH)=(0DOH)=MOV 0EOH #82H(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW)=(0EOH)=(0DOH)=MOV R0, #0EOHMOV R0 #45H(R0)=(A)=(PS

18、W)=(00H)=(0EOH)=(0DOH)=(R0)=(A)=(PSW)=(00H)=(0EOH)=(0DOH)=MOV B,#00H(B)=(PSW)=(0FOH)=(0DOH)=(B)=(PSW)=(0FOH)=(0DOH)=MOV 0FOH , #02H(B)=(PSW)=(0FOH)=(ODOH)=(B)=(PSW)一(OFOH)=(0DOH)=MOV DPTR,#1234H(DPTR)=(PSW)=(83H)=(82H)=(0DOH)=(DPTR)=(PSW)=(83H)=(82H)=(0DOH)=MOV DPH, #05H(DPH)=(PSW)=(83H)=(0DOH)=(DPH

19、)=(PSW)=(83H)=(0DOH)=MOV DPL, #48H(DPL)=(PSW)=(82H)=(0DOH)=(DPL)=(PSW)=(82H)=(0DOH)=ADD A,#81H(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW)=(0EOH)=(0DOH)=MOV A,#48H(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW)=(0EOH)=(0DOH)=ADD A,#59H(A)=(PSW)=(OEOH)=(0DOH)=(A)=(PSW)=(OEOH)=(ODOH)=SETB ACC.5(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW

20、)=(0EOH)=(ODOH)=CLR ACC.5(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW)=(0EOH)=0DOH)=LJMP MAINEND6. 外部RAM區(qū)(XRAM)的觀察與內(nèi)容修改(1) 指定路徑中新建一個(gè)項(xiàng)目,新建一個(gè)文件名,將該文件添加到此項(xiàng)中。(2) 按照表2 8輸入程序。(3) 程序經(jīng)匯編、生成、下載后,打開SFR- 8051窗口、寄存器窗口、RAM窗口,觀察每條指令執(zhí)行前和單步執(zhí)行后的結(jié)果。(4) 將XRAM的1001H單元內(nèi)容預(yù)置為 65H,寫出每條指令執(zhí)行后的預(yù)期結(jié)果。(5) 觀察指令執(zhí)行前和單步執(zhí)行后的實(shí)際結(jié)果并記錄在表2- 8中。(6) 為什

21、么第2條指令“ MOV A #81H 和第 3條指令“ MOV OEQH #82H都修改A 的內(nèi)容和 PSW內(nèi)容,卻不修改 0EOH RAM單元的內(nèi)容?表2 8 XRA M區(qū)觀察結(jié)果程序預(yù)期結(jié)果執(zhí)行后結(jié)果尋址方式ORG 0000HLJMP MAINORG 0100HMAIN: MOV A #81HMOV DPTR, #1000HMOVX DPTR AMOV DPTR, #1001HMOVX A,DPTRLJMP MAINEND實(shí)驗(yàn)三分支程序?qū)嶒?yàn)一、實(shí)驗(yàn)?zāi)康模?. 熟悉指令系統(tǒng),正確選擇編程指令,掌握分支程序結(jié)構(gòu)流程圖的畫法,正確使用(轉(zhuǎn) 移)條件;2. 掌握分支程序設(shè)計(jì)的基本方法和技巧。二、實(shí)

22、驗(yàn)要求:1. 實(shí)驗(yàn)前,按要求畫出流程圖;2. 按要求使用匯編語言獨(dú)立編寫源程序;3. 使用單步方法運(yùn)行程序,觀察程序運(yùn)行前、運(yùn)行中和運(yùn)行后相關(guān)寄存器的變化(尤其三、實(shí)驗(yàn)相關(guān)知識:程序狀態(tài)字是一個(gè) 8位寄存器,用來存放程序的狀態(tài)信息,表征指令的執(zhí)行狀態(tài), 供程序查詢和判別之用。其格式如下:進(jìn)/借位輔助進(jìn)位標(biāo)志0工作寄存器區(qū)選擇溢出不用奇偶CYACF0RS1RS0OV-P各位說明如下:1. CY : (PSW.7)進(jìn)/借位標(biāo)志在執(zhí)行加/減法指令時(shí),如果操作結(jié)果D 7位有進(jìn)/借位,CY置“ 1 ”,否則清“ 0”。2. AC : (PSW.6)輔助進(jìn)位標(biāo)志或稱為半進(jìn)位,當(dāng)進(jìn)行加法操作而產(chǎn)生由低4位數(shù)

23、(十進(jìn)數(shù)的1位數(shù))向高4位數(shù)進(jìn)位時(shí),AC將被硬件置“1”,否則被清“ 0”。AC被用于BCD碼加法調(diào)整(詳見 DA指令)。3. F0: (PSW.5)標(biāo)志 0由用戶定義的一個(gè)狀態(tài)標(biāo)志??梢杂密浖硎顾谩?”或清“ 0”,也可以由軟件測試F0來控制程序流向。RS1、RS0: (PSW.4、PSW.3)工作寄存器區(qū)選擇控制位可由軟件來改變 RS1和RS0的組合以確定當(dāng)前工作寄存器區(qū)。4. OV : (PSW.2)溢出標(biāo)志用于補(bǔ)碼運(yùn)算,以指示溢出狀態(tài)。溢出標(biāo)志常用于對有符號補(bǔ)碼數(shù)作加減運(yùn)算。(-128 +127)。OV=1表示加減運(yùn)算的結(jié)果己超出一個(gè)字節(jié)所能表示的范圍在 MCS-51 中,無符號數(shù)

24、乘法指令 MUL 的執(zhí)行結(jié)果也會(huì)影響溢出標(biāo)志, 若累加器 A 和寄存器 B 的乘積超過 255時(shí), OV=1 ,否則 OV=0 。此積的高 8 位放在 B 中,低 8位放 在A中,故OV=0意味著只要從 A中取得乘積即可,否則要從BA寄存器對中取得乘積。除法指令 DIV 也會(huì)影響溢出標(biāo)志,當(dāng)除數(shù)為 0時(shí), OV=1 ,否則 OV=0。5. P: (PSW.O)奇偶標(biāo)志每個(gè)指令周期都由硬件來置位或清零, 以表示累加器 A 中值為“1”的位數(shù)的奇偶性。 若P=1,則A中“1”的位數(shù)為奇數(shù),否則 P=0。該標(biāo)志對串行數(shù)據(jù)通訊中的信息傳輸有重要意義。在串行通訊中,常用奇偶校驗(yàn)的方法來檢驗(yàn)數(shù)據(jù)傳輸?shù)目煽?/p>

25、性。在發(fā)送時(shí)可根據(jù)P值對數(shù)據(jù)的奇偶位置位或清除。四、實(shí)驗(yàn)內(nèi)容設(shè)X存放在內(nèi)部RAM的40單元中,判斷X的值大于0,結(jié)果送1, X小于0送-1,X 等于 0 送 0,要求畫出流程圖,觀察結(jié)果。五、實(shí)驗(yàn)步驟1. 指定路徑中新建一個(gè)項(xiàng)目,新建一個(gè)文件名,將該文件添加到此項(xiàng)中。2. 程序經(jīng)匯編、生成、下載后,打開 SFR- 8051窗口、寄存器窗口、 RAM窗口,觀察 每條指令執(zhí)行前和單步執(zhí)行后的結(jié)果。3. 在 40H 單元輸入一個(gè)小于 20 的數(shù),單步運(yùn)行程序,觀察寄存器是否為分析結(jié)果; 程序跳向哪個(gè)分支。4. 在 40H 單元輸入一個(gè)大于 20 的數(shù),單步運(yùn)行程序,觀察寄存器是否為分析結(jié)果; 程序跳

26、向哪個(gè)分支。六、參考程序ORG0000HSTART:MOV A, 40HJZ COMPJNBACC.7, POSTMOVA, #81HSJMPCOMPPOST:MOVA, #01HCOMP :MOV41H, AEND實(shí)驗(yàn)四 數(shù)據(jù)塊傳送實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?. 熟悉指令系統(tǒng),正確選擇編程指令。2. 掌握循環(huán)程序設(shè)計(jì)的基本方法和技巧。3. 掌握單步、斷點(diǎn)調(diào)試程序的方法和技巧。二、實(shí)驗(yàn)內(nèi)容將內(nèi)部數(shù)據(jù)區(qū) 30H 3FH 單元內(nèi)容,傳送到外部 1000H 為首的外部數(shù)據(jù)區(qū) XRAM 中。三、實(shí)驗(yàn)步驟1. 指定路徑中新建一個(gè)項(xiàng)目,新建一個(gè)文件名,將該文件添加到此項(xiàng)目中。2. 在編輯窗口輸入程序,程序經(jīng)匯編、生

27、成HEX文件。3. 進(jìn)入調(diào)試界面,在內(nèi)部數(shù)據(jù)區(qū)窗口,把光標(biāo)放在 30H 單元,輸入數(shù)據(jù),在 16 個(gè)單 元中分別輸入數(shù)據(jù),最好輸入 16 進(jìn)制數(shù)。4. 打開SFR-8051窗口、寄存器窗口、 RAM窗口,XRAM窗口,觀察每條指令執(zhí)行前和 單步執(zhí)行后的結(jié)果。5. 修改程序,把將內(nèi)部數(shù)據(jù)區(qū) 30H3FH 單元內(nèi)容,傳送到內(nèi)部 50H 為首的數(shù)據(jù)區(qū)。四、參考程序:參考程序:傳送數(shù)據(jù)塊程序ORG0000HJMPSTARTORG1000HSTART:MOVR0, #30HMOVDPTR, #1000HMOVR2, #100LP:MOVA, R0MOVXDPTR, AINCR0INCDPTRDJNZR2

28、, LPEND實(shí)驗(yàn)五流水燈輸出控制實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康氖褂脝纹瑱C(jī)對負(fù)載進(jìn)行控制時(shí),單片機(jī)組成的控制電路不同,只需要根據(jù)輸入信號 和輸出負(fù)載設(shè)計(jì)接口電路,控制系統(tǒng)的邏輯關(guān)系使用軟件編程的方法實(shí)現(xiàn)即可。如果輸 入、輸出信號不變而邏輯關(guān)系變化時(shí),只需要修改程序,硬件基本不變。因此單片機(jī)控 制電路使用非常靈活。1 掌握單片機(jī)中輸出端口的控制方法。2 掌握循環(huán)的分析方法。3 了解編程器的使用方法。二、實(shí)驗(yàn)原理用單片機(jī)控制8只并排的發(fā)光二極管(D1-D8 ),使各發(fā)光二極管從 D1開始點(diǎn)亮并 延時(shí)熄滅,然后再點(diǎn)亮下一個(gè)發(fā)光二極管,8只發(fā)光二極管循環(huán)點(diǎn)亮后再從 D1開始重復(fù)循環(huán)。這種顯示方式下的發(fā)光二極管通俗地

29、稱為流水燈,其亮、滅規(guī)則見表5-1。表5-1簡單流水燈顯示規(guī)則D1燈D2燈D3燈D4燈D5燈D6燈D7燈D8燈點(diǎn)亮熄滅熄滅熄滅熄滅熄滅熄滅熄滅熄滅點(diǎn)亮熄滅熄滅熄滅熄滅熄滅熄滅熄滅熄滅點(diǎn)亮熄滅熄滅熄滅熄滅熄滅熄滅熄滅熄滅點(diǎn)亮熄滅熄滅熄滅熄滅熄滅熄滅熄滅熄滅點(diǎn)亮熄滅熄滅熄滅熄滅熄滅熄滅熄滅熄滅點(diǎn)亮熄滅熄滅熄滅熄滅熄滅熄滅熄滅熄滅點(diǎn)亮熄滅熄滅熄滅熄滅熄滅熄滅熄滅熄滅點(diǎn)亮三、實(shí)驗(yàn)內(nèi)容8個(gè)發(fā)光二級管從右到左流水變化實(shí)驗(yàn)。本實(shí)驗(yàn)以一個(gè)簡單的流水燈為例介紹單片 機(jī)控制系統(tǒng)對輸出端口進(jìn)行控制的方法。四、實(shí)驗(yàn)步驟1. 指定路徑中新建一個(gè)項(xiàng)目,新建一個(gè)文件名,將該文件添加到此項(xiàng)目中。2. 在編輯窗口輸入?yún)⒖汲绦?

30、1,程序經(jīng)匯編、生成 HEX文件。3. 進(jìn)入調(diào)試界面,打開端口P1,單步運(yùn)行,觀察 P1端口的變化,如圖示 5-1所示。4. 修改程序,把延時(shí)時(shí)間延長,重新生成HEX文件。5. 把KEIL軟件最小化,將下載專用線 AT-ISP的IDC10插頭正確與最小系統(tǒng)板左側(cè)的 IDC10插座連接,另一端與 PC機(jī)的并口連接,然后,給最小系統(tǒng)板接上電源。6. 打開下載軟件,如圖示5-2所示。7. 雙擊目錄下的文件lspPgm.exe,打開軟件進(jìn)入如圖 5-3所示的界面(1)芯片選擇:左擊界面右面芯片選擇窗口的下拉箭標(biāo),選擇編程芯片的型號。(2) 導(dǎo)入hex文件到緩沖區(qū):左擊界面上的Open File ”按鈕

31、,選擇本目錄下 的hex文件。(3)向芯片寫入文件:左擊界面上的“ Write ”按鈕,開始編程向芯片寫入程序。(4)出現(xiàn)如圖5-4所示的界面表示完成寫入編程。:4File Edit Viira Frojact Debug Flaxh h.ph打TqIe 5VTS V:rid-:* 11 dip(5) 退出程序:左擊界面右上角的“x”按鈕,退出此程序。骷圓刊帀弋中莊 駁也即昌廠|自TKIV乩利FUT;#嘰昨胖加谿A口:R0V:JB加跖人中內(nèi)容送就口TOV:料箇竊存跖;3:HQVR6304:料送BE気存詼|詔:D翻叭時(shí)儷話*內(nèi)容-1 *牯罷苕1轉(zhuǎn)獸至応D卿:審?qiáng)^再內(nèi)容-1 *牯罷苕1轉(zhuǎn)也至口A:

32、呆JtnSSA中內(nèi)咨左格一也11:坤務(wù)至14E盹:館sKQ00CIH自E譏苜單片也諜fK星小歪蛛克腔岀丄血X1Loid E:XS單殲機(jī)灤件最小系統(tǒng)實(shí)龜沁輸出“ 百X蟲血“!: |c:(nooHC:0zD0D0: 74 FE F5 90 7F 02 7E 04 DE :FE C:0eD010: 7F E4 F6 08 FD 75 31 07 02 0DHJJ圖5-1調(diào)試界面17文件迥 坍相S 收矗 IM 轄韻血J t /* L.:如:Th:乜二U _匚!= mi艦如snT S氣 w口氐皿宣直I、KTSflSSJUCF咂ift弍說明 仇 HOO, C燭改E奧3MB年B月何日,V |?0|v zf

33、Docujicm匸:亠丄丄xL占豈LwJ i_IxpPfSDt. st10文件3 EB圖5-2下載軟件界面圖5-3下載軟件操作界面34圖5-4 下載軟件操作完成界面8. 觀察最小系統(tǒng)實(shí)驗(yàn)板上 8個(gè)發(fā)光二極管的變化。9. 如果實(shí)現(xiàn)8個(gè)數(shù)碼管從左到右流水,硬件電路如何連接?如何修改程序,并下載到 用戶板,觀察數(shù)碼管的變化?10. 如果將命令L2: DJNZ R6, L2 ;修改為L2 : DJNZR6, L3 ;會(huì)出現(xiàn)什么結(jié)果?五、實(shí)驗(yàn)參考程序連接硬件電路,將最小系統(tǒng)P1 口上排和P1 口中排連接ORG0000HMOVA, #0FEH;#01H送累加器AL1: MOVP1, A;累加器A中內(nèi)容送P

34、1 口MOVR7,#0;#0送R7寄存器L3: MOVR6,#0;#0送R6寄存器L2: DJNZR6, L2;R6寄存內(nèi)容-1,結(jié)果工0轉(zhuǎn)移至L2DJNZR7, L3;R7寄存內(nèi)容-1,結(jié)果工0轉(zhuǎn)移至L3RLA;累加器A中內(nèi)容左移一位SJMPL1;轉(zhuǎn)移至L1END;結(jié)束LED )閃光。閃光燈閃六、思考題1組裝一個(gè)單片機(jī)的最小系統(tǒng),用來控制一只發(fā)光二極管(爍時(shí)間為 0.2 秒?;蛟谧钚∠到y(tǒng)實(shí)驗(yàn)板上實(shí)現(xiàn)如上功能。2. 本實(shí)驗(yàn)參考程序中, P1 和 P1.0 有什么區(qū)別,為什么這樣用? 3計(jì)算延時(shí)時(shí)間,并編寫一個(gè)延時(shí) 2ms 的程序。4參考程序ORG0000HL1:CPLP1.0MOVR6, #0

35、HL2:MOVR7, #0HL3:NOPDJNZR7, L3DJNZR6, L2SJMPL1END5請編寫程序,每按一次按鍵流水燈的流動(dòng)方向改變一次。硬件連接:將最小系統(tǒng)P1 口上排和P1 口中排連接,P2.7接ORG0000H;定義程序的起始地址MOVA, #01H ;#01H 送累加器 AL1:MOVP1, A;累加器 A 中內(nèi)容送 P1 口MOVR7, #0FFH ;調(diào)用延時(shí)子程序前,準(zhǔn)備延時(shí)值A(chǔ)CALLDELAY;調(diào)用延時(shí)子程序JBKEY, K1;按鍵未按下轉(zhuǎn) K1MOVR7, #20;調(diào)用延時(shí)子程序前,準(zhǔn)備延時(shí)值A(chǔ)CALLDELAY;調(diào)用延時(shí)子程序JBKEY, K1;按鍵未按下轉(zhuǎn) K

36、1JBCL, K3;已處理過(處理標(biāo)志 =1 )轉(zhuǎn) K2CPLFX;按鍵確認(rèn),改變 FX 狀態(tài)SETBCL;設(shè)置處理標(biāo)志SJMPK3;轉(zhuǎn)移至 K3SW8 , P3.3 接 KEYK1:CLRCL;清處理標(biāo)志K3:JNBFX, L4;FX=0時(shí)轉(zhuǎn)移到L4RLA;累加器A中內(nèi)容左移一位SJMPL1;轉(zhuǎn)移至L1L4:RRA;累加器A中內(nèi)容右移一位SJMPL1;轉(zhuǎn)移至L1DELAY:MOV R6,#0FFH;#0FFH送R6寄存器DJNZ R6,$;R6寄存內(nèi)容-1,直到結(jié)果=0DJNZ R7,DELAY;R7寄存內(nèi)容-1,結(jié)果工0轉(zhuǎn)移至 DELAYRET;子程序結(jié)束,返回調(diào)用指令的下一條指令繼續(xù)執(zhí)行

37、FXBITOOH;定義一個(gè)位變量,CLBIT01H;定義處理標(biāo)志KEYBITP3.3;定義按鍵端口變量END;結(jié)束6 將流水燈的流動(dòng)方式改為表5-2所示方式編程并實(shí)現(xiàn)。表5-2流水燈的流動(dòng)方式步D0D1D2D3D4D5D6D71亮滅滅滅滅滅滅滅2亮亮滅滅滅滅滅滅3亮亮亮滅滅滅滅滅4亮亮亮亮滅滅滅滅5亮亮亮亮亮滅滅滅6亮亮亮亮亮亮滅滅7亮亮亮亮亮亮亮滅8亮亮亮亮亮亮亮亮參考程序ORG 0000hL1:MOV 30H, #0FFHCLRCL2:MOVA, 30HRRCAJNCL1CLRCMOV30H, AMOVP1, AACALLDELAYSJMPL2ORG0200HDELAY:MOVR5, #0

38、6HL5:MOVR7, #0FFHL4:MOVR6, #0FFHL3:DJNZR6, L3DJNZR7, L4DJNZR5, L5RETEND7. 如果需要加快流水燈的流動(dòng)速度,需要如何修改程序?如何修改程序使流水燈的流動(dòng)方向相反。如果要降低流動(dòng)速度,需要如何修改程序?qū)嶒?yàn)六 中斷服務(wù)程序的實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?在上個(gè)實(shí)驗(yàn)中, 為了檢測按鍵狀態(tài), 需要不停地進(jìn)行檢測, 占用了 CPU 的大量時(shí)間, 工作效率非常低。計(jì)算機(jī)中常采用中斷技術(shù)處理此類問題,本實(shí)驗(yàn)通過一個(gè)高效率的流 水燈來介紹如何使用中斷技術(shù)處理按鍵。1掌握單片機(jī)中中斷系統(tǒng)的結(jié)構(gòu)。2掌握外部中斷 0和外部中斷 1 的中斷方法和編程的基本方法

39、、技巧。 3掌握中斷處理程序的組成以及中斷向量的概念。4通過實(shí)驗(yàn),掌握單片機(jī)中中斷的處理方法。二、實(shí)驗(yàn)設(shè)備1. 裝有Keil C51卩Vision2集成開發(fā)環(huán)境、編程器軟件、在線下載軟件的計(jì)算機(jī)。2. 最小系統(tǒng)的實(shí)驗(yàn)板。3. 通用編程器三、實(shí)驗(yàn)內(nèi)容 采用中斷方法控制燈的亮滅, 由中斷服務(wù)程序控制 I/O 口置高, 置低,即可控制燈的 全亮和全滅。四、實(shí)驗(yàn)原理P2.7接按鍵SW8,外部中斷INT1接KEY,作為中斷申請信號,開機(jī) 8個(gè)發(fā)光二極 管從左到右流水,產(chǎn)生中斷后, 8個(gè)發(fā)光管全亮、全滅,延時(shí)后,在循環(huán)。五、實(shí)驗(yàn)參考程序硬件連接:P2.7 接 SW8,P3.3 接 KEY參考程序ORG00

40、00h;偽指令LJMPSTART;跳轉(zhuǎn)到單片機(jī)的主程序ORG0013H;外部中斷 1 的入口地址LJMPEXT1;跳轉(zhuǎn)到中斷服務(wù)程序ORG0100H;偽指令,單片機(jī)主程序的開始START:MOVIE , #10000100bMOVIP , #00000100bMOVTCON, #00000000b;定時(shí)器初始化MOVSP, #40HMOVP1, #0FFHMOVMOVP2,P3,#00H#0FFHLOOP:MOVA,#0FFHCLRCMOVR2,#08HLOOP1: RLCAMOVP1, ALCALLDELAYDJNZR2,LOOP1JMPLOOPEXT1:PUSHACCPUSHPSWMOVA

41、, #00HMOVR3,#0AHLOOP2:MOVP1,ALCALLDELAYCPLADJNZR3,LOOP2POPPSWPOPACCRETIDELAY:MOVR5,#20D1:MOVR6,#20D2:MOVR7,#248DJNZR7,$DJNZR6,D2DJNZR5,D1RETEND;設(shè)置 P1、 P2、P3 口狀態(tài);小燈循環(huán)點(diǎn)亮;中斷服務(wù)程序;小燈全亮;延時(shí)程序六、實(shí)驗(yàn)步驟1. 斷電,連接計(jì)算機(jī)、實(shí)驗(yàn)板2. 給計(jì)算機(jī)、實(shí)驗(yàn)板通電。3. 打開計(jì)算機(jī),進(jìn)入 Keil C51 開發(fā)環(huán)境。4. 正確設(shè)置通信口,連接好開發(fā)環(huán)境和實(shí)驗(yàn)板。5. 新建一個(gè)項(xiàng)目,并將該項(xiàng)目建立在指定的文件下。6. 新建一個(gè)

42、文件,存儲器的路徑與剛才建的項(xiàng)目相同。7. 將新建的文件添加到項(xiàng)目中,保存項(xiàng)目。8. 在編輯窗口輸入程序,對程序進(jìn)行匯編、生成和下載。9. 全速運(yùn)行程序,觀察 8 個(gè)發(fā)光管的變化情況和變化時(shí)間。10. 按鍵產(chǎn)生中斷后,從新開始,發(fā)光二極管的位置從什么地方開始,說明原因。七、思考題1. 請編寫程序,要求每按一次鍵,發(fā)光二極管位置右移1 次。ORG0000HLJMPMAINORG0013HLJMPZHORG0100HMAIN:MOVSP, #50HSETBIT1 ;外部中斷 1SETBEA ;CPU 開中斷SETBEX1MOVA, #07FHLP:MOVP1, A;輸出JB P3.3, ZHSJM

43、PLPZH: RR AMOVP1,ALCALLDELRETIDEL: MOVR5,#20D1:MOVR6,#20D2:MOVR7,#250DJNZR7, $DJNZR6, D2DJNZR5, D1RETEND2. 請編寫程序, 每按一次按鍵流水燈的流動(dòng)方向改變一次, 要求使用中斷技術(shù)處理按鍵。ORG0000H;定義下一條指令的地址LJMPMAIN;轉(zhuǎn)向主程序ORG0013H;安排外部中斷 1 處理程序的第一條指令LJMPKEYS;直接轉(zhuǎn)移到中斷處理程序ORG0100H;主程序起點(diǎn)MAIN:MOVSP,#40H;設(shè)置堆棧棧底指針SETBIT1;設(shè)置外部中斷 1 的中斷方式為下降沿中斷SETBEX

44、1;開放外部中斷 1SETBEA;開放總中斷MOVA, #01H;#01H 送累加器 AL1:MOVP2, A;累加器 A 中內(nèi)容送 P2 口MOVR7, #0FFH;#0FFH 送 R7 寄存器L3:MOVR6, #0FFH;#0FFH 送 R6 寄存器L2:DJNZR6, L2;R6寄存內(nèi)容-1,結(jié)果工0轉(zhuǎn)移至L2DJNZR7, L3;R7寄存內(nèi)容-1,結(jié)果工0轉(zhuǎn)移至L3JNBFX, L4;FX=0 時(shí)轉(zhuǎn)移到 L4RLA;累加器 A 中內(nèi)容左移一位SJMPL5;轉(zhuǎn)移至 L5L4:RRA;累加器 A 中內(nèi)容右移一位L5:SJMPL1;轉(zhuǎn)移至 L1;按鍵中斷程序;入口 :外部中斷 1;功能 :

45、確認(rèn)按鍵后改變方向標(biāo)志 FX 的狀態(tài)KEYS:;中斷處理程序入口MOVR7,#20H;首先延時(shí)去抖K1:MOVR6, #0FFHDJNZR6, $JBKEY,K2;延時(shí)完成后再檢測按鍵CPLFX;確認(rèn)按鍵按下 , 改變方向標(biāo)志位狀態(tài)K2: RETI;中斷結(jié)束返回KEYBITP3.3;定義按鍵變量FXBIT00H;定義位變量 ,用于判斷方向END;結(jié)束DJNZR7,K1實(shí)驗(yàn)七 定時(shí)顯示實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?. 掌握利用中斷方式和查詢方式實(shí)現(xiàn)定時(shí)的基本方法和技巧。2. 熟練掌握程序調(diào)試的基本方法和技巧。二、實(shí)驗(yàn)設(shè)備1. 裝有Keil C51卩Vision2集成開發(fā)環(huán)境、編程器軟件、在線下載軟件的計(jì)算機(jī)。2. 最小系統(tǒng)的實(shí)驗(yàn)板。3. 通用編程器三、實(shí)驗(yàn)內(nèi)容利用定時(shí)器0,方式1,通過P1 口連接的數(shù)碼管每隔1S顯示數(shù)字加1。四、實(shí)驗(yàn)原理定時(shí)器0、工作方式1,20mS循環(huán)50次即可達(dá)到1S。因?yàn)椋簍 =(216 - x )機(jī)器周期

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論