單片機(jī)導(dǎo)論實(shí)驗(yàn)講義_第1頁(yè)
單片機(jī)導(dǎo)論實(shí)驗(yàn)講義_第2頁(yè)
單片機(jī)導(dǎo)論實(shí)驗(yàn)講義_第3頁(yè)
單片機(jī)導(dǎo)論實(shí)驗(yàn)講義_第4頁(yè)
單片機(jī)導(dǎo)論實(shí)驗(yàn)講義_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章第一章 單片機(jī)軟件實(shí)驗(yàn)單片機(jī)軟件實(shí)驗(yàn)實(shí)驗(yàn)一實(shí)驗(yàn)一 內(nèi)存操作內(nèi)存操作1.實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康恼莆諗?shù)據(jù)傳送指令;掌握各種數(shù)據(jù)傳送指令的尋址方式;熟練運(yùn)用 keil 環(huán)境對(duì)匯編程序進(jìn)行調(diào)試;掌握數(shù)據(jù)傳送、復(fù)制等程序的設(shè)計(jì)與調(diào)試方法。2.預(yù)習(xí)要求預(yù)習(xí)要求理解數(shù)據(jù)傳送指令和循環(huán)指令的使用;理解如何對(duì)內(nèi)部寄存器、內(nèi)部 RAM、外部 RAM 的讀寫(xiě);理解各種尋址方式,尤其是較為抽象的變址尋址及相對(duì)尋址的方式;認(rèn)真預(yù)習(xí)本實(shí)驗(yàn)內(nèi)容,自行編寫(xiě)程序,填寫(xiě)實(shí)驗(yàn)報(bào)告。3.實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備計(jì)算機(jī) 1 臺(tái); 4.基礎(chǔ)型實(shí)驗(yàn)內(nèi)容基礎(chǔ)型實(shí)驗(yàn)內(nèi)容下列程序的功能是給外部 RAM800080FFH 的 256 個(gè)單元的內(nèi)容賦值,賦

2、值的內(nèi)容取決于程序中 A 的賦值。在 Keil 環(huán)境運(yùn)行該程序,并觀察寄存器及內(nèi)存單元的變化。 ORG 0000HSTART EQU 8000HMAIN: MOV DPTR, #START ;起始地址 MOV R0,#0 ;設(shè)置 256 字節(jié)計(jì)數(shù)值 MOV A,#1H是設(shè)置塊長(zhǎng)度地址加 1當(dāng)前地址內(nèi)容清零是否清除完? 否結(jié)束設(shè)置塊起始地址Loop: MOVX DPTR,A INC DPTR ;指向下一個(gè)地址 DJNZ R0,Loop ;計(jì)數(shù)值減 1 NOP SJMP $ END下列程序?qū)?3000H 起始的 256 個(gè)字節(jié)存儲(chǔ)塊移動(dòng)到 4000H 起始的 256 個(gè)字節(jié)存儲(chǔ)塊,在 Keil 環(huán)

3、境運(yùn)行如下程序,觀察寄存器及存儲(chǔ)單元的變化。ORG 0000H MOV DPTR,#3000HMOV A,#01HMOV R5,#OLOOP: MOVX DPTR,AINC DPTRDJNZ R5,LOOP MOV R0,#30H MOV R1,#00H MOV R2,#40H MOV R3,#00H MOV R7,#0LOOP1: MOV DPH,R0 MOV DPL,R1 MOVX A,DPTR MOV DPH,R2設(shè)置塊的目標(biāo)地址設(shè)置移動(dòng)長(zhǎng)度從源地址取數(shù)是否移動(dòng)完?保存到目標(biāo)地址中源地址加 1目標(biāo)地址加 1結(jié)束設(shè)置塊的源地址 MOV DPL,R3 MOVX DPTR,AINC R1INC

4、 R3 DJNZ R7,LOOP1 SJMP $ END5.設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容在 keil 環(huán)境修改內(nèi)部 RAM 30H 3FH 的內(nèi)容分別為#00H-#0FH,設(shè)計(jì)程序?qū)崿F(xiàn)將內(nèi)部 RAM30H-3FH 到 40H-4FH 的數(shù)據(jù)塊拷貝。在 keil 環(huán)境修改內(nèi)部 RAM 30H 3FH 的內(nèi)容分別為#00H-#0FH,設(shè)計(jì)程序?qū)崿F(xiàn)將片內(nèi) 30H3FH 單元的內(nèi)容復(fù)制到片外 1030H103FH 中。在 keil 環(huán)境修改內(nèi)部 RAM 30H 3FH 的內(nèi)容分別為#00H-#0FH,設(shè)計(jì)程序?qū)崿F(xiàn)將內(nèi)部 RAM30H 3FH 內(nèi)容逆序拷貝到外部數(shù)據(jù) XRAM:0000H 000FH 中

5、。使用單步、斷點(diǎn)方式調(diào)試程序,查看特殊功能寄存器、內(nèi)部數(shù)據(jù) RAM、外部數(shù)據(jù)空間的變化。實(shí)驗(yàn)二實(shí)驗(yàn)二 數(shù)制及代碼轉(zhuǎn)換數(shù)制及代碼轉(zhuǎn)換1.實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康牧私馕C(jī)系統(tǒng)中的數(shù)制與代碼表示方法;掌握計(jì)算機(jī)中使用的各種代碼轉(zhuǎn)換方法;掌握實(shí)現(xiàn)分支、循環(huán)的指令及其程序的編寫(xiě)方法;2.預(yù)習(xí)要求預(yù)習(xí)要求理解十進(jìn)制數(shù)、十六進(jìn)制數(shù)的數(shù)制表示方法;理解 BCD 碼、ASCII 碼編碼方式;如何實(shí)現(xiàn)十六進(jìn)制數(shù)與 BCD 碼之間的轉(zhuǎn)換;如何實(shí)現(xiàn) ASCII 碼與 BCD 碼之間的轉(zhuǎn)換。3.實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備計(jì)算機(jī) 1 臺(tái)。 4.基礎(chǔ)型實(shí)驗(yàn)內(nèi)容基礎(chǔ)型實(shí)驗(yàn)內(nèi)容以下程序完成單字節(jié)的 ASCII 碼到十六進(jìn)制數(shù)轉(zhuǎn)換,完成空白處程序

6、填寫(xiě),并在Keil 環(huán)境運(yùn)行程序,觀察寄存器及內(nèi)存單元的變化。RESULT EQU 30H ORG 0000H MOV A,#41H;“A”的 ASCII 碼 CLR C SUBB A, ; 轉(zhuǎn)換為十六進(jìn)制值 AMOV RESULT,A LJMP $END 以下程序完成單字節(jié)的 BCD 碼到十六進(jìn)制數(shù)轉(zhuǎn)換,,在 Keil 環(huán)境運(yùn)行程序,觀察寄存器及內(nèi)存單元的變化。RESULT EQU 30H ORG 0000H MOV A,#23HMOV R0,AANL A,#0F0HSWAP A MOV B,#0AH MUL AB MOV RESULT,A ;轉(zhuǎn)換高位 MOV A,R0 MOV B,#0FH

7、ADD A,RESULT MOV RESULT,A ; 轉(zhuǎn)換低位 SJMP $END 以下程序?qū)巫止?jié)十六進(jìn)制數(shù) A 的值轉(zhuǎn)換為十進(jìn)制數(shù),存放在 30H32H 中,完成空白處程序填寫(xiě),并在 Keil 環(huán)境運(yùn)行程序,觀察寄存器及內(nèi)存單元的變化。RESULT EQU 30H ORG 0000H MOV A,#7BH MOV B,# DIV AB MOV RESULT,A ;除以 100 得百位數(shù) MOV A,B MOV B,# MOV RESULT+1,A ;除以 10 得十位數(shù) MOV RESULT+2,B ;余數(shù)為個(gè)位數(shù) SJMP $END 5.設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容設(shè)一串字母的 ASC

8、II 存于 30H 起始的單元中,設(shè)計(jì)程序判斷字母是否為大寫(xiě)字母,是則將大寫(xiě)字母的 ASCII 字符轉(zhuǎn)換成小寫(xiě)字母的 ASCII 字符,為小寫(xiě)則不轉(zhuǎn)換。將單字節(jié)十六進(jìn)制數(shù) D8H 轉(zhuǎn)換為十進(jìn)制數(shù),存放在 30H33H 中。 ,設(shè)計(jì)程序,將十六進(jìn)制數(shù) 614EH 轉(zhuǎn)換成 ASCII 碼,使用單步、斷點(diǎn)方式調(diào)試程序,查看結(jié)果。實(shí)驗(yàn)三實(shí)驗(yàn)三 算術(shù)運(yùn)算算術(shù)運(yùn)算1.實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康恼莆账阈g(shù)運(yùn)算類、邏輯運(yùn)算類指令的使用方法;掌握 BCD 碼、補(bǔ)碼數(shù)制表示方法;掌握運(yùn)算程序及循環(huán)程序的編寫(xiě)和調(diào)試方法。2.預(yù)習(xí)要求預(yù)習(xí)要求理解 8051 單片機(jī)的算術(shù)運(yùn)算指令;理解補(bǔ)碼表示數(shù)值的方法;理解壓縮、非壓縮 BCD

9、碼表示數(shù)值的方法;如何實(shí)現(xiàn)多位數(shù)的 BCD 碼加、乘、除運(yùn)算;如何實(shí)現(xiàn)多位數(shù)的 BCD 碼減法運(yùn)算;預(yù)習(xí)本實(shí)驗(yàn)內(nèi)容,以及相關(guān)課程內(nèi)容。3.實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備計(jì)算機(jī) 1 臺(tái)。4.基礎(chǔ)型實(shí)驗(yàn)內(nèi)容基礎(chǔ)型實(shí)驗(yàn)內(nèi)容以下程序完成單字節(jié)的 BCD 碼加法功能,完成空白處程序填寫(xiě),并在 Keil 環(huán)境運(yùn)行程序,觀察寄存器及內(nèi)存單元的變化。RESULT EQU 30H ORG 0000H MOV A,#99HMOV B,#99HADD , ; BCD 碼相加并得到 BCD 碼結(jié)果 MOV RESULT,A MOV A,#00H A,#00HMOV RESULT+1,A;高位處理 LJMP $END下列程序完成多字

10、節(jié) BCD 碼加法運(yùn)算。內(nèi)部 RAM30H 開(kāi)始的 4 字節(jié)長(zhǎng)的 BCD碼和外部 RAM 1000H 開(kāi)始的 4 字節(jié)長(zhǎng)的 BCD 碼相加,結(jié)果放在 1100H 開(kāi)始的單元中(從低字節(jié)到高字節(jié)) 。 ORG 0000H CLR C MOV R5, #04H MOV R0,#30H MOV R1,#10H MOV R2,#00H MOV R3,#11H MOV R4,#00HL1:MOV DPH,R1 MOV DPL,R2 MOVX A,DPTR ADDC A, R0 DA A ;十進(jìn)制調(diào)整 MOV DPH,R3 MOV DPL,R4 MOVX DPTR,A INC R2 INC R4 INC

11、R0L2:DJNZ R5, L1 JNC L3 MOV DPTR,#1104H ;有進(jìn)位則結(jié)果的第五個(gè)字節(jié)置 1 MOV A,#01H MOVX DPTR,AL3:NOP END5.設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容設(shè)計(jì)程序,實(shí)現(xiàn)任意字節(jié)壓縮 BCD 碼的相加,使用單步、斷點(diǎn)方式調(diào)試程序,查看結(jié)果。設(shè)計(jì)程序,實(shí)現(xiàn)多字節(jié)十六進(jìn)制數(shù)的減法 123456H005634H,使用單步、斷點(diǎn)方式調(diào)試程序,查看結(jié)果。在內(nèi)部 RAM 的 30H 單元開(kāi)始,有一串帶符號(hào)數(shù)據(jù)塊,其長(zhǎng)度在 10H 單元中。編程求其中正數(shù)與負(fù)數(shù)的和,并分別存入 2CH 與 2EH 開(kāi)始的 2 個(gè)單元中。 (負(fù)數(shù)存放形式為補(bǔ)碼) 。請(qǐng)分別在

12、 30H 單元開(kāi)始寫(xiě)入 5 個(gè)正數(shù)、11 個(gè)負(fù)數(shù)和 9 個(gè)正數(shù)、7 個(gè)負(fù)數(shù)的情況,記錄程序運(yùn)行結(jié)果。例如:輸入-69H,65H,-7H, -25H ,-47H,56H, -3H,17H,6H,-5H,-45H, -1H, -57H, 23H ,-5H,-13H 則正數(shù)的和 89,負(fù)數(shù)的和-199H。實(shí)驗(yàn)四實(shí)驗(yàn)四 比較和比較和查表查表1.實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康恼莆毡容^指令的使用及循環(huán)程序的編寫(xiě)方法;掌握字符查找的思路和算法;理解并能運(yùn)用查表和散轉(zhuǎn)指令。2.預(yù)習(xí)要求預(yù)習(xí)要求理解掌握比較程序的設(shè)計(jì)思路;理解多分支結(jié)構(gòu)程序的編程方法;預(yù)習(xí)本節(jié)實(shí)驗(yàn)內(nèi)容,編寫(xiě)程序及實(shí)驗(yàn)預(yù)習(xí)報(bào)告。3.實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備 計(jì)算機(jī) 1

13、 臺(tái)。4.基礎(chǔ)型實(shí)驗(yàn)內(nèi)容基礎(chǔ)型實(shí)驗(yàn)內(nèi)容以下子程序完成一個(gè)兩位十六進(jìn)制數(shù)到 ASCII 碼的轉(zhuǎn)換,數(shù)值存放在 R2 中,轉(zhuǎn)換結(jié)果地位存于 R2,高位存于 R3。用 PC 做基址實(shí)現(xiàn)。 ORG 0000HHEXA: MOV R2,#1BH MOV A,R2 ANL A,#0FH ADD A,#09H MOVC A,A+PC XCH A,R2 ANL A,#0F0H SWAP A ADD A,#02H MOVC A,A+PC MOV R3,A RETTAB: DB 0,1,2,3,4 DB 5,6,7,8,9 DB A,B,C,D,E,F END5.設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容分別用近程查表指令和遠(yuǎn)

14、程查表指令,查找 R3 內(nèi)容的平方值。R3 內(nèi)容小于等于0FH,即平方值為單字節(jié)數(shù)據(jù)。在外部 RAM 1000H 開(kāi)始處有 10H 個(gè)帶符號(hào)數(shù),請(qǐng)找出其中的最大值和最小值,分別存入內(nèi)部 RAM 的 MAX、MIN 單元。分別用近程查表指令和遠(yuǎn)程查表指令,查找 R3 內(nèi)容的平方值。平方值為兩個(gè)字節(jié)數(shù)據(jù)。第二章第二章單片機(jī)硬件實(shí)驗(yàn)單片機(jī)硬件實(shí)驗(yàn)硬件實(shí)驗(yàn)需要連接計(jì)算機(jī)與 80C51 的仿真器,在實(shí)驗(yàn)前要理解相關(guān)的硬件電路,按實(shí)驗(yàn)指導(dǎo)書(shū)中的硬件連接方法正確連線,才能保證實(shí)驗(yàn)的正常進(jìn)行,得到正確結(jié)果。硬件實(shí)驗(yàn)時(shí)要注意以下幾點(diǎn):1、根據(jù)實(shí)驗(yàn)指導(dǎo)書(shū)正確進(jìn)行模塊與模塊之間接口的連接;注意一定要在實(shí)驗(yàn)系注意一定

15、要在實(shí)驗(yàn)系統(tǒng)上電前進(jìn)行接口的連接,千萬(wàn)不能帶電操作。統(tǒng)上電前進(jìn)行接口的連接,千萬(wàn)不能帶電操作。2、用串行數(shù)據(jù)通信線連接計(jì)算機(jī)與仿真器,把仿真器插到模塊的鎖緊插座中,請(qǐng)注意仿真器的方向:缺口朝上。請(qǐng)注意仿真器的方向:缺口朝上。 (斷電時(shí)進(jìn)行)3、進(jìn)行 KEIL 軟件的設(shè)置(KEIL 軟件使用見(jiàn)附錄一) ,編輯匯編源程序,編譯,直至編譯無(wú)誤。4、打開(kāi) 80C51 模塊電源和總電源,可以單步或跟蹤或全速方式運(yùn)行程序,同時(shí)觀察運(yùn)行結(jié)果(注意:要停止調(diào)試,按注意:要停止調(diào)試,按 THKLTHKLC51C51 仿真器上的仿真器上的 ResetReset 按鍵按鍵) 。5、也可以把源程序編譯成可執(zhí)行文件,把

16、可執(zhí)行文件用 ISP 燒錄器燒錄到89S52/89S51 芯片中運(yùn)行(注意:芯片缺口朝上;不建議使用) 。 (ISP 燒錄器的使用查看附錄二)注:1、在做完實(shí)驗(yàn)時(shí)記得養(yǎng)成一個(gè)好習(xí)慣:把相應(yīng)單元的短路帽和電源開(kāi)關(guān)還原到原來(lái)的位置!以下將不再重述。2、不要插拔實(shí)驗(yàn)系統(tǒng)上的模塊和芯片,不要打開(kāi)與本實(shí)驗(yàn)不相關(guān)模塊的電源。注意注意不能帶電進(jìn)行模塊之間導(dǎo)線的連接!不能帶電進(jìn)行模塊之間導(dǎo)線的連接!實(shí)驗(yàn)一實(shí)驗(yàn)一I/O 控制實(shí)驗(yàn)控制實(shí)驗(yàn)1.實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康恼莆栈?IO 輸入輸出操作指令;熟練運(yùn)用 keil 環(huán)境對(duì)硬件接口進(jìn)行調(diào)試。2.預(yù)習(xí)要求預(yù)習(xí)要求理解 51 單片機(jī) IO 的輸入、輸出控制方式;理解 P0、

17、P1、P2、P3 口做為普通的IO 口有何區(qū)別。理解實(shí)現(xiàn)軟件延時(shí)程序設(shè)計(jì)的延時(shí)時(shí)間估算;認(rèn)真預(yù)習(xí)本節(jié)實(shí)驗(yàn)內(nèi)容,設(shè)計(jì)出器件之間的實(shí)驗(yàn)連接線,自行編寫(xiě)程序,填寫(xiě)實(shí)驗(yàn)報(bào)告。3.實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備計(jì)算機(jī) 1 臺(tái); ZDGDTH-1 型 80C51 實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng) 1 套;2 號(hào)導(dǎo)線 4 條;8P 數(shù)據(jù)線 1 條。4.基礎(chǔ)型實(shí)驗(yàn)內(nèi)容基礎(chǔ)型實(shí)驗(yàn)內(nèi)容8 位邏輯電平顯示的接口電路設(shè)計(jì)如圖 1-1 所示,用 P1 口做輸出口,接八位邏輯電平顯示,程序功能使發(fā)光二極管從右到左輪流循環(huán)點(diǎn)亮。用 8P 數(shù)據(jù)線將 D2 區(qū) 80C51/C8051F020MCU 模塊的 JD1(P1 口)與 A5 區(qū) 8 位邏輯電平顯示模塊

18、 JD1A5 相連。在 Keil 環(huán)境運(yùn)行該程序,觀察發(fā)光二極管顯示情況。圖 1-1 8 位八位邏輯電平顯示接口電路 ORG 0LOOP: MOV A, #0FEHMOV R2,#8OUTPUT: MOV P1,ARL AACALL DELAYDJNZ R2,OUTPUTLJMP LOOPDELAY: MOV R6,#0 ;延時(shí)程序MOV R7,#0DELAYLOOP: DJNZ R6,DELAYLOOPDJNZ R7,DELAYLOOPRETEND8 位撥動(dòng)開(kāi)關(guān)的接口電路設(shè)計(jì)如圖 1-2 所示,假設(shè)采用 P1 口控制 LED 顯示,P2口接收撥碼開(kāi)關(guān)的輸入值,用 8P 數(shù)據(jù)線將 D2 區(qū) 8

19、0C51/C8051F020MCU 模塊的 JD1(P1 口) 、JD1(P2 口)分別與 A5 區(qū)八位邏輯電平顯示模塊 JD1A5、C6 區(qū) 8 位撥動(dòng)開(kāi)關(guān)模塊 JD1 C6 相連。在 Keil 環(huán)境運(yùn)行該程序,使用單步、斷點(diǎn)、連續(xù)運(yùn)行調(diào)試程序,查看結(jié)果。開(kāi)始設(shè)置初始值設(shè)移位次數(shù)數(shù)據(jù)輸出左一位延時(shí)移位次數(shù)完成?是否P1 口循環(huán)點(diǎn)燈程序框圖圖 1-2 撥碼開(kāi)關(guān)接口電路ORG0000HLL: MOVP2,#0FFH NOP MOVA, P2NOP MOVP1,ALJMPLLEND如圖 1-3 所示,假設(shè)采用 P1.0 口控制外部 LED,撥動(dòng)開(kāi)關(guān)控制外部中斷,用二號(hào)導(dǎo)線將 D2 區(qū) 80C51/C8051F020MCU 模塊的 P

溫馨提示

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

評(píng)論

0/150

提交評(píng)論