![單片機導論實驗指導書09版_第1頁](http://file4.renrendoc.com/view/759db847c51aa8c1a36ce3c826dbfc64/759db847c51aa8c1a36ce3c826dbfc641.gif)
![單片機導論實驗指導書09版_第2頁](http://file4.renrendoc.com/view/759db847c51aa8c1a36ce3c826dbfc64/759db847c51aa8c1a36ce3c826dbfc642.gif)
![單片機導論實驗指導書09版_第3頁](http://file4.renrendoc.com/view/759db847c51aa8c1a36ce3c826dbfc64/759db847c51aa8c1a36ce3c826dbfc643.gif)
![單片機導論實驗指導書09版_第4頁](http://file4.renrendoc.com/view/759db847c51aa8c1a36ce3c826dbfc64/759db847c51aa8c1a36ce3c826dbfc644.gif)
![單片機導論實驗指導書09版_第5頁](http://file4.renrendoc.com/view/759db847c51aa8c1a36ce3c826dbfc64/759db847c51aa8c1a36ce3c826dbfc645.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
ZDGDTH-1型80C51/C8051/嵌入式(ARM9/CPLD/實驗開發(fā)系統(tǒng)實驗指導書(80C51分冊版本:V1.0浙江大學光電系2009年9月!!實驗警告!!為了你的生命安全實驗過程中不得觸摸電源插、開關等交流電源部位!!!為了實驗設備的安全實驗過程中請做到1、不在上電后插、拔接頭和連線!!!2、上電后不要用手或金屬觸碰實驗板上的器件!!!3、硬件實驗中若要改變跳線,請在斷電狀態(tài)下操作!!!4、不要隨意按、拔與實驗無關的按鍵、短路塊與開關等!!!目錄第一章單片機軟件實驗.........................................................................................1實驗一內(nèi)存操作.........................................................................................1實驗二數(shù)制及代碼轉(zhuǎn)換.............................................................................4實驗三算術運算.........................................................................................6實驗四比較和查表.....................................................................................8第二章單片機硬件實驗.....................................................................................11實驗一I/O口控制實驗...............................................................................12實驗二定時器計數(shù)器實驗.........................................................................17實驗三按鍵與顯示實驗.............................................................................21實驗四并行AD、DA實驗.............................................................................26附錄一THKL-C51仿真器聯(lián)機及軟件的使用說明...............................................29附錄二ISP下載器使用說明.................................................................................49第一章單片機軟件實驗實驗一內(nèi)存操作1.實驗目的①掌握數(shù)據(jù)傳送指令;②掌握各種數(shù)據(jù)傳送指令的尋址方式;③熟練運用keil環(huán)境對匯編程序進行調(diào)試;④掌握數(shù)據(jù)傳送、復制等程序的設計與調(diào)試方法。2.預習要求①理解數(shù)據(jù)傳送指令和循環(huán)指令的使用;②理解如何對內(nèi)部寄存器、內(nèi)部RAM、外部RAM的讀寫;③理解各種尋址方式,尤其是較為抽象的變址尋址及相對尋址的方式;④認真預習本實驗內(nèi)容,自行編寫程序,填寫實驗報告。3.實驗設備計算機1臺;4.基礎型實驗內(nèi)容①下列程序的功能是給外部RAM8000~80FFH的256個單元的內(nèi)容賦值,賦值的內(nèi)容取決于程序中A的賦值。在Keil環(huán)境運行該程序,并觀察寄存器及內(nèi)存單元的變化。ORG0000HSTARTEQU8000HMAIN:MOVDPTR,#START;起始地址MOVR0,#0;設置256字節(jié)計數(shù)值MOVA,#1HLoop:MOVX@DPTR,AINCDPTR;指向下一個地址DJNZR0,Loop;計數(shù)值減1NOPSJMP$END②下列程序?qū)?000H起始的256個字節(jié)存儲塊移動到4000H起始的256個字節(jié)存儲塊,在Keil環(huán)境運行如下程序,觀察寄存器及存儲單元的變化。ORG0000HMOVDPTR,#3000HMOVA,#01HMOVR5,#OLOOP:MOVX@DPTR,AINCDPTRDJNZR5,LOOPMOVR0,#30HMOVR1,#00HMOVR2,#40HMOVR3,#00HMOVR7,#0LOOP1:MOVDPH,R0MOVDPL,R1MOVXA,@DPTRMOVDPH,R2MOVDPL,R3MOVX@DPTR,AINCR1INCR3DJNZR7,LOOP1SJMP$END③在Keil環(huán)境運行如下程序,觀察寄存器及內(nèi)存單元的變化,將變化結(jié)果注釋于右側(cè),并說明程序完成什么功能?將程序中MOVA,@R0改成MOVXA,@R0,將MOV@R1,A改成MOVX@R1,A,運行如下程序,觀察寄存器及內(nèi)存單元的變化。ORG0000HMOVR0,#30HMOVR1,#50HMOVR2,#20HL1:MOVA,@R0MOV@R1,AINCR0INCR1DJNZR2,L1END5.設計型實驗內(nèi)容①在keil環(huán)境修改內(nèi)部RAM30H~3FH的內(nèi)容分別為#00H-#0FH,設計程序?qū)崿F(xiàn)將內(nèi)部RAM30H-3FH到40H-4FH的數(shù)據(jù)塊拷貝。②在keil環(huán)境修改內(nèi)部RAM30H~3FH的內(nèi)容分別為#00H-#0FH,設計程序?qū)崿F(xiàn)將片內(nèi)30H~3FH單元的內(nèi)容復制到片外1030H~103FH中。③在keil環(huán)境修改內(nèi)部RAM30H~3FH的內(nèi)容分別為#00H-#0FH,設計程序?qū)崿F(xiàn)將內(nèi)部RAM30H~3FH內(nèi)容逆序拷貝到外部數(shù)據(jù)XRAM:0000H~000FH中。使用單步、斷點方式調(diào)試程序,查看特殊功能寄存器、內(nèi)部數(shù)據(jù)RAM、外部數(shù)據(jù)空間的變化。6.擴展實驗及思考①采用R0,R1與采用DPTR對外部XRAM尋址有何區(qū)別?如何確保兩種指令操作訪問的XRAM地址是一致的?試設計程序并驗證。②設計程序?qū)⑼獠?4KB的XRAM高低地址存儲內(nèi)容互換。使用單步、斷點方式調(diào)試程序,查看特殊功能寄存器、內(nèi)部數(shù)據(jù)RAM、外部數(shù)據(jù)空間的變化。3實驗二數(shù)制及代碼轉(zhuǎn)換1.實驗目的①了解微機系統(tǒng)中的數(shù)制與代碼表示方法;②掌握計算機中使用的各種代碼轉(zhuǎn)換方法;③掌握實現(xiàn)分支、循環(huán)的指令及其程序的編寫方法;2.預習要求①理解十進制數(shù)、十六進制數(shù)的數(shù)制表示方法;②理解BCD碼、ASCII碼編碼方式;③如何實現(xiàn)十六進制數(shù)與BCD碼之間的轉(zhuǎn)換;④如何實現(xiàn)ASCII碼與BCD碼之間的轉(zhuǎn)換。3.實驗設備計算機1臺。4.基礎型實驗內(nèi)容①以下程序完成單字節(jié)的ASCII碼到十六進制數(shù)轉(zhuǎn)換,完成空白處程序填寫,并在Keil環(huán)境運行程序,觀察寄存器及內(nèi)存單元的變化。RESULTEQU30HORG0000HMOVA,#41H;“A”的ASCII碼CLRCSUBBA,;轉(zhuǎn)換為十六進制值AMOVRESULT,ALJMP$END②以下程序完成單字節(jié)的BCD碼到十六進制數(shù)轉(zhuǎn)換,,在Keil環(huán)境運行程序,觀察寄存器及內(nèi)存單元的變化。RESULTEQU30HORG0000HMOVA,#23HMOVR0,AANLA,#0F0HSWAPAMOVB,#0AHMULABMOVRESULT,A;轉(zhuǎn)換高位MOVA,R0MOVB,#0FHADDA,RESULTMOVRESULT,A;轉(zhuǎn)換低位SJMP$4END③以下程序?qū)巫止?jié)十六進制數(shù)A的值轉(zhuǎn)換為十進制數(shù),存放在30H~32H中,完成空白處程序填寫,并在Keil環(huán)境運行程序,觀察寄存器及內(nèi)存單元的變化。RESULTEQU30HORG0000HMOVA,#7BHMOVB,#DIVABMOVRESULT,A;除以100得百位數(shù)MOVA,BMOVB,#MOVRESULT+1,A;除以10得十位數(shù)MOVRESULT+2,B;余數(shù)為個位數(shù)SJMP$END5.設計型實驗內(nèi)容①設一串字母的ASCII存于30H起始的單元中,設計程序判斷字母是否為大寫字母,是則將大寫字母的ASCII字符轉(zhuǎn)換成小寫字母的ASCII字符,為小寫則不轉(zhuǎn)換。②將單字節(jié)十六進制數(shù)D8H轉(zhuǎn)換為十進制數(shù),存放在30H~33H中。,③設計程序,將十六進制數(shù)614EH轉(zhuǎn)換成ASCII碼,使用單步、斷點方式調(diào)試程序,查看結(jié)果。6.擴展實驗及思考①設計程序,將BCD碼12345678H所代表的數(shù)值轉(zhuǎn)換成十六進制數(shù),使用單步、斷點方式調(diào)試程序,查看結(jié)果。②設計程序,將十六進制數(shù)BC614EH轉(zhuǎn)換成BCD碼,使用單步、斷點方式調(diào)試程序,查看結(jié)果。5實驗三算術運算1.實驗目的①掌握算術運算類、邏輯運算類指令的使用方法;②掌握BCD碼、補碼數(shù)制表示方法;③掌握運算程序及循環(huán)程序的編寫和調(diào)試方法。2.預習要求①理解8051單片機的算術運算指令;②理解補碼表示數(shù)值的方法;③理解壓縮、非壓縮BCD碼表示數(shù)值的方法;④如何實現(xiàn)多位數(shù)的BCD碼加、乘、除運算;⑤如何實現(xiàn)多位數(shù)的BCD碼減法運算;⑥預習本實驗內(nèi)容,以及相關課程內(nèi)容。3.實驗設備計算機1臺。4.基礎型實驗內(nèi)容①以下程序完成單字節(jié)的BCD碼加法功能,完成空白處程序填寫,并在Keil環(huán)境運行程序,觀察寄存器及內(nèi)存單元的變化。RESULTEQU30HORG0000HMOVA,#99HMOVB,#99HADD,;BCD碼相加并得到BCD碼結(jié)果MOVRESULT,AMOVA,#00HA,#00HMOVRESULT+1,A;高位處理LJMP$END②下列程序完成多字節(jié)BCD碼加法運算。內(nèi)部RAM30H開始的4字節(jié)長的BCD碼和外部RAM1000H開始的4字節(jié)長的BCD碼相加,結(jié)果放在1100H開始的單元中(從低字節(jié)到高字節(jié)。ORG0000HCLRCMOVR5,#04HMOVR0,#30HMOVR1,#10HMOVR2,#00H6MOVR3,#11HMOVR4,#00HL1:MOVDPH,R1MOVDPL,R2MOVXA,@DPTRADDCA,@R0DAA;十進制調(diào)整MOVDPH,R3MOVDPL,R4MOVX@DPTR,AINCR2INCR4INCR0L2:DJNZR5,L1JNCL3MOVDPTR,#1104H;有進位則結(jié)果的第五個字節(jié)置1MOVA,#01HMOVX@DPTR,AL3:NOPEND5.設計型實驗內(nèi)容①設計程序,實現(xiàn)任意字節(jié)壓縮BCD碼的相加,使用單步、斷點方式調(diào)試程序,查看結(jié)果。②設計程序,實現(xiàn)多字節(jié)十六進制數(shù)的減法123456H-005634H,使用單步、斷點方式調(diào)試程序,查看結(jié)果。③在內(nèi)部RAM的30H單元開始,有一串帶符號數(shù)據(jù)塊,其長度在10H單元中。編程求其中正數(shù)與負數(shù)的和,并分別存入2CH與2EH開始的2個單元中。(負數(shù)存放形式為補碼。請分別在30H單元開始寫入5個正數(shù)、11個負數(shù)和9個正數(shù)、7個負數(shù)的情況,記錄程序運行結(jié)果。例如:輸入-69H,65H,-7H,-25H,-47H,56H,-3H,17H,6H,-5H,-45H,-1H,-57H,23H,-5H,-13H則正數(shù)的和89,負數(shù)的和-199H。④設計程序,實現(xiàn)十六進制數(shù)雙字節(jié)乘單字節(jié)35A6H*56H,結(jié)果存于40H開始的三個單元中,使用單步、斷點方式調(diào)試程序,查看結(jié)果。6.擴展實驗及思考①設計一個實現(xiàn)雙字節(jié)乘雙字節(jié)的通用程序。②設計一個實現(xiàn)雙字節(jié)除雙字節(jié)的通用程序。7實驗四比較和查表1.實驗目的①掌握比較指令的使用及循環(huán)程序的編寫方法;②掌握字符查找的思路和算法;③理解并能運用查表和散轉(zhuǎn)指令。2.預習要求①理解掌握比較程序的設計思路;②理解多分支結(jié)構(gòu)程序的編程方法;③預習本節(jié)實驗內(nèi)容,編寫程序及實驗預習報告。3.實驗設備計算機1臺。4.基礎型實驗內(nèi)容①以下程序完成共陰數(shù)碼管數(shù)值顯示譯碼的功能,在Keil環(huán)境運行程序,觀察寄存器及內(nèi)存單元的變化,將變化結(jié)果注釋于右側(cè)。ORG0000HMOVR2,#10HMOVDPTR,#TBLL0:MOVA,#00HMOVCA,@A+DPTRINCDPTRDJNZR2,L0SJMP$TBL:DB3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FH,77H,7CHDB58H,5EH,79H,71H,00H,40HEND②以下子程序完成一個兩位十六進制數(shù)到ASCII碼的轉(zhuǎn)換,數(shù)值存放在R2中,轉(zhuǎn)換結(jié)果地位存于R2,高位存于R3。用PC做基址實現(xiàn)。ORG0000HHEXA:MOVR2,#1BHMOVA,R2ANLA,#0FHADDA,#09HMOVCA,@A+PCXCHA,R2ANLA,#0F0HSWAPAADDA,#02HMOVCA,@A+PCMOVR3,ARETTAB:DB'0','1','2','3','4'DB'5','6','7','8','9'DB'A','B','C','D','E','F'END③以下程序完成256字節(jié)范圍內(nèi)程序散轉(zhuǎn)的功能,根據(jù)R7的內(nèi)容轉(zhuǎn)向各個子程序,在Keil環(huán)境運行程序,觀察寄存器及內(nèi)存單元的變化,將變化結(jié)果注釋于右側(cè)。ORG0000HSTART:MOVDPTR,#TABMOVA,R7ADDA,R7;R7*2為了與JMP@A+DPTR的機器碼匹配,若TABJMP@A+DPTR;中的AJMP換成LJMP則R7*3ORG0100HTAB:AJMPPROG0AJMPPROG1AJMPPROG2AJMPPROG3SJMP$PROG0:MOVA,#00HSJMPREPROG1:MOVA,#01HSJMPREPROG2:MOVA,#02HSJMPREPROG3:MOVA,#03HRE:NOPEND5.設計型實驗內(nèi)容①分別用近程查表指令和遠程查表指令,查找R3內(nèi)容的平方值。R3內(nèi)容小于等于0FH,即平方值為單字節(jié)數(shù)據(jù)。②在外部RAM1000H開始處有10H個帶符號數(shù),請找出其中的最大值和最小值,分別存入內(nèi)部RAM的MAX、MIN單元。③分別用近程查表指令和遠程查表指令,查找R3內(nèi)容的平方值。平方值為兩個字節(jié)數(shù)據(jù)。6.實驗擴展及思考①設計程序,實現(xiàn)求出十個無符號數(shù)的平均值,并統(tǒng)計大于均值和小于均值的數(shù)據(jù)個數(shù),使用單步、斷點方式調(diào)試程序,查看結(jié)果。②編寫一個對分搜索程序,對一個已排好序的數(shù)組1,2,3,4,5,6,7,8,9,10,12,14,15查找是否存在關鍵字6,如果有指出該數(shù)據(jù)在字符串中的位置。使用單步、斷點方式調(diào)試程序,查看結(jié)果。第二章單片機硬件實驗硬件實驗需要連接計算機與80C51的仿真器,在實驗前要理解相關的硬件電路,按實驗指導書中的硬件連接方法正確連線,才能保證實驗的正常進行,得到正確結(jié)果。硬件實驗時要注意以下幾點:1、根據(jù)實驗指導書正確進行模塊與模塊之間接口的連接;注意一定要在實驗系統(tǒng)上電前進行接口的連接,千萬不能帶電操作。2、用串行數(shù)據(jù)通信線連接計算機與仿真器,把仿真器插到模塊的鎖緊插座中,請注意仿真器的方向:缺口朝上。(斷電時進行3、進行KEIL軟件的設置(KEIL軟件使用見附錄一,編輯匯編源程序,編譯,直至編譯無誤。4、打開80C51模塊電源和總電源,可以單步或跟蹤或全速方式運行程序,同時觀察運行結(jié)果(注意:要停止調(diào)試,按THKL-C51仿真器上的Reset按鍵。5、也可以把源程序編譯成可執(zhí)行文件,把可執(zhí)行文件用ISP燒錄器燒錄到89S52/89S51芯片中運行(注意:芯片缺口朝上;不建議使用。(ISP燒錄器的使用查看附錄二注:1、在做完實驗時記得養(yǎng)成一個好習慣:把相應單元的短路帽和電源開關還原到原來的位置!以下將不再重述。2、不要插拔實驗系統(tǒng)上的模塊和芯片,不要打開與本實驗不相關模塊的電源。注意不能帶電進行模塊之間導線的連接!!實驗一I/O控制實驗1.實驗目的①掌握基本IO輸入輸出操作指令;②熟練運用keil環(huán)境對硬件接口進行調(diào)試。2.預習要求①理解51單片機IO的輸入、輸出控制方式;理解P0、P1、P2、P3口做為普通的IO口有何區(qū)別。②理解實現(xiàn)軟件延時程序設計的延時時間估算;③認真預習本節(jié)實驗內(nèi)容,設計出器件之間的實驗連接線,自行編寫程序,填寫實驗報告。3.實驗設備計算機1臺;ZDGDTH-1型80C51實驗開發(fā)系統(tǒng)1套;2號導線4條;8P數(shù)據(jù)線1條。4.基礎型實驗內(nèi)容①8位邏輯電平顯示的接口電路設計如圖1-1所示,用P1口做輸出口,接八位邏輯電平顯示,程序功能使發(fā)光二極管從右到左輪流循環(huán)點亮。用8P數(shù)據(jù)線將D2區(qū)80C51/C8051F020MCU模塊的JD1(P1口與A5區(qū)8位邏輯電平顯示模塊JD1A5相連。在Keil環(huán)境運行該程序,觀察發(fā)光二極管顯示情況。圖1-18位八位邏輯電平顯示接口電路ORG0LOOP:MOVA,#0FEHMOVR2,#8OUTPUT:MOVP1,ARLAACALLDELAYDJNZR2,OUTPUTLJMPLOOPDELAY:MOVR6,#0;延時程序MOVR7,#0DELAYLOOP:DJNZR6,DELAYLOOPDJNZR7,DELAYLOOPRETEND②8位撥動開關的接口電路設計如圖1-2所示,假設采用P1口控制LED顯示,P2口接收撥碼開關的輸入值,用8P數(shù)據(jù)線將D2區(qū)80C51/C8051F020MCU模塊的JD1(P1口、JD1(P2口分別與A5區(qū)八位邏輯電平顯示模塊JD1A5、C6區(qū)8位撥動開關模塊JD1C6相連。在Keil環(huán)境運行該程序,使用單步、斷點、連續(xù)運行調(diào)試程序,查看結(jié)果。圖1-2撥碼開關接口電路ORG0000HLL:MOVP2,#0FFHNOPMOVA,P2NOPMOVP1,ALJMPLLEND③如圖1-3所示,假設采用P1.0口控制外部LED,撥動開關控制外部中斷,用二號導線將D2區(qū)80C51/C8051F020MCU模塊的P1.0、P3.2口分別與A5區(qū)八位邏輯電平顯示模塊的L0、C8區(qū)單次脈沖輸出相連。并在Keil環(huán)境運行程序,觀察實驗現(xiàn)象。圖1-3外部中斷及LED顯示電路流程圖為:主程序框圖外部中斷子程序框圖源程序:ORG0000HLJMPMAINORG0003HLJMPINTERRUPTORG0030HMAIN:CLRP1.0MOVTCON,#01HMOVIE,#81HSJMP$INTERRUPT:PUSHPSW;保護現(xiàn)場CPLP1.0POPPSW;恢復現(xiàn)場RETIEND④在上述步驟中,如果改變中斷的觸發(fā)方式為電平觸發(fā)方式,試改動程序,并在Keil環(huán)境運行程序,觀察實驗現(xiàn)象,說明實驗結(jié)果。5.設計型實驗內(nèi)容①畫出流程并設計程序?qū)崿F(xiàn)8位邏輯電平顯示模塊的奇偶位的亮滅閃爍顯示,閃爍間隔為1S。②畫出流程并設計程序?qū)崿F(xiàn)8位邏輯電平顯示模塊的LED輪流點亮,間隔為1S。③設計硬件連接圖,畫出流程并設計程序?qū)崿F(xiàn)當撥碼開關K0往上撥時,實現(xiàn)設計型實驗內(nèi)容步驟①,否則LED全滅;當開關K1往上撥時,實現(xiàn)設計型實驗內(nèi)容步驟②,否則LED全滅;當K0、K1同時往上撥的時候,LED全亮。④累計INT0按鍵的中斷次數(shù),保存到內(nèi)部RAM的30H單元。6.擴展實驗及思考①P0口做為基本的輸入輸出口與P1、P2、P3口有何區(qū)別?硬件上要如何設計保證它做為基本輸入輸出口與P1、P2、P3口的結(jié)果一致?設計電路及程序驗證。②利用P1口及LED顯示器件,實現(xiàn)十字路口交通燈控制實驗的模擬。③采用外部中斷的電平觸發(fā)方式,編寫并運行程序,觀察運行結(jié)果。記錄一次按鍵動作,進入中斷的次數(shù)。實驗二定時器計數(shù)器實驗1.實驗目的①掌握8051的定時器、中斷系統(tǒng)編程方法;②了解定時器的應用、實時程序的設計和調(diào)試技巧。2.預習要求①理解定時器的四種工作方式的異同點;②理解TMOD寄存器中GATE、C/T控制位的作用;③理解定時器中斷服務程序的響應過程;④理解定時器實現(xiàn)精確定時的方法;⑤認真預習本節(jié)實驗內(nèi)容,設計出器件之間的實驗連接線,自行編寫程序,填寫實驗報告。3.實驗設備計算機1臺;ZDGDTH-1型80C51實驗開發(fā)系統(tǒng)1套;2號導線、8P數(shù)據(jù)線若干條;4.基礎型實驗內(nèi)容①系統(tǒng)的時鐘為12MHz,現(xiàn)欲實現(xiàn)10ms的精確定時,完成空白處程序填寫,并在Keil環(huán)境運行程序,觀察實驗現(xiàn)象。ORG0000HMOVMOVMOVSETBTR0JNBTF0,$CLRTF0SJMP$END②如圖2-1所示,假設采用P1.0口控制外部LED,用撥動開關控制外部中斷,用二號導線將D2區(qū)80C51/C8051F020MCU模塊的P1.0、P3.2口分別與A5區(qū)八位邏輯電平顯示模塊的L0、C6區(qū)八位邏輯電平輸出K0相連。在Keil環(huán)境運行以下程序,分別撥動K0于高低電平位置,觀察實驗現(xiàn)象,并說明所發(fā)生實驗現(xiàn)象的原因。圖2-1外部中斷及LED顯示電路ORG0000HLJMPMAINORG000BHLJMPTIMER0ORG0030HMAIN:CLRP1.0MOVTMOD,#0AHMOVTL0,#50HMOVTH0,#50HSETBTR0SJMP$TIMER0:CPLP1.0RETIEND③用二號導線將80C51/C8051F020MCU模塊的P1.0與八位邏輯電平顯示模塊的任意一只發(fā)光二極管相連,全速運行下列程序,發(fā)光二極管隔一秒點亮一次,點亮時間為一秒。流程圖為:18主程序框圖定時中斷子程序圖源程序:Tickequ10000;10000x100us=1sT100usequ20;100us時間常數(shù)(6MC100usequ5h;100us記數(shù)單元LEDBufBIT00HLEDBITP1.0org0000HljmpStartorg000BHLJMPT0IntORG0100HT0Int:pushPSWmova,C100us+1jnzGoondecC100usGoon:decC100us+1mova,C100usorla,C100us+1jnzExit;100us記數(shù)器不為0,返回movC100us,#HIGH(TICK;#high(TickmovC100us+1,#LOW(TICK;#low(TickcplLEDBuf;100us記數(shù)器為0,重置記數(shù)器,取反LED19Exit:popPSWretiStart:movTMOD,#02h;方式2,定時器movTH0,#t100usmovTL0,#t100usmovIE,#10000010b;EA=1,IT0=1setbTR0;開始定時clrLEDBufclrP1.0movC100us,#high(TickmovC100us+1,#low(TickLoop:movc,LEDBufmovP1.0,csjmpLoopend5.設計型實驗內(nèi)容①編程使第1~4和5~8發(fā)光二極管循環(huán)點亮的時間分別為0.25s、0.5s、0.75s、1s。②畫出流程并設計程序?qū)崿F(xiàn)采用定時器設計一分鐘倒計時器。③采用TIMER0的計數(shù)器工作方式,設計程序?qū)崿F(xiàn)外部按鍵次數(shù)的計數(shù)。6.實驗擴展及思考①畫出流程并設計程序?qū)崿F(xiàn)24小時的實時時鐘顯示。②畫出流程并設計程序?qū)崿F(xiàn)對100KHz頻率TTL方波信號進行十分頻,占空比為4:1的設計,并用示波器查看結(jié)果。③基于測頻原理,畫出流程并設計程序?qū)崿F(xiàn)測量外部脈沖信號的頻率,并實時顯示測量頻率值。20實驗三按鍵與顯示實驗1.實驗目的①熟練運用keil環(huán)境對硬件接口進行調(diào)試。②掌握IO擴展鍵盤的軟硬件設計方法;③掌握數(shù)字轉(zhuǎn)換成顯示段碼的軟件譯碼方法;④掌握靜態(tài)顯示的原理和相關程序的編寫。⑤掌握動態(tài)顯示的原理和相關程序的編寫;2.預習要求①理解51單片機IO實現(xiàn)獨立式鍵盤擴展的工作原理。②理解8段數(shù)碼管靜態(tài)顯示的電路工作原理,采用靜態(tài)顯示有何優(yōu)缺點;③理解8段數(shù)碼管動態(tài)顯示的電路工作原理,采用動態(tài)顯示有何優(yōu)缺點;④理解8段數(shù)碼管靜態(tài)顯示的IO控制方式及同步串行口控制方式如何實現(xiàn)軟件設計;3.實驗設備計算機1臺;ZDGDTH-1型80C51實驗開發(fā)系統(tǒng)1套;2號導線、8P數(shù)據(jù)線若干條。4.基礎型實驗內(nèi)容①查詢式鍵盤和靜態(tài)顯示實驗8個獨立式鍵盤的電路如圖2-1所示,串口擴展的6個靜態(tài)數(shù)碼管電路如圖2-2所示。設將P0口連接到鍵盤接口,則如果有鍵按下,相應的口線輸出為低,否則輸出為高。單片機通過讀取接口的狀態(tài),判斷按下什么鍵。有鍵按下后,要有一定的延時,防止由于鍵盤抖動而引起誤操作。8個按鍵的鍵值從右至左為0~7。實驗例程是查詢按鍵操作,并將按下的鍵值在6個靜態(tài)數(shù)碼管上顯示出來。6個靜態(tài)數(shù)碼管與6片74LS164(串變并移位寄存器連接,與單片機通過IO口連接,實現(xiàn)串行靜態(tài)顯示的控制。用8P數(shù)據(jù)線將80C51/C8051F020MCU模塊的JD1(P1口與查詢式鍵盤模塊JD1C7相連。在實驗箱右上角的擴展區(qū)中插入靜態(tài)串行顯示模塊,用二號導線將80C51/C8051F020MCU模塊的P3.0(RXD、P3.1(TXD分別與靜態(tài)數(shù)碼顯示模塊的DIN、CLK相連;將A7區(qū)的電源短路帽JD5A7打到右端。在Keil環(huán)境連續(xù)運行該程序,觀察實驗結(jié)果。21電路圖:DBUFEQU30HDATEQUP3.0CLKEQUP3.1ORG0000HL0:MOVP1,#0FFHL1:MOVA,P1CJNEA,#0FFH,KEYPUTSJMPL1KEYPUT:CJNEA,#0FEH,NEXT1SJMPK0NEXT1:CJNEA,#0FDH,NEXT2SJMPK1……K0:MOVB,#00HLCALLDISPDIS422LJMPL0K1:MOVB,#01HLCALLDISPLJMPL0……LJMPL0DISP:MOVDBUF,BMOVDBUF+1,BMOVDBUF+2,BMOVDBUF+3,BMOVDBUF+4,BMOVDBUF+5,BMOVR0,#DBUFMOVDPTR,#TABMOVR2,#06HDP0:MOVA,@R0MOVCMOVDP1:RLCMOVDAT,CCLRCLKSETBCLKDJNZR3,DP1INCR0DJNZR2,DP0RETTAB:DB3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5DB7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,BDB58H,5EH,79H,71H,00H,40H;C,D,E,F,,-END②動態(tài)顯示實驗6位動態(tài)數(shù)碼管顯示的接口電路設計如圖2-3所示,假設P0口輸出顯示的段碼,P2口輸出位碼,用8P數(shù)據(jù)線將80C51/C8051F020MCU模塊的JD0(P0口、JD2(P2口分別與A7區(qū)的JD1A7、JD2A7相連;A7區(qū)的電源短路帽JD5A7打到右端。在Keil環(huán)境連續(xù)運行該程序,觀察實驗結(jié)果。圖2-36位動態(tài)數(shù)碼管顯示接口電路流程圖如下:在動態(tài)數(shù)碼管上顯示168168的源程序:DBUFEQU30HTEMPEQU40HORG0000HLJMPdispORG0100Hdisp:MOV30h,#8MOV31h,#6MOV32h,#1MOV33h,#8MOV34h,#6MOV35h,#1MOVR0,#DBUFMOVR1,#TEMPMOVR2,#6MOVDPTR,#SEGTABDP00:MOVA,@R0MOVCA,@A+DPTRMOV@R1,AINCR1INCR0DJNZR2,DP00DISP0:MOVR0,#TEMPDB3FH,06H,5BH;0,1,2MOVR1,#6DB4FH,66H,6DH;3,4,5MOVR2,#1DB7DH,07H,7FH,;6,7,8,DP01:MOVA,@R0DB6FH,77H,7CH;9,A,BMOVP0,ADB58H,5EH,7BH,;C,D,EMOVA,R2DB71H,00H,40H;F,,-MOVP2,ADELAY:MOVR4,#03HACALLDELAYAA1:MOVR5,#0FFHMOVA,R2AA:NOPRLANOPMOVR2,ADJNZR5,AAINCR0DJNZR4,AA1DJNZR1,DP01RETSJMPDISP0ENDSEGTAB:5.設計型實驗內(nèi)容①在最后一個數(shù)碼管上依次顯示a、b、….f各段,每段顯示時間為100ms,用T0定時器實現(xiàn);②分別指定IO控制動態(tài)掃描顯示模塊、靜態(tài)顯示模塊電路,畫出流程并設計程序?qū)崿F(xiàn)數(shù)碼管顯示自己的學號后六位號碼;③用按鍵輸入自己的學號,并在靜態(tài)或動態(tài)數(shù)碼管上顯示出來。6.擴展實驗及思考①循環(huán)顯示6個數(shù)碼管的邊緣各段,形成一個運動著的大邊框。②按鍵連擊的消除和利用。利用連擊現(xiàn)象,當按鍵時間長于2秒時,每0.5秒在個位上加1,連續(xù)累加,直到按鍵釋放。③分別基于動態(tài)掃描顯示模塊、靜態(tài)顯示模塊電路,畫出流程并設計程序?qū)崿F(xiàn)數(shù)碼管從右到左滾動顯示自己的學號的所有位數(shù);④利用單片機的定時器資源,實現(xiàn)定時對6位動態(tài)顯示管輸出的刷新,畫出流程并設計程序?qū)崿F(xiàn)設計型實驗內(nèi)容的步驟①、②。實驗四并行AD、DA實驗1.實驗目的①掌握采用并行接口實現(xiàn)外部器件的擴展方法;②掌握ADC0809模/數(shù)轉(zhuǎn)換芯片與單片機的接口設計及ADC0809的典型應用;③掌握DAC0832模/數(shù)轉(zhuǎn)換芯片與單片機的接口設計及DAC0832的典型應用。2.預習要求①理解內(nèi)存與IO統(tǒng)一編址的外設端口地址的映射及控制;②理解用查詢方式、中斷方式完成模/數(shù)轉(zhuǎn)換程序的編寫方法;③理解DAC0832直通方式,單緩沖器方式、雙緩沖器方式的編程方法。3.實驗設備計算機1臺;ZDGDTH-1型80C51實驗開發(fā)系統(tǒng)1套;2號導線、8P數(shù)據(jù)線若干條;萬用表1個;4.基礎型實驗內(nèi)容①圖4-1為ADC0809的擴展電路圖,用8P數(shù)據(jù)線將D2區(qū)80C51/C8051F020MCU模塊的JD0(P0口、JD8分別與C5區(qū)并行A/D轉(zhuǎn)換模塊的JD1C5、JD2C5相連;用二號導線將D2區(qū)80C51/C8051F020MCU模塊的WR、RD、P2.0、CLK、P3.3分別與C5區(qū)并行A/D轉(zhuǎn)換模塊的WR、RD、CS、ALE、EOC相連;并行A/D轉(zhuǎn)換模塊的+Vref接+5V,AIN0接D6區(qū)可調(diào)電源模塊的0—5V端。說明AD轉(zhuǎn)換的過程,并在Keil環(huán)境設置斷點運行以下程序,可調(diào)電源分別調(diào)至兩個極端,觀察寄存器及內(nèi)存單元的變化。圖4-1ADC0809的擴展電路圖ORG0000HMAIN:CLRASETBP3.3;設定與EOC接口IO處于接收狀態(tài)MOVDPTR,#0FEF8H;選擇A/D端口地址NOPMOVX@DPTR,A;啟動AD轉(zhuǎn)換WAIT:JBP3.3,WAITMOVXA,@DPTR;讀入結(jié)果NOPLJMPMAIN②圖4-2為DAC0832的擴展電路圖,用8P數(shù)據(jù)線將D2區(qū)80C51/C8051F020MCU模塊的JD0(P0口與C4區(qū)并行DA轉(zhuǎn)換模塊的JD1C4相連,用二號導線將D2區(qū)80C51/C8051F020MCU模塊的P2.0、WR分別與C5區(qū)并行D/A轉(zhuǎn)換模塊的CS、WR模塊,用萬用表測量“-Vref”端的電壓,手動調(diào)節(jié)電位器RW1C4,把-Vref電壓調(diào)到-5V,萬用表監(jiān)測并行D/A轉(zhuǎn)換的OUT與GND輸出引腳。填寫下列程序中的空白處,說明DA轉(zhuǎn)換的過程,并在Keil環(huán)境運行設置斷點運行該程序,調(diào)節(jié)RW1C4,觀察寄存器的變化與萬用表輸出值的變化。圖4-2DAC0832的擴展電路圖ORG0100HSTART:MOVDPTR,#0FEFFH;置DAC0832的地址LP:MOVA,#0FFH;設定高電平MOVX@DPTR,A;啟動D/A轉(zhuǎn)換,輸出高電平LCALLDELAY;延時顯示高電平MOVA,#00H;設定低電平MOVX@DPTR,A;啟動D/A轉(zhuǎn)換,輸出低電平LCALLDELAY;延時顯示低電平SJMPLP;連續(xù)輸出方波DELAY:MOVR3,#18;延時子程序D1:NOPNOPNOPDJNZR3,D1RETEND5.設計型實驗內(nèi)容①采用中斷法設計ADC0809數(shù)據(jù)采集程序,并將采集到的十六進制結(jié)果顯示在LED顯示模塊上。②用中斷方式編寫A/D轉(zhuǎn)換程序,每秒以100ms的間隔采集8次,求8次結(jié)果的平均值,保存到內(nèi)部RAM40H開始的單元,共采集30秒鐘。③要求同②,計算出每秒的平均值并顯示在靜態(tài)數(shù)碼管上。6.實驗擴展及思考①采用ADC0809的8個通道采集8個模擬量信號,并將實際電壓值分通道、分時地顯示在LED上。②根據(jù)基礎型實驗的步驟①、②,由DAC0832輸出模擬量,ADC0809采集數(shù)據(jù)。分配端口實現(xiàn)的硬件連接,畫出流程并設計程序?qū)崿F(xiàn)該過程,比較輸出的數(shù)據(jù)跟采集到的數(shù)據(jù)是否一致,如不一致分析一下產(chǎn)生誤差的原因。③采用DAC0832設計一簡易的信號發(fā)生器,設計流程并編寫程序?qū)崿F(xiàn)50Hz的方波、鋸齒波。附錄一THKL-C51仿真器聯(lián)機及軟件的使用說明一、仿真器自檢步驟不要帶電插拔串口,以防止由此產(chǎn)生的浪涌電流損壞MAX232通訊芯片,下面的操作順序可以避免帶電插拔。聯(lián)機正確順序:插好仿真用串口旋緊固定螺栓>>插上USB電源接口>>連接目標硬件,可以是任何51系統(tǒng)開發(fā)板、試驗板、工控板、目標板...等等的51硬件系統(tǒng)。脫機正確順序:拔下USB電源接口>>拔下仿真用串口。如果短期內(nèi)經(jīng)常要使用仿真功能,無需拔下串口。因為仿真器在通電瞬間要對系統(tǒng)進行自檢,所以在通過USB給仿真系統(tǒng)供電之前,仿真頭上不要連有負載。接通USB電源,自檢通過后POWLED指示燈會亮起來,表示自檢通過,此時就可以進入的硬件仿真了。二、仿真器復位按鈕的作用在仿真器的右側(cè)下方有一個小的按紐,這個按鈕用來給整個仿真器硬件系統(tǒng)復位,什么時候需要按這個按鈕呢?設置好KEIL的硬件環(huán)境后,在每次點擊進入仿真環(huán)境之前,需要按一下這個復位按紐,這樣KEIL啟動后,軟件和已復位的硬件仿真器就會順利聯(lián)機,在點擊進入仿真環(huán)境之后,仿真器完全由KEIL控制,此時不要按這個按鈕,否則在仿真過程中系統(tǒng)將會提示聯(lián)機中斷。如果需要給硬件復位的話,請先點擊仿真器的復位鍵然后點退出KEIL仿真調(diào)試環(huán)境。仿真器使用注意事項:在打開PC機之前請把仿真器和PC機的串口連好。在聯(lián)機后,請千萬不要帶電插拔仿真器和PC機的接口,如果帶電插拔仿真器就可能導致接口電路MAX232損壞。注意插拔的時候仿真器或者PC機至少有一方的電源是斷開的。PC機的串口和并口等接口的最大不便就是不支持熱插拔,這也是開發(fā)USB接口的根本原因。斷開連接之前推薦步驟:1.按一下仿真器硬件復位按紐2.按退出仿真環(huán)境3.關閉KEIL,關閉PC機,最后再斷開硬件連接,如果要經(jīng)常使用則不用斷開硬件連接。三、KeiluVision2仿真軟件的使用說明μVision2集成開發(fā)環(huán)境μVision2IDE是德國Keil公司開發(fā)的基于Windows平臺的單片機集成開發(fā)環(huán)境,它包含一個高效的編譯器、一個項目管理器和一個MAKE工具。其中KeilC51是一種專門為單片機設計的高效率C語言編譯器,符合ANSI標準,生成的程序代碼運行速度極高,所需要的存儲器空間極小,完全可以與匯編語言媲美。1.關于開發(fā)環(huán)境μVision2的界面如圖1-1所示,μVision2允許同時打開、瀏覽多個源文件。圖1-1μVision2界面圖圖1-1μVision2界面圖2.菜單條、工具欄和快捷鍵下面的表格列出了μVision2菜單項命令,工具欄圖標,默認的快捷以及他們的描述。1編輯菜單和編輯器命令Edit(如表1-1所示表1-1編輯菜單和編輯器命令Edit菜單工具欄快捷鍵描述Home移動光標到本行的開始End移動光標到本行的末尾Ctrl+Home移動光標到文件的開始Ctrl+End移動光標到文件的結(jié)束Ctrl+<-移動光標到詞的左邊Ctrl+->移動光標到詞的右邊Ctrl+A選擇當前文件的所有文本內(nèi)容UndoCtrl+Z取消上次操作RedoCtrl+Shift+Z重復上次操作CutCtrl+XCtrl+Y剪切所選文本剪切當前行的所有文本CopyCtrl+C復制所選文本PasteCtrl+V粘貼IndentSelectedText將所選文本右移一個制表鍵的距離UnindentSelectedText將所選文本左移一個制表鍵的距離ToggleBookmarkCtrl+F2設置/取消當前行的標簽GotoNextBookmarkF2移動光標到下一個標簽處GotoPreviousbookmarkShift+F2移動光標到上一個標簽處ClearAllBookmarks清除當前文件的所有標簽在當前文件中查找文本F3向前重復查找Shift+F3向后重復查找Ctrl+F3查找光標處的單詞FindCtrl+]尋找匹配的大括號、圓括號、方括號(用此命令將光標放到大括號、圓括號或方括號的前面Replace替換特定的字符FindinFiles…在多個文件中查找GotoMatchingbrace選擇匹配的一對大括號、圓括號或方括號中的內(nèi)容2選擇文本命令在μVision2中,可以通過按住Shift鍵和相應的鍵盤上的方向鍵來選擇文本。如Ctrl+->可以移動光標到下一個詞,那么,Ctrl+Shift+->就是選擇當前光標位置到下一個詞的開始位置間的文本。當然,也可以用鼠標來選擇文本。3項目菜單Project和項目命令Project(如表1-2所示表1-2項目菜單和項目命令Project菜單工具欄快捷鍵描述NewProject…創(chuàng)建新項目ImportμVision1Project…轉(zhuǎn)化μVision1的項目OpenProject…打開一個已經(jīng)存在的項目CloseProject…關閉當前的項目TargetEnvironment定義工具、包含文件和庫的路徑Targets,Groups,Files維護一個項目的對象、文件組和文件SelectDeviceforTarget選擇對象的CPURemove…從項目中移走一個組或文件Options…Alt+F7設置對象、組或文件的工具選項FileExtensions選擇不同文件類型的擴展名BuildTargetF7編譯修改過的文件并生成應用RebuildTarget重新編譯所有的文件并生成應用Translate…Ctrl+F7編譯當前文件StopBuild停止生成應用的過程1~7打開最近打開過的項目4調(diào)試菜單Debug和調(diào)試命令(如表1-3所示表1-3調(diào)試菜單和調(diào)試命令Debug菜單工具欄快捷鍵描述Start/StopDebuggingCtrl+F5開始/停止調(diào)試模式GoF5運行程序,直到遇到一個中斷StepF11單步執(zhí)行程序,遇到子程序則進入StepoverF10單步執(zhí)行程序,跳過子程序StepoutofCtrl+F11執(zhí)行到當前函數(shù)的結(jié)束CurrentfunctionstopRuningEsc停止程序運行Breakpoints…打開斷點對話框Insert/RemoveBreakpoint設置/取消當前行的斷點Enable/DisableBreakpoint使能/禁止當前行的斷點DisableAllBreakpoints禁止所有的斷點KillAllBreakpoints取消所有的斷點ShowNextStatement顯示下一條指令Enable/DisableTraceRecording使能/禁止程序運行軌跡的標識ViewTraceRecords顯示程序運行過的指令MemoryMap…打開存儲器空間設置對話框PerformanceAnalyzer…打開設置性能分析的窗口InlineAssembly…對某一行重新匯編,可以修改匯編代碼FunctionEditor…編輯調(diào)試函數(shù)和調(diào)試設置文件5外圍器件菜單Peripherals(如表1-4所示表1-4外圍器件菜單Peripherals菜單工具欄描述ResetCPU復位CPU以下為單片機外圍器件的設置對話框(對話框的種類及內(nèi)容依賴于你選擇的CPUInterrupt中斷觀察I/O-PortsI/O口觀察Serial串口觀察Timer定時器觀察A/DConoverterA/D轉(zhuǎn)換器D/AConoverterD/A轉(zhuǎn)換器I2CConoverterI2C總線控制器Watchdog看門狗6工具菜單Tool(如表1-5所示利用工具菜單,可以設置并運行GimpelPC-Lint、SiemensEasy-Case和用戶程序。通過CustomizeToolsMenu…菜單,可以添加需要的程序。表1-5工具菜單Tool菜單描述SetupPC-Lint…設置GimpelSoftware的PC-Lint程序Lint用PC-Lint處理當前編輯的文件LintallCSourceFiles用PC-Lint處理項目中所有的C源代碼文件SetupEasy-Case…設置Siemens的Easy-Case程序Start/StopEasy-Case運行/停止Siemens的Easy-Case程序ShowFile(Line用Easy-Case處理當前編輯的文件CustomizeToolsMenu…添加用戶程序到工具菜單中3.創(chuàng)建項目實例μVision2包括一個項目管理器,它可以使8x51應用系統(tǒng)的設計變得簡單。要創(chuàng)建一個應用,需要按下列步驟進行操作:z啟動μVision2,新建一個項目文件并從器件庫中選擇一個器件。z新建一個源文件并把它加入到項目中。z增加并設置選擇的器件的啟動代碼z針對目標硬件設置工具選項。z編譯項目并生成可編程PROM的HEX文件。下面將逐步地進行描述,從而指引讀者創(chuàng)建一個簡單的μVision2項目。1選擇【Project】/【NewProject】選項,如圖1-2所示。圖1-2Project菜單2在彈出的“CreateNewProject”對話框中選擇要保存項目文件的路徑,比如保存到Exercise目錄里,在“文件名”文本框中輸入項目名為example,如圖1-3所示,然后單擊“保存”按鈕。圖1-3CreateNewProject對話框3時會彈出一個對話框,要求選擇單片機的型號。讀者可以根據(jù)使用的單片機型號來選擇,KeilC51幾乎支持所有的51核的單片機,這里只是以常用的AT89C51為例來說明,如圖1-4所示。選擇89C51之后,右邊Description欄中即顯示單片機的基本說明,然后單擊“確定”按鈕。1-4選擇單片機的型號對話框4這時需要新建一個源程序文件。建立一個匯編或C文件,如果已經(jīng)有源程序文件,可以忽略這一步。選擇【File】/【New】選項,如圖1-5所示。5在彈出的程序文本框中輸入一個簡單的程序,如圖1-6所示。圖1-5新建源程序文件對話框圖圖1-6程序文本框6選擇【File】/【Save】選項,或者單擊工具欄按鈕,保存文件。在彈出的如圖1-7所示的對話框中選擇要保存的路徑,在“文件名”文本框中輸入文件名。注意一定要輸入擴展名,如果是C程序文件,擴展名為.c;如果是匯編文件,擴展名為.asm;如果ini文件,擴展名為.ini。這里需要存儲ASM源程序文件,所以輸入.asm擴展名(也可以保存為其他名字,比如new.asm等,單擊“保存”按鈕。圖1-7“SaveAs”對話框圖7單擊Target1前面的+號,展開里面的內(nèi)容SourceGroup1,如圖1-8所示。圖1-8Target展開圖8用右鍵單擊SourceGroup1,在彈出的快捷菜單中選擇AddFiletoGroup`SourceGroup1`選項,如圖1-9所示。圖1-9AddFilestoGroup‘SourceGroup1’菜單9選擇剛才的文件example.asm,文件類型選擇AsmSourcefile(*.C。如果是C文件,則選擇CSourcefile;如果是目標文件,則選擇Objectfile;如果是庫文件,則選擇Libraryfile。最后單擊“Add”按鈕,如果要添加多個文件,可以不斷添加。添加完畢后單擊“Close”按鈕,關閉該窗口,如圖1-10所示圖1-10AddFilestoGroup‘SourceGroup1’對話框10這時在SourceGroup1目錄里就有example.asm文件,如圖1-11所示。圖1-11example.asm文件11接下來要對目標進行一些設置。用鼠標右鍵(注意用右鍵單擊Target1,在彈出的會計菜單中選擇OptionsforTarget“Target1”選項,如圖1-12所示。圖1-12ptionsforTarget“Target1”選項12彈出OptionsforTarget“Target1”對話框,其中有8個選項卡。①默認為Target選項卡(如圖1-13所示1-13Target選項卡zXtal(MHZ:設置單片機工作的頻率,默認是24.0MHz。zUseOn-chipROM(0x0-0XFFF:表示使用片上的FlashROM,At89C51有4KB的可重編程的FlashROM,該選項取決于單片機應用系統(tǒng),如果單片機的EA接高電平,則選中這個選項,表示使用內(nèi)部ROM,如果單片機的EA接低電平,表示使用外部ROM,則不選中該項。這里選中該選項。zOff-chipCodememory:表示片外ROM的開始地址和大小,如果沒有外接程序存儲器,那么不需要填任何數(shù)據(jù)。這里假設使用一個片外ROM,地址從0x8000開始,一般填16進制的數(shù),Size為片外ROM的大小。假設外接ROM的大小為0x1000字節(jié),則最多可以外接3塊ROM。zOff-chipXdatamemory:那么可以填上外接Xdata外部數(shù)據(jù)存儲器的起始地址和大小,一般的應用是62256,這里特殊的指定Xdata的起始地址為0x2000,大小為0x8000。zCodeBanking:是使用CodeBanking技術。Keil可以支持程序代碼超過64KB的情況,最大可以有2MB的程序代碼。如果代碼超過64KB,那么就要使用CodeBanking技術,以支持更多的程序空間。CodeBanking支持自動的Bank的切換,這在建立一個大型系統(tǒng)時是必需的。例如:在單片機里實現(xiàn)漢字字庫,實現(xiàn)漢字輸入法,都要用到該技術。zMemoryModel:單擊MemoryModel后面的下拉箭頭,會有3個選項,如圖1-14所示。圖1-14MemoryModel選項zSmall:變量存儲在內(nèi)部RAM里。zCompact:變量存儲在外部RAM里,使用8位間接尋址。zLarge:變量存儲在外部RAM里,使用16位間接尋址。一般使用Small來存儲變量,此時單片機優(yōu)先將變量存儲在內(nèi)部RAM里,如果內(nèi)部RAM空間不夠,才會存在外部RAM中。Compact的方式要通過程序來指定頁的高位地址,編程比較復雜,如果外部RAM很少,只有256字節(jié),那么對該256字節(jié)的讀取就比較快。如果超過256字節(jié),而且需要不斷地進行切換,就比較麻煩,Compact模式適用于比較少的外部RAM的情況。Large模式是指變量會優(yōu)先分配到外部RAM里。需要注意的是,3種存儲方式都支持內(nèi)部256字節(jié)和外部64KB的RAM。因為變量存儲在內(nèi)部RAM里運算速度比存儲在外部RAM要快得多,大部分的應用都是選擇Small模式。使用Small模式時,并不說明變量就不可以存儲在外部,只是需要特別指定,比如:unsignedcharxdataa:變量a存儲在內(nèi)部RAM。unsignedchara:變量存儲在內(nèi)部RAM。但是使用Large的模式時:unsignedcharxdataa:變量a存儲在外部RAM。unsignedchara:變量a同樣存儲在外部RAM。這就是它們之間的區(qū)別,可以看出這幾個選項只影響沒有特別指定變量的存儲空間的情況,默認存儲在所選模式的存儲空間,比如上面的變量定義unsignedchara。zCodeRomSize:單擊CodeRomSize后面的下拉箭頭,將有3個選項,如圖1-15所示。圖1-15CodeRomSize選項ySmall:program2Korless,適用于AT89C2051這些芯片,2051只有2KB的代碼空間,所以跳轉(zhuǎn)地址只有2KB,編譯的時候會使用ACALLAJMP這些短跳指令,而不會使用LCALL,LJMP指令。如果代碼地址跳轉(zhuǎn)超過2KB,那么會出錯。yCompact:2Kfunctiongs,64Kprogram,表示每個子函數(shù)的代碼大小不超過2K,整個項目可以有64K的代碼。就是說在main(里可以使用LCALL,LJMP指令,但在子程序里只會使用ACALL,AJMP指令。只有確定每個子程序不會超過2KB,才可以使用Compact方式。yLarge:64KBprogram,表示程序或子函數(shù)代碼都可以大到64KB,使用codebank還可以更大。通常都選用該方式。選擇Large方式速度不會比Small慢很多,所以一般沒有必要選擇Compact和Small方式。這里選擇Large方式。zOperating:單擊Operating后面的下拉箭頭,會有3個選項,如圖1-16所示。圖1-16Operating選項yNone:表示不使用操作系統(tǒng)。yRTX-51TinyReal-TimeOS:表示使用Tiny操作系統(tǒng)。yRTX-51FullReal-TimeOS:表示使用Full操作系統(tǒng)。Tiny是一個多任務操作系統(tǒng),使用定時器0做任務切換。在11.0592MHz時,切換任務的速度為30ms。如果有10個任務同時運行,那么切換時間為300ms。不支持中斷系統(tǒng)的任務切換,也沒有優(yōu)行級,因為切換的時間太長,實時性大打折扣。多任務情況下(比如5個,輪循一次需要150ms,即150ms才處理一個任務,這連鍵盤掃描這些事情都實現(xiàn)不了,更不要說串口接收、外部中斷了。同時切換需要大概1000個機器周期,對CPU的浪費很大,對內(nèi)部RAM的占用也很嚴重。實際上用到多任務操作系統(tǒng)的情況很少。KeilC51FullReal-TimeOS是比Tiny要好一些的系統(tǒng)(但需要用戶使用外部RAM,支持中斷方式的多任務和任務優(yōu)先級,但是KeilC51里不提供該運行庫,要另外購買。這里選擇None。②設置Output選項卡(如圖1-17所示圖1-17設置Output卡zSelectFolderforObjects:單擊該按鈕可以選擇編譯后目標文件的存儲目錄,如果不設置,就存儲在項目文件的目錄里。zNameofExecutable:設置生成的目標文件的名字,缺省情況下和項目的名字一樣。目標文件可以生成庫或者obj、HEX的格式。zCreateExecutable:如果要生成OMF以及HEX文件,一般選中DebugInformation和BrowseInformation。選中這兩項,才有調(diào)試所需的詳細信息,比如要調(diào)試C語言程序,如果不選中,調(diào)試時將無法看到高級語言寫的程序。zCreateHEXFile:要生成HEX文件,一定要選中該選項,如果編譯之后沒有生成HEX文件,就是因為這個選項沒有被選中。默認是不選中的。zCreateLibrary:選中該項時將生成lib庫文件。根據(jù)需要決定是否要生成庫文件,一般應用是不生成庫文件的。zAfterMake:欄中有以下幾個設置。zBeepwhencomplete:編譯完成之后發(fā)出咚的聲音。zStartDebugging:馬上啟動調(diào)試(軟件仿真或硬件仿真,根據(jù)需要來設置,一般是不選中。zRunUserProgram#1,RunUserProgram#2:這個選項可以設置編譯完之后所要運行的其他應用程序(比如有些用戶自己編寫了燒寫芯片的程序,編譯完便執(zhí)行該程序,將HEX文件寫入芯片,或者調(diào)用外部的仿真器程序。根據(jù)自己的需要設置。③設置Listing選項卡(如圖1-18所示圖1-18設置Listing選項卡KeilC51
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年標準安全門安裝合同協(xié)議書范本
- 2025年住宅買賣合同解析
- 2025年公寓住宅購買合同規(guī)范格式
- 2025年建筑打樁項目申請合作協(xié)議書模板
- 2025年牛羊肉市場銷售合同
- 2025年住宅建筑材料供應合同文本
- 2025年共建項目雙方協(xié)議書倡議樣本
- 2025年企業(yè)商鋪租賃合同示例
- 2025年企業(yè)合同續(xù)約流程指南
- 2025年公共服務臨時工雇傭合同
- 七年級下冊英語Unit1單元綜合測試題-人教版(含答案)
- 部編人教版五年級下冊道德與法治全冊教學課件
- 節(jié)后復工安全培訓的事故案例分析與教訓
- 五子棋基礎入門課件
- 玩魔方的論文
- 人教版鄂教版二年級下冊科學教案(全)
- 男孩的青春期性教育
- 建筑工程勞務作業(yè)服務方案
- 探究水垢的主要成份
- (完整版)小學生心理健康教育課件
- 軍隊文職專用簡歷(2023年)
評論
0/150
提交評論