《《單片機原理》實驗指導(dǎo)書》由會員分享,可在線閱讀,更多相關(guān)《《單片機原理》實驗指導(dǎo)書(18頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
《單片機原理》
實驗指導(dǎo)書
杜學(xué)軍編寫 ***審定
安徽新華學(xué)院信息工程學(xué)院計算機科學(xué)與技術(shù)專業(yè)
2008年9月
前 言
本實驗指導(dǎo)書是為適應(yīng)各大、中專院校開設(shè)單片機原理與應(yīng)用方面的課程需做大量軟、硬件實驗的需要而編寫的。完成本實驗指導(dǎo)書中的實驗,可使學(xué)生基本掌握MCS-5l單片機的結(jié)構(gòu)原理、接口技術(shù)、程序設(shè)計技巧。指導(dǎo)書中詳細敘述了各實驗的目的、內(nèi)容,列出了接線圖、程序結(jié)構(gòu)框圖和清單。免除了主講教師和實驗輔導(dǎo)老師為設(shè)計、準備調(diào)試實驗線路和實驗程序所需的工作量,節(jié)約了寶貴的時間。
一、所有硬件實驗程序已固化在程序存儲器EEPRO
2、M中,選擇UP模式(SW1),我們可以脫機實驗,從小鍵盤輸入相應(yīng)實驗序號,再按F0/EX即可運行該實驗程序;也可采用聯(lián)機實驗,將實驗系統(tǒng)與PC機通過DICE-3000仿真器相連,聯(lián)機調(diào)試所有實驗程序。
二、實驗接線圖上的粗實線表示用戶在實驗時要用導(dǎo)線連接起來。
三、所有實驗都是相互獨立的,次序上也沒有固定的先后關(guān)系,在使用本書進行教學(xué)時,教師可根據(jù)教學(xué)要求,選擇相應(yīng)實驗。
四、對同一問題的解決辦法往往不是唯一的,歡迎在使用本書過程中提出更為優(yōu)秀的實驗方案,指出錯誤和不足,希望反饋給我們,以便及時修改。
200
3、8年 9 月
目 錄
實驗一 清零程序 4
實驗二 拆字程序 5
實驗三 拼字程序 6
實驗四 數(shù)據(jù)區(qū)傳送子程序 8
實驗五 數(shù)據(jù)排序?qū)嶒?10
實驗六 查找相同數(shù)個數(shù) 12
實驗七 P1口亮燈實驗 14
實驗八 P1口轉(zhuǎn)彎燈實驗 15
實驗一 清零程序
一、實驗?zāi)康?
1.掌握匯編語言設(shè)計和調(diào)試方法,熟悉鍵盤操作。
二、實驗儀器
1.單片機原理實驗箱、計算機
三、實驗原理
1.實驗程序框圖:
2.程序清單:
ORG 0000H
LJMP SE01
ORG 0640H
SE01
4、: MOV R0,#00H
MOV DPTR,#2000H ;(0000H)送DPTR
LOO1: CLR A
MOVX @DPTR,A ;0送(DPTR)
INC DPTR ;DPTR+1
INC R0 ;字節(jié)數(shù)加1
CJNE R0,#00H,LOO1 ;不到FF個字節(jié)再清
LOOP: SJMP LOOP
END
四、實驗內(nèi)容
1. 把2000H~20FFH的內(nèi)容清零。
五、實驗步驟
1. 用連續(xù)或單步方式運行程序,檢查2000~20FF中執(zhí)行程序前后的內(nèi)容變化。
六、思考題
1. 假使把2000H~20FFH中的內(nèi)容改成FF,,如何修改程序。
5、
實驗二 拆字程序
一、實驗?zāi)康?
1.掌握匯編語言設(shè)計和調(diào)試方法。
二、實驗儀器
1.單片機原理實驗箱、計算機
三、實驗原理
1.實驗程序框圖:
2.程序清單:
ORG 0000H
LJMP SE02
ORG 0660H
SE02: MOV DPTR,#2000H
MOVX A,@DPTR
MOV B,A ;(2000)→A→B
SWAP A ;交換
ANL A,#0FH ;屏蔽高位
INC DPTR
MOVX @DPTR,A ;送2001H
INC DPTR
MOV A,B
ANL A,#0FH ;(200
6、0)內(nèi)容屏蔽高位
MOVX @DPTR,A ;送2002H
LOOP: SJMP LOOP
END
四、實驗內(nèi)容
1.把2000H的內(nèi)容拆開,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把數(shù)據(jù)送顯示緩沖區(qū)時用。
五、實驗步驟
1.用連續(xù)或單步方式運行程序,檢查2000H~2002H中內(nèi)容變化情況。
六、思考題
1.如何用斷點方式調(diào)試本程序。
實驗三 拼字程序
一、實驗?zāi)康?
1.進一步掌握匯編語言設(shè)計和調(diào)試方法。
二、實驗儀器
1.單片機原理實驗箱、計算機
三、實驗原理
1.實驗程序框
7、圖:
2.程序清單:
ORG 0000H
LJMP START
ORG 0680H
START: MOV DPTR,#2000H
MOVX A,@DPTR
ANL A,#0FH ;(2000H)內(nèi)容屏蔽高位
SWAP A ;交換
MOV B,A ;保存
INC DPTR
MOVX A,@DPTR ;(2000H)內(nèi)容送A
ANL A,#0FH ;屏蔽高位
ORL A,B ;或
INC DPTR
MOVX @DPTR,A ;送2002H
SJMP $
END
四、實驗內(nèi)容
1.把2000H.2001H的低位分別送入2002H高
8、低位,一般本程序用于把顯示緩沖區(qū)的數(shù)據(jù)取出拼裝成一字節(jié)。
五、實驗步驟
1.單步或用斷點方式運行程序,檢查2002H內(nèi)容變化情況。
實驗四 數(shù)據(jù)區(qū)傳送子程序
一、實驗?zāi)康?
1.掌握RAM中的數(shù)據(jù)操作。
二、實驗儀器
1.單片機原理實驗箱、計算機
三、實驗原理
1.實驗程序框圖:
2.程序清單:
ORG 0000H
LJMP SE22
ORG 07B0H
SE22: MOV DPL,R3
MOV DPH,R2 ;建立源程序首址
MOVX A,@DPTR ;取數(shù)
MOV DPL,R5
MOV DPH,R4 ;目的地首
9、址
MOVX @DPTR,A ;傳送
CJNE R3,#0FFH,LO42
INC R2
LO42: INC R3 ;源地址加1
CJNE R5,#0FFH,LO43
INC R4
LO43: INC R5 ;目的地址加1
CJNE R7,#00H,LO44
CJNE R6,#00H,LO45 ;字節(jié)數(shù)減1
LOOP: SJMP LOOP
NOP
LO44: DEC R7
SJMP SE22
LO45: DEC R7
DEC R6
SJMP SE22 ;未完繼續(xù)
END
四、實驗內(nèi)容
1.把R2.R3源RAM區(qū)首址內(nèi)的R6.R7字節(jié)
10、數(shù)據(jù)傳送到R4.R5目的RAM區(qū)。
五、實驗步驟
1.在R2.R3中輸入源首址(例如0000H),R4.R5中輸入目的地址(例如2000H),R6.R7中輸入字節(jié)數(shù)(例如lFFFH),運行程序,檢查0000H~lFFFH中內(nèi)容是否和2000H~3FFFH中內(nèi)容完全一致。
實驗五 數(shù)據(jù)排序?qū)嶒?
一、實驗?zāi)康?
1.熟悉51指令系統(tǒng),掌握程序設(shè)計方法。
二、實驗儀器
1.單片機原理實驗箱、計算機
三、實驗原理
1.程序框圖:
2.程序清單:
ORG 0000H
LJMP QUE
ORG 09B0H
QUE: MOV R3,#50H
11、QUE1: MOV A,R3 ;指針送R0
MOV R0,A
MOV R7,#0AH ;長度送R7
CLR 00H ;清標志位
MOV A,@R0
QL2 : INC R0
MOV R2,A
CLR C
MOV 22H,@R0
CJNE A,22H,QL3 ;相等嗎?
SETB C
QL3: MOV A,R2
JC QL1 ;大于交換位置
SETB 00H
XCH A,@R0
DEC R0
XCH A,@R0
INC R0 ;大于交換位置
QL1: MOV A,@R0
DJNZ R7,QL2
JB 00H,QUE1 ;一
12、次循環(huán)中有交換繼續(xù)
LOOP: SJMP LOOP ;無交換退出
END
四、實驗內(nèi)容
1.編寫并調(diào)試一個排序子程序,其功能為用冒泡法將內(nèi)存RAM中幾個單字節(jié)無符號的正整數(shù),按從小到大的次序重新排列。
五、實驗步驟
1.將RAM 50H~5AH 中放入不等的數(shù)據(jù),用斷點方法運行本實驗程序后檢查50H~5AH中的內(nèi)容是否按從小到大的次序排列。
六、思考題
1.修改程序把50H~5AH中內(nèi)容從大到小排列。
實驗六 查找相同數(shù)個數(shù)
一、實驗?zāi)康?
1.熟悉匯編語言編程。
二、實驗儀器
1.單片機原理實驗箱、計算機
三、實驗原理
1.實驗程序框圖
13、:
2.程序清單:
ORG 0000H
LJMP L5800
ORG 0AA0H
L5800: MOV R0,#10H ;查找16個字節(jié)
MOV R1,#00H
MOV DPTR,#2000H
L5811: MOVX A,@DPTR
CJNE A,#00H,L5816 ;取出內(nèi)容與00H相等嗎?
INC R1 ;取出個數(shù)加1
L5816: INC DPTR
DJNZ R0,L5811 ;未完繼續(xù)
MOV DPTR,#2100H
MOV A,R1
MOVX @DPTR,A ;相同數(shù)的個數(shù)送2100H
L581E: SJMP L581E
14、END
四、實驗內(nèi)容
1.在2000H~200FH的N個單元中填入零,運行本程序后檢查2100H中是否為N。
五、實驗步驟
1.在2000H~200FH的幾個單元中填入零,運行本程序后檢查2100H中是否是幾個單元數(shù)。
六、思考題
1.修改程序,查找其它內(nèi)容。
實驗七 P1口亮燈實驗
一、實驗?zāi)康?
1.學(xué)習(xí)P1口的使用方法。
2.學(xué)習(xí)延時子程序的編寫。
二、實驗儀器
1.單片機原理實驗箱、計算機
三、實驗原理
1.實驗程序框圖:
2.程序清單
ORG 0000H
LJMP SE18
ORG 0790H
SE18
15、: MOV P1,#0FFH ;送P1口
LO34: MOV A,#0FEH ;L1發(fā)光二極管點亮
LO33: MOV P1,A
LCALL SE19 ;延時
RL A ;左移位
SJMP LO33 ;循環(huán)
ORG 07A0H
SE19: MOV R6,#0A0H
LO36: MOV R7,#0FFH
LO35: DJNZ R7,LO35
DJNZ R6,LO36 ;延時
RET
END
四、實驗內(nèi)容
1. P1口輸出口,接八只發(fā)光二極管,編寫程序,使發(fā)光二極管循環(huán)點亮。
五、實驗步驟
1. P1.0~P1.7用插針連至L1~L8,運行程序后,觀
16、察發(fā)光二極管閃亮移位情況。
六、思考題
1.改變延時常數(shù),使發(fā)光二極管閃亮?xí)r間改變。
2.修改程序,使發(fā)光二極管閃亮移位方向改變。
實驗八 P1口轉(zhuǎn)彎燈實驗
一、實驗?zāi)康?
1.進一步了解P1口的使用,學(xué)習(xí)匯編語言編程方法及調(diào)試技巧。
二、實驗儀器
1.單片機原理實驗箱、計算機
三、實驗原理
1.實驗程序框圖:
2.程序清單:
ORG 0000H
LJMP PX00
ORG 0C30H
PX00: MOV P1,#0FFH ;初始化
PX03: MOV A,P1
MOV B,A
ANL A,#03H
CJNE A,#
17、01H,PX01 ;滿足只是P1.0為高條件?
JB 00H,PX04 ;閃爍標志位
CLR P1.4
CLR P1.5 ;開右燈
SETB P1.6
SETB P1.7 ;關(guān)左燈
MOV R2,#20H
LCALL DELY ;延時
SETB 00H ;置標志位
LJMP PX03 ;繼續(xù)查找狀態(tài)
PX04: SETB P1.4
SETB P1.5
SETB P1.6 ;關(guān)燈
SETB P1.7
MOV R2,#20H
LCALL DELY ;延時
CLR 00H ;清標志位
AJMP PX03 ;繼續(xù)查找狀態(tài)
PX01:
18、CJNE A,#02H,PX02 ;滿足只是P1.1為高條件嗎?
JB 01H,PX05 ;判標志位
SETB P1.4
SETB P1.5 ;開左燈
CLR P1.6
CLR P1.7 ;關(guān)右燈
MOV R2,#20H
LCALL DELY ;延時
SETB 01H ;置標志位
LJMP PX03 ;繼續(xù)查找
PX05: SETB P1.4
SETB P1.5
SETB P1.6 ;關(guān)燈
SETB P1.7
MOV R2,#20H
LCALL DELY ;延時
CLR 01H ;清標志位
LJMP PX03 ;繼續(xù)查找狀態(tài)
19、QPX02: SETB P1.4
SETB P1.5
SETB P1.6 ;關(guān)燈
SETB P1.7
LJMP PX03 ;繼續(xù)
DELY: PUSH 02H
DEL2: PUSH 02H
DEL3: PUSH 02H ; 延時
DEL4: DJNZ R2,DEL4
POP 02H
DJNZ R2,DEL3
POP 02H
DJNZ R2,DEL2
POP 02H
DJNZ R2,DELY
RET
END
四、實驗內(nèi)容
1. P1.0 開關(guān)接5V,右轉(zhuǎn)彎燈閃亮,P1.1開關(guān)接5V時左轉(zhuǎn)彎燈閃亮,P1.0,P1.1開關(guān)同時接5V或接地時,轉(zhuǎn)彎燈均不閃亮。
五、實驗步驟
1. P1.0 接K1,P1.1接K2,P1.4~P1.7接L1、L5、L9、L13,連續(xù)運行本程序,應(yīng)看到轉(zhuǎn)彎燈正確閃亮,在用單步方式調(diào)試本程序時需修改延時子程序,(例可把延時程序第一個字節(jié)改成返回指令22H),以便觀察。
18