harbin institute of technology
微控制器原理與應用
實驗報告
2023年4月
軟體實驗
在軟體實驗部分,通過實驗程式的除錯,使學生熟悉mcs-51的指令系統,了解程式設計過程,掌握組合語言設計方法以及如何使用實驗系統提供的除錯手段來排除程式錯誤。
實驗一清零程式
一、實驗目的
掌握組合語言設計和除錯方法,熟悉鍵盤操作。
二、實驗內容
把2000~20ffh的內容清零。
三、程式框圖
四、實驗過程
實驗中利用movx語句,將外部儲存器指定內容清零。利用資料指標dptr完成資料傳送工作。程式採用用迴圈結構完成,r0移動單元的個數,可用cjne比較語句判斷迴圈是否結束。
五、實驗結果及分析
清零前清零後
問題回答:2000h~20ffh中的內容清零前為記憶體裡的隨機數,清零後全變為0。
六、實驗源程式
*** 0000h
ajmp s01
*** 0640h
s01: mov r0, #00h
mov dptr, #2000h
clr a
loop: movx @dptr, a
inc dptr
djnz r0, loop
sjmp $
end實驗二拆字程式
一、實驗目的
掌握組合語言設計和除錯方法。
二、實驗內容
把2000h的內容拆開,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程式用於把資料送顯示緩衝區時用。
三、程式框圖
四、實驗過程
將暫存器中內容送入2000h,分別將高低四位移到低位,將高四位置零然後移入2001h和2002h中。利用movx語句、dptr指標可實現資料的傳送,利用高低四位交換語句swap和與語句anl可進行對高低位的清零。
五、實驗結果及分析
拆字前拆字後
問題回答:如果將2001h、2002h高位置1,程式中只需將anl a, #0fh改為orl a, #0f0h。
六、實驗源程式
*** 0000h
ajmp s02
*** 0660h
s02: mov dptr, #2000h
movx a, @dptr
swap a
anl a, #0fh
inc dptr
movx @dptr, a
mov dptr, #2000h
movx a, @dptr
anl a, #0fh
inc dptr
inc dptr
movx @dptr, a
end實驗三拼字程式
一、實驗目的
進一步掌握組合語言設計和除錯方法。
二、實驗內容
把2000h、2001h的低位分別送入2002h高低位,一般本程式用於把顯示緩衝區的資料取出拼裝成乙個位元組。
三、程式框圖
四、實驗過程
本實驗主要應用與語句anl對高四位進行遮蔽,利用swap語句將2000h低四位交換到高四位,再用或orl語句將2000h和2001h的高低四位組合在一起送入2002h中,從而實現兩個數低四位組合。
五、實驗結果及分析
拼字前拼字後
問題回答:本實驗執行程式後2002h的最終內容是45h,即2000h單元中低四位「4」作為2002h的高四位,2001h的低四位「5」作為2002h的低四位。
六、實驗源程式
*** 0000h
ajmp s03
*** 0680h
s03: mov dptr, #2000h
movx a, @dptr
anl a, #0fh
swap a
mov b, a
inc dptr
movx a, @dptr
anl a, #0fh
orl a, b
inc dptr
movx @dptr, a
end實驗四資料區傳送子程式
一、實驗目的
掌握ram中的資料操作。
二、實驗內容
把r2、r3源ram區首址內的r6、r7位元組資料傳送到r4、r5目的ram區。
三、程式框圖
四、實驗過程
實驗要求將一段記憶體中資料移動到另一段記憶體中,本次實驗通過暫存器內容截圖顯示,是把0000h單元開始ffh個位元組的內容送到3000h開始的連續資料單元中。先把初始位址分別放入源位址暫存器和目的位址暫存器,然後利用一組暫存器作為需轉移資料區長度計數器,開始資料轉移迴圈。每進行一次轉移位址暫存器向下加一,計數暫存器內容減一,計數暫存器內容為0退出迴圈移動結束。
由於計數以及位址暫存器是由兩個八位暫存器組成,需要在加一減一時對其高位元組和低位元組進行判斷。加一時若低位元組加一變為0,則高位元組加一,否則低位元組加一高位元組不變。減一時若低位元組已是0則高位元組減一,同時低位元組變為0ffh,否則低位元組減一高位元組不變。
五、實驗結果及分析
源記憶體段中內容目的記憶體段中移動前內容
目的記憶體段中移動後內容
問題回答:r4、r5所定義的目的位址單元內容在轉移之前為隨機數,轉移後內容與以r2、r3開始的的源位址單元中256個位元組內容相同,即實現了資料的傳送。
六、實驗源程式
*** 0000h
ajmp s04
*** 07b0h
s04: mov r3, #00h
mov r2, #00h
mov r4, #30h
mov r5, #00h
mov r6, #01h
mov r7, #00h
loop: mov dpl, r3
mov dph, r2
movx a, @dptr
mov dpl, r5
mov dph, r4
movx @dptr, a
clr c
mov a, r3
add a, #01h
mov r3, a
mov a, r2
addc a, #00h
mov r2, a
clr c
mov a, r5
add a, #01h
mov r5, a
mov a, r4
addc a, #00h
mov r4, a
djnz r7, loop
djnz r6, loop
sjmp $
end實驗六查詢相同數個數
一、實驗目的
熟悉組合語言程式設計。
二、實驗內容
在2000~200fh中查出有幾個位元組是零,把個數放在2100h中。
三、程式框圖
四、實驗過程
實驗中利用r0放置需查詢段長度,即從2000h單元開始,每次檢查完乙個單元r0減一,指標下移,直到r0等於0結束迴圈。r1存放等於零資料的個數,程式中利用等於零跳轉指令jz,實現找到0則r1加一計數的功能。迴圈終止後,將r1內容存入2100h中即可。
五、實驗結果及分析
2000h到200fh中的內容
2100h顯示找3個0
問題回答:若需查詢0ffh,只需修改語句jz loop1,將該語句改為cjnz r0, #0ffh, loop1即可,即資料等於0ffh時跳轉到計數+1的程式段進行計數。
六、實驗源程式
*** 0000h
ljmp s06
*** 0aa0h
s06: mov dptr, #2000h
mov r0, #10h
mov r1, #00h
loop: movx a, @dptr
jz loop1
inc dptr
dec r0
ajmp loop2
微控制器實驗報告
1福建農林大學計算機與資訊學院 資訊工程類 實驗報告 2013 年 10 月 28 日 實驗專案列表 福建農林大學計算機與資訊學院資訊工程類實驗報告 系 電子資訊工程專業 電子資訊工程年級 2011級 姓名 詹緩輝學號 3116004094實驗課程 微控制器技術 實驗室號 田c513實驗時間 10....
微控制器實驗報告
一 實驗題目 試編寫一段程式,其功能為將21h單元的內容8位分別依次存放到從22h開始的8單元中。二 keil 0000h jmp start 0100h start mov 21h,8 mov a 21h 取出21中的數 mov r0,22h 初始化 mov r1,7h 迴圈次數為7 loop r...
微控制器實驗報告
學校 合肥工業大學 班級 電腦科學與技術 學號 姓名 實驗1 系統認識實驗 1 實驗目的 1 了解zy15mcu12bc2微控制器實驗開發裝置的接線與安排。掌握實驗箱內撥位開關kf,kc的使用方法。2 通過例項程式的編輯 編譯 鏈結及除錯,熟悉keilc51軟體的使用方法和基本操作。3 教育學生愛撫...