單片機(jī)編程學(xué)習(xí)keil軟件解讀hex文件_第1頁(yè)
單片機(jī)編程學(xué)習(xí)keil軟件解讀hex文件_第2頁(yè)
單片機(jī)編程學(xué)習(xí)keil軟件解讀hex文件_第3頁(yè)
單片機(jī)編程學(xué)習(xí)keil軟件解讀hex文件_第4頁(yè)
單片機(jī)編程學(xué)習(xí)keil軟件解讀hex文件_第5頁(yè)
已閱讀5頁(yè),還剩62頁(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)介

KeilKeil提供各種窗口如一、程序調(diào)試時(shí)的常用Keil軟件在調(diào)試程序時(shí)提供了多個(gè)窗口,主要包括輸出窗口(OutputWindows、觀察indowsindow圖1調(diào)試窗口(命令窗口、器窗口、觀察窗口1、器窗器窗口中可以顯示系統(tǒng)中各種內(nèi)存中的值,通過(guò)在Address后的編緝框內(nèi)輸入“字母:數(shù)字”即可顯示相應(yīng)內(nèi)存值,其中字母可以是C、D、I、X,分別代表代碼空間、直接尋址的片內(nèi)空間、間接尋址的片內(nèi)空間、擴(kuò)展的外部RAM空間,數(shù)字代表想D:00RAMC:0即可顯示從0ROM單元中的值,即查看程序的二進(jìn)制代碼。該窗口的顯示值可以以各的Ascii項(xiàng)則將以字符型式顯示,選中Float項(xiàng)將相鄰四字節(jié)組成的浮點(diǎn)數(shù)形式Double8字節(jié)組

圖2器數(shù)值各種方式顯示選圖 Unsigned和Signed則分別代表無(wú)符號(hào)形式和入的I:0,那么00H01H單元的內(nèi)容將會(huì)組成一個(gè)整型而如果你輸入的是I:1,01H02H圖 ModifyMemoryatX:xx用于2、工程窗口寄A、B、DPTR、SP、PSW等,有一些是實(shí)際中并不存在或雖然存在卻不能對(duì)其操作的如PC、Status等。每當(dāng)程序中執(zhí)行到對(duì)某寄存器的3、觀察窗A、B、DPTR等,如果需要觀,,二、各種窗口在程序調(diào)試中

4#include unsignedintsbit voidmDelay(unsignedchar unsignedint

延時(shí)for(;DelayTime>0;DelayTime-- void P1.00.1S編譯、連接后按Ctrl+F5進(jìn)入調(diào)試,按F10單步執(zhí)行。注意觀察窗口,其中有一個(gè)頁(yè)為內(nèi)部,該窗口的變量自動(dòng)變?yōu)镈elayTime和j。另外兩個(gè)頁(yè)Watch#1和Watch#2可以加入自定義的觀察變量,點(diǎn)擊“typeF2toeditF2Watch#1I,觀察它的變化。在程序較復(fù)雜,變量很多的場(chǎng)合,這兩個(gè)自定義觀察窗口可以篩選出我們自己感的變量加以觀察。觀察窗口中變量的值不僅可以觀察,還可以修改,以IF2I9F10單步執(zhí)行,即可以很快執(zhí)行到P1_0=!P1_0程序行。該窗口顯示的變量值可以以十進(jìn)制或十六進(jìn)制形式顯示,方法是在顯示窗口點(diǎn)右鍵,在快捷菜單中選擇如圖5所示。點(diǎn)擊View->DissamblyWindow可鼠標(biāo)右鍵現(xiàn)快捷菜單6MixedMode是以混合方式顯示,AssemblyMode是以反程序調(diào)試中常使用設(shè)置斷點(diǎn)然后全速運(yùn)行的方式,在斷點(diǎn)處可以獲得各變量值,但卻無(wú)法知道程序到達(dá)斷點(diǎn)以前究竟執(zhí)行了哪些代碼,而這要為Keil了在運(yùn)行程序之前打開(kāi)調(diào)試工具條上的允許代看,

566所示,其中前面標(biāo)有“-”號(hào)的行就是中斷以前執(zhí)行的代碼,可以按窗口邊的上卷按是否滿足我們的要求,即是否確實(shí)延時(shí)10毫秒,展開(kāi)工程窗口Regs頁(yè)中Sys樹(shù),其Sec項(xiàng)記錄了從程序開(kāi)始執(zhí)行到當(dāng)前程序流逝的秒數(shù)。點(diǎn)擊RST按鈕以復(fù)位程序,Sec的值回零,按下F10鍵,程序窗口中的黃色箭頭指向mDelay(10)行,此時(shí),記錄下Sec值 ,然后再按F10執(zhí)行完該段程序,再次查看Sec的值為0. 是0.01秒,所以延時(shí)時(shí)間大致是正確的。讀者可以試著將延時(shí)程序中的unsignedint改為unsignedchar試試看時(shí)間是否仍正確。注意,使用這能的前提是在項(xiàng)目設(shè)置中正確設(shè)置Keil串行窗口的應(yīng)用。該程序?qū)崿F(xiàn)一個(gè)行編緝功能,每鍵入一個(gè)字母,會(huì)立即回顯到窗SBUFser_init是串行口初始化程序,要使用串行口,必須首先對(duì)串行口進(jìn)行初始化。例3: RI,NEXT如果串口接收到字 ;SBUF中取字 SBUF,A;回送到發(fā)送SBUF ;發(fā)送完成,轉(zhuǎn)

;中斷初始化 在窗口中擊鼠標(biāo)右鍵,出現(xiàn)一個(gè)彈出式菜單,選擇“AsciiModeAscii碼的方式顯示一個(gè)串行口,所以Serial2串行窗口不起作用。一介紹,另外還將介紹Keil的部份高級(jí)調(diào)試技巧。1、接并行端口、串行端口等常用外設(shè)的使用情況,Keil提該菜單的下拉菜單內(nèi)容與你建立項(xiàng)目時(shí)所選的CPUSerial(串行口、Timer(定時(shí)/計(jì)數(shù)器)這四個(gè)設(shè)

圖1設(shè)備之并行端些框中直觀地觀察和更改各設(shè)備的運(yùn)行情況。ADELAY100編譯、連接進(jìn)入調(diào)試后,點(diǎn)擊Peripherals->I/O-Ports->Port1打開(kāi),如1所示,全速運(yùn)View->PeriodicWindowUpdata,這樣可以形象地Peripherals->I/O-Ports->Timer0即出現(xiàn)2所示定時(shí)/計(jì)數(shù)器0的接口界面,可以直接選擇Mode組圖2設(shè)備之定時(shí)TR0,statusstoprun,如果全速運(yùn)行程序,此時(shí)2、性能分看這個(gè)工具如何使用,例5:#includesbit voidmDelay(unsignedchar unsignedintj=0; }voidmDelay1(unsignedchar unsignedintj=0;

void unsignedint 延時(shí) }編譯連接。進(jìn)入調(diào)試狀態(tài)后使用菜單View->PerformanceyzerWindow,打開(kāi)性能分析框進(jìn)入該框后只有一項(xiàng)unspecified,點(diǎn)鼠標(biāo)右鍵在快捷菜單中選擇SetupPA即打開(kāi)性能分析設(shè)置框,對(duì)于C語(yǔ)言程序,該框右側(cè)的“FunctionSymbol”下的列表框給出函數(shù)符號(hào),雙擊某一符號(hào),該符號(hào)即出現(xiàn)在DefinePerformanceyzer下的編緝框Define按鈕,即將該函數(shù)加入其上的分析列表框。對(duì)于匯編語(yǔ)言源程序,F(xiàn)unctionSymbol下的列表框中不會(huì)出現(xiàn)子程序名,可以直接在編緝框中輸入子程序名,點(diǎn)擊Close關(guān)閉窗口,回到性能分析窗口,此時(shí)窗口共有4個(gè)選項(xiàng)。全速執(zhí)行程序,可以看到mDelaymDelay1后出現(xiàn)一個(gè)藍(lán)色指示條,配合上面的標(biāo)尺可以直觀地看出每Avg的意義,實(shí)際上,由于條件的變化,某些函數(shù)執(zhí)行的時(shí)間不一定是一個(gè)固定的值,借助于這些信息,可以對(duì)程序有更詳細(xì)的了解。下面將mDelay1函數(shù)略作修改作一演示。voidmDelay1(unsignedchar staticunsignedchark;unsignedintj=0; k++;看出Min、Max、Avg的意義。3、變量SourceBrowse窗口中提供了完善的管理方法,如過(guò)濾器可以分門(mén)別類地列出各種類別的變量名,可以對(duì)這些變量按Class(組、Type(類型、Space4、代碼作用范在你寫(xiě)的程序中,有些代碼可能不會(huì)被執(zhí)行到(這是無(wú)效的代碼,也有一些代碼條上的CodeCoverageWindow可打開(kāi)代碼作用范圍分析的框,里面有各個(gè)模塊代碼執(zhí)信息,請(qǐng)參考Keil自帶的幫助文件GS51.PDF。1、串行窗口與實(shí)際硬件Keil中進(jìn)行設(shè)置。方法是首先在CommandMODEASSIGN命令將串行窗口與實(shí)際的串口相關(guān)聯(lián),下面我們通過(guò)一個(gè)實(shí)例來(lái)說(shuō)明如何操作。例6: JMPSER_INT EA;

ESJMP$ RI,NEXT如果串口接收到字 ;SBUF中取字 SBUF,A;回送到發(fā)送SBUF

Keil自帶的串行為簡(jiǎn)單實(shí)我們不借助于其它的硬而是PC機(jī)上的兩個(gè)串口互換數(shù)COM1發(fā)送COM2接收,而COM2發(fā)送則由COM1接收,為此,需要做一根連接線將這兩個(gè)串口連起來(lái),做法很簡(jiǎn)單,找兩個(gè)可以插入PC機(jī)串口的DIN9插座(母然后用一根3芯線將它2——3——5——接好線把兩個(gè)插頭分別插入PC12PC機(jī)上的串口終端調(diào)19200,n,8,119200,無(wú)奇偶校驗(yàn),8位數(shù)據(jù),1位停止位。在Keil調(diào)試窗口的command頁(yè)中輸入:>modecom1>assigncom1行是將串口1(com1)分配給串行窗口。中,說(shuō)明已接收到了發(fā)送過(guò)來(lái)的數(shù)據(jù)。切換到uVison,查看串行窗口1,會(huì)看到這里的確接收2、從端口送入程序調(diào)試中如果需要有信號(hào)輸入,比如類程序,需要從外界獲得數(shù)據(jù),由于必須采用一些替代的方法,例如,某電路用P1口作為口,那么可以使用的法是利用接口,打開(kāi)PORT1,用鼠標(biāo)在點(diǎn)擊相應(yīng)端口位,使其變?yōu)楦唠娖交虻碗娖?,法是直接在command頁(yè)輸入port1=數(shù)值,以下是一個(gè)小小的驗(yàn)證程序。例7: 該程序從P1口獲得數(shù)據(jù),如果P1口的值是0,那么就讓R0的值為0AAH,否則讓R0序,注意確保View->PeriodicWindowUpdata處于選中狀態(tài),然后在Command后輸入PORT1=0回車后可以發(fā)現(xiàn)觀察窗口中的R0的值變成了0AAH,然后再輸入PORT1=1或其它非零值,則R0的值會(huì)變?yōu)?5H。3、直接更改內(nèi)程序,使用30H和31H作為單元,采入的數(shù)據(jù)由這兩個(gè)單元保存,那么我們更了30H和31H單元的值就相當(dāng)于這個(gè)程序到了數(shù)據(jù),這可以在內(nèi)存窗口中直其中地址是指待寫(xiě)入內(nèi)存單元的地址,而數(shù)據(jù)則是待寫(xiě)入該地址的數(shù)據(jù)。例如_WBYTE(0x30,11)會(huì)將值11寫(xiě)入內(nèi)存地址十六進(jìn)制30H單元KeilKeil的強(qiáng)大功能,不過(guò),對(duì)于初學(xué)者路的變化,例如數(shù)碼管點(diǎn)亮、發(fā)光管發(fā)光等。為了讓初學(xué)者更好地,筆者利用Keil提供的AGSI這兩塊仿真板將枯燥無(wú)味可以使初學(xué)者在沒(méi)有硬件時(shí)就單片機(jī)的門(mén)檻。圖1是鍵盤(pán)、LED顯示實(shí)驗(yàn)仿真板的圖,從圖中可以看出,該板比較簡(jiǎn)P18個(gè)發(fā)光二P34個(gè)按鈕,圖2碼管,16個(gè)按鍵(4*4的成的實(shí)驗(yàn)。這兩塊仿真實(shí)驗(yàn)板實(shí)際上是兩個(gè)dll文ledkey.dllsimboard.dll,安裝時(shí)只要根據(jù)需要將這兩個(gè)或某一個(gè)文件拷貝到keil軟件的c51\bin設(shè)置的方法是點(diǎn)擊Project->OptionforTarget‘Target1’打開(kāi)框,然后選中DebugDialog:Parameter:后的編緝框中輸入真板)進(jìn)行調(diào)試,就輸入-dledkey,如

2CTRL+F5進(jìn)入調(diào)試,此時(shí),點(diǎn)擊菜同樣,在設(shè)置時(shí)如果輸入-dsimboard則能夠調(diào)出如圖2的界面。第一塊仿真板的硬件電路很簡(jiǎn)單,電路圖已在板上,第二塊板實(shí)現(xiàn)的功能稍復(fù)雜,其鍵盤(pán)和數(shù)碼顯示管部份的電路原理圖如圖4常用字形碼,讀者也可以根據(jù)圖中的接線自行寫(xiě)出其它如、B、C、、E、F等的字形碼。除了鍵18

30123456789

73

驅(qū)

hgf dcb以下以一個(gè)稍復(fù)雜的程序?yàn)槔?,說(shuō)明鍵盤(pán)、LED顯示實(shí)驗(yàn)仿真板的使用。該程序?qū)崿F(xiàn)P3.2的鍵為開(kāi)始鍵,按此鍵則燈開(kāi)始流動(dòng)(由上而下P3.3的鍵為停止鍵,按此鍵則停止流動(dòng),所有燈暗,接P3.4的鍵為向上鍵,按此鍵則燈由上向P3.5的鍵為向下鍵,按此鍵則燈由下向上流動(dòng)。8:UpDownBIT00H;上下行標(biāo)志StartEndBIT01H起動(dòng)及停止標(biāo)LAMPCODEEQU 21H;存放流動(dòng)的數(shù)據(jù)代碼 CLRStartEnd ACALLKEY JNB ACALLKEYPROC LNEXT:ACALLLAMP DELAY:MOVR7,#100 JBACC.2,KeyStart JBACC.3,KeyOverJBJBACC.5,KeyDown StartEnd;第一個(gè)鍵按下后的處理 CLRStartEnd;第二個(gè)鍵按下后的處理 CLRF0F0, ;將P3口的接有鍵的四位置1 ;取P3的值 ;將其余4位置1CPLA K_RET;如果為0則一定無(wú)鍵按下 DELAY;否則延時(shí)去鍵抖 CPL B,A確實(shí)有鍵按下,B F0K_RET:; JBStartEnd,LampStartStartEnd=1,JBUpDown,LAMPUP RLA LCALLD500MSLCALLD500MS RR LCALLD500MS下面的一個(gè)例子是關(guān)于第二塊實(shí)驗(yàn)仿真板的,演示點(diǎn)亮8位數(shù)碼管。例9:ORG0000h A DIS DB0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0FFH RAM58H5FH2-9填充該顯示區(qū),然后調(diào)用顯示程序顯示2-9。這里是用了最簡(jiǎn)單的逐位顯示的方式編寫(xiě)的顯示程序。能,在需要I/O口長(zhǎng)期處于低電平時(shí),你就不必一直用手按著鼠標(biāo)的左鍵啦。Keil工程文件的建立、設(shè)置與目標(biāo)文件的獲得機(jī)的軟件,這從近年來(lái)各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了包C過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(uVision)KeilPentium或以上的CPU,16MB或RAM20M以上空閑的硬盤(pán)空間WIN98NTWIN2000WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51系列單片機(jī)的者來(lái)說(shuō)是十分必要的,如果CKeil幾乎就是你的不二之選(目前在國(guó)內(nèi)你只能買(mǎi)到該軟件、而89C51單片機(jī)作為主,這種單片機(jī)性屬于MCS-51系列,其內(nèi)部有4K的FLASHROM,接4個(gè)按鈕開(kāi)關(guān),我們的第一個(gè)任務(wù)是讓接在P1引腳上的發(fā)光二極管依次循環(huán)點(diǎn)亮。一、Keil工程的建立Keil軟件的集成開(kāi)發(fā)環(huán)境,這里假設(shè)讀者已正確安裝了該軟件,可以從桌面上直接雙擊uVision的圖標(biāo)以啟動(dòng)該軟件。UVison啟動(dòng)后程序窗口的左邊有一個(gè)工程管理窗口該窗口有3個(gè),分別是Files、Regs、和Books,這三個(gè)頁(yè)分別顯示當(dāng)前項(xiàng)目的文件結(jié)構(gòu)、CPU的寄存器及部份特殊功能寄存器的值(調(diào)試時(shí)才出現(xiàn))CPUKeil,那么這三個(gè)頁(yè)全是空的。1、源文件的建立AA1

保存該文件,注意必須加上擴(kuò)展名(asma51為擴(kuò)展名,這里假定將文件保存為exam1.asm。文本編緝器編寫(xiě),而且,KeilUltraEdit之類的編緝2、建立工程文件CPUCPU的特性并不完全相同,確定編譯、匯編、連接的參數(shù),指定調(diào)試的方式,有一些項(xiàng)目還會(huì)有多個(gè)文件組成等,為管理和使用方便,Keil使用工程(Project)點(diǎn)擊“Project->NewProject…”菜單,出現(xiàn)一個(gè)框,要求給將要建立的工程起一個(gè)存”按鈕,出現(xiàn)第二個(gè)框,如圖2你所用的型號(hào)),Keil支持的CPUAtmel89C51芯ATMEL前面的“+”號(hào),展開(kāi)該層,點(diǎn)擊其中的89C51,然后再點(diǎn)擊工程窗口的文件頁(yè)中,出現(xiàn)了“Target可以看到下一SourceGroup1”,源程序加入,點(diǎn)擊“SourceGroup13所示。選中其中的“AddfiletoGroup”SourceGroup1”,出現(xiàn)一個(gè)框,要求默認(rèn)Csourcefile(*.c),也就是C為擴(kuò)展名的文件,而我們的文件是以asm為擴(kuò)展名的,所以在列表框中exam1.asm,要將文件類這樣,在列表框中就可以找到exam1.asm文件

23件,這時(shí)會(huì)出現(xiàn)如圖4所示的框,提二、工程的詳細(xì)設(shè)置

4設(shè)置框中的Target頁(yè)面,如5所示,Xtal后面的數(shù)值是晶振頻可用頻率值,對(duì)于我們所選的 圖5對(duì)目標(biāo)進(jìn)行設(shè)所用晶振頻率相同,如果沒(méi)必要了解程序執(zhí)行的時(shí)間,也可以不設(shè),這里設(shè)置為12。MemoryModelRAM使用情況,有三個(gè)選擇項(xiàng),Small是所有變量都在單片RAM中;CompactRAMLarget則是可以使用全部;Operating操作系統(tǒng))OffChipCodememoryROM的地址范圍,OffChipxDatamemoryRAM的地址范圍,這些選擇項(xiàng)必須根據(jù)所用硬件來(lái)決定,由用于生成可執(zhí)行代碼文件(可以用編程器寫(xiě)入單片機(jī)的HEX格式文件,文件的擴(kuò)展名初學(xué)者易疏忽的,在此特別提醒注意。選中Debuginformation將會(huì)產(chǎn)生調(diào)試信息,這些信息用于調(diào)試,如果需要對(duì)程序進(jìn)行調(diào)試,應(yīng)當(dāng)選中該項(xiàng)。Browseinformation是產(chǎn)生瀏覽信是用來(lái)選擇最終的目標(biāo)文件所在的文件夾,默認(rèn)是與工程文件在同一個(gè)文件夾中。NameofExecutable用于指定最終生成的目標(biāo)文件的名字,默認(rèn)與工程的名字相同,這兩工程設(shè)置框中的其它各頁(yè)C51編譯選項(xiàng)、A51的匯編選項(xiàng)、BL51連接器的連接選項(xiàng)等用法

6Listing頁(yè)用于調(diào)整生成的列表文件選項(xiàng)。在匯編或編譯完成后將產(chǎn)生(*.lst)的列進(jìn)行細(xì)致的調(diào)節(jié),其中比較常用的選項(xiàng)是“CCompileListing”下的“AssambleCode”項(xiàng),選中該項(xiàng)可以在列表文件中生成C語(yǔ)言源程序所對(duì)應(yīng)的匯編代碼。C51頁(yè)用于對(duì)Keil的C51編譯器的編譯過(guò)程進(jìn)行控制,其中比較常用的是“Code以對(duì)代碼多至9級(jí)優(yōu)化,默認(rèn)使用級(jí)別試一試。Emphasis是選擇編

三、編譯、連接如果選擇RebuildAlltargetfiles將會(huì)代碼是的,而Translate….項(xiàng)則僅以上操作也可以通過(guò)按鈕直8是有關(guān)編譯、設(shè)置的工具Build

89入并寫(xiě)到中,同時(shí)還產(chǎn)生了一些其它相關(guān)的文件,可被用于Keil的仿真與調(diào)試,這時(shí)Keil的調(diào)試命令、匯編與斷點(diǎn)設(shè)一、常用調(diào)試命令Session調(diào)試狀態(tài),Keil內(nèi)建了一個(gè)仿真CPU用來(lái)模擬執(zhí)行程序,該仿真CPU功進(jìn)入調(diào)試狀態(tài)后,界面與編緝狀態(tài)相比有明顯的變化,Debug菜單項(xiàng)中原來(lái)不能用令現(xiàn)在已可以使用了,會(huì)多出一個(gè)用于運(yùn)行和調(diào)試的工具條,如圖1所示,Debug菜

1使用菜單STEP或相應(yīng)令按鈕或使用快捷鍵F11可STEPOVER或功能F10可以中的子程序或高級(jí)語(yǔ)言中的函數(shù)作為一個(gè)語(yǔ)句來(lái)全速執(zhí)行

2行,如圖2所示。每按F11,即執(zhí)行該箭頭所指程序行,然后箭頭指向下一行,當(dāng)箭頭指LCALLDELAYF11DELAY的第一行。不斷按F11鍵,即可逐步執(zhí)行延時(shí)子程序。D2DJNZR6,D2這一行程序執(zhí)行六萬(wàn)多次來(lái)達(dá)到延時(shí)的目的,如果用按F11六萬(wàn)多,JMPLOOP行。第三種方法,在開(kāi)始調(diào)試的,按F10而非F11,程序也將單步執(zhí)行,不同的是,執(zhí)行到lcall delay行時(shí),按下F10鍵,調(diào)試光標(biāo)不進(jìn)入子程序的內(nèi)部,而是全速執(zhí)行完該子程序,然后直接指向下一行“JMPLOOP”。靈活應(yīng)用這幾種方法,可以大大提二、匯Keil的調(diào)試環(huán)境以后,如果發(fā)現(xiàn)程序有錯(cuò),可以直接對(duì)源程序進(jìn)行修改,但是麻煩,為此Keil軟件提供了匯編的能力,將光標(biāo)定位于需要修改的程序行上,用菜單Debug->InlineAssambly…即可出現(xiàn)如圖3的框,在EnterNew后面的編緝框內(nèi)直接輸入需更改的程序語(yǔ)三、斷點(diǎn)設(shè)置

圖3匯編窗的功能;Debug->Enable/DisableBreakpoint是開(kāi)啟或暫停光標(biāo)所在行的斷點(diǎn)功能;Debug->DisableAllBreakpoint暫停所有斷點(diǎn);Debug->KillAllBreakPoint清除所有的斷點(diǎn)設(shè)Experssion后中鍵入DelayCount當(dāng)?shù)谌螆?zhí)行到Delay時(shí)才停止程序運(yùn)在ExperssionDelay,在Command后鍵入printf(“SubRoutine‘Delay’hasbeenCalled\n”)主程序每次Delay程序時(shí)并不停止運(yùn)行,但會(huì)在輸出窗口Command頁(yè)輸出一行字符,即SubRoutine‘Delay’hasbeen設(shè)置斷點(diǎn)前先在輸出窗口的

圖4斷點(diǎn)設(shè)置4)Commandprintf(“SubRoutineDelay’hasbeenCalled%d用的次數(shù),如SubRoutine‘Delay’hasbeenCalled10times。C源程序語(yǔ)言的調(diào)試,表達(dá)式中可以直接使用變量名,但必須要注意,設(shè)置四、實(shí)例調(diào)試按0到LY程序不能繼續(xù)往下執(zhí)行,同時(shí)發(fā)現(xiàn)調(diào)試工具條上的t按鈕變成了紅色,說(shuō)明程序在此不調(diào)用的子程序出了差錯(cuò)。為查明出錯(cuò)原因,按t按鈕使程停止執(zhí)行,然后按RST按鈕使程序復(fù)位,再次按下F10到LY行時(shí),改按1鍵到下1,可以發(fā)現(xiàn)在執(zhí)行到“DJNZ R6,1”行時(shí),程序不斷地從這一行轉(zhuǎn)移到上一行,同時(shí)觀察左側(cè)的寄存器的值,會(huì)發(fā)現(xiàn)6的值始終在FFH和FEH之間變化,不會(huì)減小,而我們的預(yù)期是6的值不斷減小,減到0后下執(zhí)行,因此這個(gè)結(jié)果與預(yù)期不符,通過(guò)這樣的觀察,不難發(fā)現(xiàn)問(wèn)題是因?yàn)闃?biāo)號(hào)寫(xiě)是否正確,可以先使用匯編功能測(cè)試一下。把光標(biāo)定位于程序行“DJNZ R6,1,打開(kāi)匯編的框,將程序改為“DJNZR7,0E,即轉(zhuǎn)回本條指令所在行繼續(xù)執(zhí)行,其中0EH是本條指令在程序器中的位置,這個(gè)值可以通過(guò)匯編窗口看到,如圖3所示。KeilKeil提供各種窗口如一、程序調(diào)試時(shí)的常用Windowsindowsindow圖1調(diào)試窗口(命令窗口、器窗口、觀察窗口1、器窗器窗口中可以顯示系統(tǒng)中各種內(nèi)存中的值,通過(guò)在Address后的編緝框內(nèi)輸入“字母:數(shù)字”即可顯示相應(yīng)內(nèi)存值,其中字母可以是C、D、I、X,分別代表代碼空間、直接尋址的片內(nèi)空間、間接尋址的片內(nèi)空間、擴(kuò)展的外部RAM空間,數(shù)字代表想D:00RAMC:0即可顯示從0ROM單元中的值,即查看程序的二進(jìn)制代碼。該窗口的顯示值可以以各的Ascii項(xiàng)則將以字符型式顯示,選中Float項(xiàng)將相鄰四字節(jié)組成的浮點(diǎn)數(shù)形式Double8字節(jié)組

圖2器數(shù)值各種方式顯示選圖 Unsigned和Signed則分別代表無(wú)符號(hào)形式和入的I:0,那么00H01H單元的內(nèi)容將會(huì)組成一個(gè)整型而如果你輸入的是I:1,01H02H圖 ModifyMemoryatX:xx用于2、工程窗口寄A、B、DPTR、SP、PSW等,有一些是實(shí)際中并不存在或雖然存在卻不能對(duì)其操作的如PC、Status等。每當(dāng)程序中執(zhí)行到對(duì)某寄存器的3、觀察窗A、B、DPTR等,如果需要觀,,二、各種窗口在程序調(diào)試中

4#include unsignedintsbit voidmDelay(unsignedchar unsignedint

延時(shí)for(;DelayTime>0;DelayTime-- void P1.00.1S編譯、連接后按Ctrl+F5進(jìn)入調(diào)試,按F10單步執(zhí)行。注意觀察窗口,其中有一個(gè)頁(yè)為內(nèi)部,該窗口的變量自動(dòng)變?yōu)镈elayTime和j。另外兩個(gè)頁(yè)Watch#1和Watch#2可以加入自定義的觀察變量,點(diǎn)擊“typeF2toeditF2Watch#1I,觀察它的變化。在程序較復(fù)雜,變量很多的場(chǎng)合,這兩個(gè)自定義觀察窗口可以篩選出我們自己感的變量加以觀察。觀察窗口中變量的值不僅可以觀察,還可以修改,以IF2I9F10單步執(zhí)行,即可以很快執(zhí)行到P1_0=!P1_0程序行。該窗口顯示的變量值可以以十進(jìn)制或十六進(jìn)制形式顯示,方法是在顯示窗口點(diǎn)右鍵,在快捷菜單中選擇如圖5所示。點(diǎn)擊View->DissamblyWindow可鼠標(biāo)右鍵現(xiàn)快捷菜單6MixedMode是以混合方式顯示,AssemblyMode是以反程序調(diào)試中常使用設(shè)置斷點(diǎn)然后全速運(yùn)行的方式,在斷點(diǎn)處可以獲得各變量值,但卻無(wú)法知道程序到達(dá)斷點(diǎn)以前究竟執(zhí)行了哪些代碼,而這要為Keil了在運(yùn)行程序之前打開(kāi)調(diào)試工具條上的允許代看,

566所示,其中前面標(biāo)有“-”號(hào)的行就是中斷以前執(zhí)行的代碼,可以按窗口邊的上卷按是否滿足我們的要求,即是否確實(shí)延時(shí)10毫秒,展開(kāi)工程窗口Regs頁(yè)中Sys樹(shù),其Sec項(xiàng)記錄了從程序開(kāi)始執(zhí)行到當(dāng)前程序流逝的秒數(shù)。點(diǎn)擊RST按鈕以復(fù)位程序,Sec的值回零,按下F10鍵,程序窗口中的黃色箭頭指向mDelay(10)行,此時(shí),記錄下Sec值 ,然后再按F10執(zhí)行完該段程序,再次查看Sec的值為0. 是0.01秒,所以延時(shí)時(shí)間大致是正確的。讀者可以試著將延時(shí)程序中的unsignedint改為unsignedchar試試看時(shí)間是否仍正確。注意,使用這能的前提是在項(xiàng)目設(shè)置中正確設(shè)置Keil串行窗口的應(yīng)用。該程序?qū)崿F(xiàn)一個(gè)行編緝功能,每鍵入一個(gè)字母,會(huì)立即回顯到窗SBUFser_init是串行口初始化程序,要使用串行口,必須首先對(duì)串行口進(jìn)行初始化。例3: RI,NEXT如果串口接收到字 ;SBUF中取字 SBUF,A;回送到發(fā)送SBUF ;發(fā)送完成,轉(zhuǎn)

;中斷初始化 在窗口中擊鼠標(biāo)右鍵,出現(xiàn)一個(gè)彈出式菜單,選擇“AsciiModeAscii碼的方式顯示一個(gè)串行口,所以Serial2串行窗口不起作用。一介紹,另外還將介紹Keil的部份高級(jí)調(diào)試技巧。1、接并行端口、串行端口等常用外設(shè)的使用情況,Keil提該菜單的下拉菜單內(nèi)容與你建立項(xiàng)目時(shí)所選的CPUSerial(串行口、Timer(定時(shí)/計(jì)數(shù)器)這四個(gè)設(shè)

圖1設(shè)備之并行端些框中直觀地觀察和更改各設(shè)備的運(yùn)行情況。ADELAY100編譯、連接進(jìn)入調(diào)試后,點(diǎn)擊Peripherals->I/O-Ports->Port1打開(kāi),如1所示,全速運(yùn)View->PeriodicWindowUpdata,這樣可以形象地Peripherals->I/O-Ports->Timer0即出現(xiàn)2所示定時(shí)/計(jì)數(shù)器0的接口界面,可以直接選擇Mode組圖2設(shè)備之定時(shí)TR0,statusstoprun,如果全速運(yùn)行程序,此時(shí)2、性能分看這個(gè)工具如何使用,例5:#includesbit voidmDelay(unsignedchar unsignedintj=0; }voidmDelay1(unsignedchar unsignedintj=0;

void unsignedint 延時(shí) }編譯連接。進(jìn)入調(diào)試狀態(tài)后使用菜單View->PerformanceyzerWindow,打開(kāi)性能分析框進(jìn)入該框后只有一項(xiàng)unspecified,點(diǎn)鼠標(biāo)右鍵在快捷菜單中選擇SetupPA即打開(kāi)性能分析設(shè)置框,對(duì)于C語(yǔ)言程序,該框右側(cè)的“FunctionSymbol”下的列表框給出函數(shù)符號(hào),雙擊某一符號(hào),該符號(hào)即出現(xiàn)在DefinePerformanceyzer下的編緝框Define按鈕,即將該函數(shù)加入其上的分析列表框。對(duì)于匯編語(yǔ)言源程序,F(xiàn)unctionSymbol下的列表框中不會(huì)出現(xiàn)子程序名,可以直接在編緝框中輸入子程序名,點(diǎn)擊Close關(guān)閉窗口,回到性能分析窗口,此時(shí)窗口共有4個(gè)選項(xiàng)。全速執(zhí)行程序,可以看到mDelaymDelay1后出現(xiàn)一個(gè)藍(lán)色指示條,配合上面的標(biāo)尺可以直觀地看出每Avg的意義,實(shí)際上,由于條件的變化,某些函數(shù)執(zhí)行的時(shí)間不一定是一個(gè)固定的值,借助于這些信息,可以對(duì)程序有更詳細(xì)的了解。下面將mDelay1函數(shù)略作修改作一演示。voidmDelay1(unsignedchar staticunsignedchark;unsignedintj=0; k++;看出Min、Max、Avg的意義。3、變量SourceBrowse窗口中提供了完善的管理方法,如過(guò)濾器可以分門(mén)別類地列出各種類別的變量名,可以對(duì)這些變量按Class(組、Type(類型、Space4、代碼作用范在你寫(xiě)的程序中,有些代碼可能不會(huì)被執(zhí)行到(這是無(wú)效的代碼,也有一些代碼條上的CodeCoverageWindow可打開(kāi)代碼作用范圍分析的框,里面有各個(gè)模塊代碼執(zhí)信息,請(qǐng)參考Keil自帶的幫助文件GS51.PDF。1、串行窗口與實(shí)際硬件Keil中進(jìn)行設(shè)置。方法是首先在CommandMODEASSIGN命令將串行窗口與實(shí)際的串口相關(guān)聯(lián),下面我們通過(guò)一個(gè)實(shí)例來(lái)說(shuō)明如何操作。例6: JMPSER_INT EA;

ESJMP$ RI,NEXT如果串口接收到字 ;SBUF中取字 SBUF,A;回送到發(fā)送SBUF

Keil自帶的串行為簡(jiǎn)單實(shí)我們不借助于其它的硬而是PC機(jī)上的兩個(gè)串口互換數(shù)COM1發(fā)送COM2接收,而COM2發(fā)送則由COM1接收,為此,需要做一根連接線將這兩個(gè)串口連起來(lái),做法很簡(jiǎn)單,找兩個(gè)可以插入PC機(jī)串口的DIN9插座(母然后用一根3芯線將它2——3——5——接好線把兩個(gè)插頭分別插入PC12PC機(jī)上的串口終端調(diào)19200,n,8,119200,無(wú)奇偶校驗(yàn),8位數(shù)據(jù),1位停止位。在Keil調(diào)試窗口的command頁(yè)中輸入:>modecom1>assigncom1行是將串口1(com1)分配給串行窗口。中,說(shuō)明已接收到了發(fā)送過(guò)來(lái)的數(shù)據(jù)。切換到uVison,查看串行窗口1,會(huì)看到這里的確接收2、從端口送入程序調(diào)試中如果需要有信號(hào)輸入,比如類程序,需要從外界獲得數(shù)據(jù),由于必須采用一些替代的方法,例如,某電路用P1口作為口,那么可以使用的法是利用接口,打開(kāi)PORT1,用鼠標(biāo)在點(diǎn)擊相應(yīng)端口位,使其變?yōu)楦唠娖交虻碗娖剑ㄊ侵苯釉赾ommand頁(yè)輸入port1=數(shù)值,以下是一個(gè)小小的驗(yàn)證程序。例7: 該程序從P1口獲得數(shù)據(jù),如果P1口的值是0,那么就讓R0的值為0AAH,否則讓R0序,注意確保View->PeriodicWindowUpdata處于選中狀態(tài),然后在Command后輸入PORT1=0回車后可以發(fā)現(xiàn)觀察窗口中的R0的值變成了0AAH,然后再輸入PORT1=1或其它非零值,則R0的值會(huì)變?yōu)?5H。3、直接更改內(nèi)程序,使用30H和31H作為單元,采入的數(shù)據(jù)由這兩個(gè)單元保存,那么我們更了30H和31H單元的值就相當(dāng)于這個(gè)程序到了數(shù)據(jù),這可以在內(nèi)存窗口中直其中地址是指待寫(xiě)入內(nèi)存單元的地址,而數(shù)據(jù)則是待寫(xiě)入該地址的數(shù)據(jù)。例如_WBYTE(0x30,11)會(huì)將值11寫(xiě)入內(nèi)存地址十六進(jìn)制30H單元Proteus這是我們寫(xiě)作計(jì)劃的一部分,希望能對(duì)PROTEUS初學(xué)者有所幫助。同時(shí)也望得到的反饋意見(jiàn),以幫助我們改進(jìn)(請(qǐng)注明出處)郵箱:co目第一章概 一、進(jìn)入Proteus 二、工作界 三、基本操 圖形編輯窗 預(yù)覽窗口(TheOverview 對(duì)象選擇器窗 圖形編輯的基本操 參考 參考2作原理圖仿真調(diào) 四、實(shí)例 電路圖的繪 五、實(shí)例 使用元件工具 使用狀態(tài)信息 使用 使用仿真信息窗 四、菜單命令簡(jiǎn) 主窗口菜 方格輸出窗口(Grid)菜 Smith圓圖輸出窗口(Smith)菜 直方圖輸出窗口(Histogram)菜 第一章概述和SPICE電路仿結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其電路組成的系統(tǒng)SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。本章介紹ProteusISIS軟件的工作環(huán)境和一些基本操作。一、Proteus6ProfessionalISIS6Professional1-1ProteusISIS集成環(huán)1-1二、工作界標(biāo)準(zhǔn)、繪圖、狀態(tài)欄、對(duì)象選擇按鈕、預(yù)覽對(duì)象方位控制按鈕、仿真進(jìn)程控制按鈕、 ProteusISIS的工作界三、基本操坐標(biāo)系統(tǒng)(CO-ORDINATESYSTEM)ISIS中坐標(biāo)系統(tǒng)的基本單位是10nm,主要是為了和ProteusARES保持一但坐標(biāo)系統(tǒng)點(diǎn)狀柵格(TheDotGrid)與捕捉到柵格(SnaptoaViewGrid命令在打開(kāi)和關(guān)閉間切換。點(diǎn)與點(diǎn)之ViewX-Cursor命令,選中后將會(huì)在捕捉實(shí)時(shí)捕捉(RealTimeSnap)或者是CTRL+S切換該功能。ViewRedraw命令來(lái)刷新顯示內(nèi)容,同時(shí)預(yù)覽窗口中的內(nèi)容也將被刷新。當(dāng)SHIFT鍵,用鼠標(biāo)“撞擊”邊框,這會(huì)使顯示平移。我們把這稱為Shift-Pan。預(yù)覽窗口(TheOverviewPreview特性在下列情況下被激活當(dāng)為一個(gè)可以設(shè)定朝向的對(duì)象選擇類型圖標(biāo)時(shí)(例如:Componenticon,DevicePinicon等等當(dāng)放置對(duì)象或者執(zhí)行其他非以上操作時(shí),cepreview會(huì)自動(dòng)消對(duì)象選擇器(ObjectSelector)根據(jù)由圖標(biāo)決定的當(dāng)前狀態(tài)顯示不同的內(nèi)容。顯示對(duì)象的類型Pick切換按鈕,點(diǎn)擊該按鈕可以彈出庫(kù)元件選取窗體。通對(duì)象放置(Object放置對(duì)象的步驟如下(Toceanicon2、根據(jù)對(duì)象的具體類型選擇子模式圖標(biāo)(sub-modeicon。選中對(duì)象(TagginganObject)刪除對(duì)象(DeletinganObject)拖動(dòng)對(duì)象(DragginganObject)象中單獨(dú)的labels也有效。拖動(dòng)對(duì)象(DragginganObject移動(dòng)的步驟如下(Tomovealabel)用F4、F3、F2、CTRL+F1鍵。調(diào)整對(duì)象大?。≧esizingancircuits調(diào)整對(duì)象的朝向(Reorientingan許多類型的對(duì)象可以調(diào)整朝向?yàn)?,90 ,270 被選中后“RotationandMirror”圖標(biāo)會(huì)從蘭色變?yōu)榧t色,然后就可以來(lái)改變對(duì)象的朝向。2、用鼠標(biāo)左鍵點(diǎn)擊Rotation圖標(biāo)可以使對(duì)象逆時(shí)針旋轉(zhuǎn),用鼠標(biāo)Rotation圖標(biāo)可以象按y軸鏡象。RotationandMirror圖標(biāo)是紅色時(shí),操作他們將回改變某個(gè)對(duì)象,即便你當(dāng)前沒(méi)有編輯對(duì)象(Editinganmouse:連續(xù)編輯多個(gè)對(duì)象的步驟是(Toeditasuccessionofobjectsusingthemouse)1、選擇MainMode圖標(biāo),再選擇InstantEdit圖標(biāo)。以特定的編輯模式編輯對(duì)象的步驟是(Toeditanobjectandaccessspecialeditmodes:)2、使用鍵盤(pán)通過(guò)元件的名稱編輯元件的步驟如下(Toeditacomponentbyname:)2、在彈出的框中輸入元件的名稱(partID確定后將會(huì)彈出該項(xiàng)目中任何元件的編輯框,并非只限于當(dāng)前sheet的元件。編輯完后,畫(huà)面在OBJECTSPECIFICS這一節(jié)中將詳細(xì)說(shuō)明對(duì)應(yīng)于每種對(duì)象類型的具體編輯操作方式。編輯對(duì)象(EditingAnObject編輯單個(gè)對(duì)象的步驟是(Toeditasingleobjectlabelusingthemouse:)1、選中對(duì)象。連續(xù)編輯多個(gè)對(duì)象的步驟是(Toeditasuccessionofobjectlabelsusingthemouse:)1、選擇MainMode圖標(biāo),再選擇InstantEdit圖標(biāo)。Styles這一節(jié)得到編輯local文本類型的詳細(xì)內(nèi)容。拷貝所有選中的對(duì)象(CopyingallTagged拷貝一整塊電路的方式(Tocopyasectionof移動(dòng)所有選中的對(duì)象(MovingallTaggedObjects)移動(dòng)一組對(duì)象的步驟是(Tomoveasetof你可以使用塊移動(dòng)的方式來(lái)移動(dòng)一組導(dǎo)線,而不移動(dòng)任何對(duì)象。更進(jìn)一步的討論可以參照DraggingWires這一節(jié)。刪除所有選中的對(duì)象(DeletingallTaggedObjects)刪除一組對(duì)象的步驟是(Todeleteagroupofobjects:)畫(huà)線(WIRINGUP)畫(huà)線(Wire在兩個(gè)對(duì)象間連線(Toconnectawirebetweentwoobjects)(Sinceitiscommontowishtoconnecttoexistingwires,ISISalsotreatswiresascontinuousconnectionpointsFurthermore,assuchajunctioninvariablymeansthat3wiresaremeetingatapointitalsocesadotforyou.Thiscompleyavoidsambiguitiesthatcouldotherwisearisefrommissingdots.)如果你只是在兩個(gè)連接點(diǎn)左擊,WAR將選擇一個(gè)合適的線徑。但如果你點(diǎn)了接點(diǎn),然后點(diǎn)路徑是是通過(guò)左擊另接點(diǎn)來(lái)完成的。WAR可通過(guò)使用工具菜單里WAR命令來(lái)關(guān)閉。這功能在你想在兩個(gè)連接點(diǎn)間直接定出對(duì)角線重復(fù)布線(Wire間布線。雙擊E、F,以下類同重復(fù)布線完全了上一根線的路徑。如果上一根線已經(jīng)是自動(dòng)重復(fù)布線將仍舊自動(dòng)該路徑。offsetandusedforthenewwire。工作,線所連的對(duì)象不能有標(biāo)示,否則ISIS會(huì)認(rèn)為你想拖該對(duì)象。移動(dòng)線段或線段組(Tomoveawiresegmentoragroupof從線中移走節(jié)點(diǎn)(Toremoveakinkfromawire)3(如下圖Windows窗口,除具有選擇執(zhí)行各種命令的頂部菜單和顯示當(dāng)前狀態(tài)的底部狀Proteus的縮放操作多種多樣,極大地方便了我們的設(shè)計(jì)。常見(jiàn)的幾種方式有:完全顯示(或者“Origin”命令,也可以點(diǎn)擊的按鈕或者按快捷鍵“O”來(lái)自己定位新的坐標(biāo)原點(diǎn)。Devices”框,如圖1所示。到單片機(jī)PIC16F877,雙擊“PIC16F8771所示。移到右邊的原理圖編輯區(qū)的適當(dāng)位置,點(diǎn)擊鼠標(biāo)的左鍵,就把PIC16F877放到了原理圖區(qū)。果需要加電源可以點(diǎn)擊工具箱的接線端按鈕,這時(shí)對(duì)象選擇器將出現(xiàn)一些接線端,如圖2所示。號(hào);同理也可以把電源符號(hào)POWER放到原理圖編輯區(qū)。拖動(dòng):許多類型的對(duì)象有一個(gè)或多個(gè)屬性附著??梢院苋菀椎匾苿?dòng)這些使電標(biāo)左鍵。一直按著左鍵就可以拖動(dòng)到你需要的位置,釋放鼠標(biāo)即可。對(duì)象的旋轉(zhuǎn):許多類型的對(duì)象可以調(diào)整旋轉(zhuǎn)為或通過(guò)xy軸鏡的4個(gè)按鈕。編輯對(duì)象的屬性:對(duì)象一般都具有文本屬性,這些屬性可以通過(guò)一個(gè)框進(jìn)行編輯。Proteus的智能化可以在你想要畫(huà)線的時(shí)候進(jìn)行自動(dòng)檢測(cè)。當(dāng)鼠標(biāo)的指針靠近一個(gè)對(duì)象的連接另接點(diǎn)即可。這就是Proteus的線路自動(dòng)路徑功能(簡(jiǎn)稱WAR),如果你只是在兩個(gè)連接點(diǎn)用鼠標(biāo)左擊,WAR將選擇一個(gè)合適的線徑。WAR可通過(guò)使用里的“WAR”命令按鈕來(lái)關(guān)閉或打開(kāi),也可以在菜單欄的“Tools”下找到這個(gè)圖標(biāo)。如果你想自己決定走線路徑,只需在想要拐ESC或者點(diǎn)擊鼠標(biāo)的右鍵來(lái)放棄畫(huà)線。具條中圖標(biāo)或者執(zhí)行ce/NetLabel菜單命令,這時(shí)光標(biāo)變成十字形并且將有一虛線框在工作區(qū)內(nèi)移動(dòng),再按一下鍵盤(pán)上的[Tab]鍵,系統(tǒng)彈出網(wǎng)絡(luò)標(biāo)號(hào)屬性框,在Net項(xiàng)定義網(wǎng)絡(luò)標(biāo)號(hào)比如放置總線將各總線分支連接起來(lái),方法是單擊放置工具條中圖標(biāo)或執(zhí)行ce/Bus菜單跨接線。多使用于單面板、雙面板設(shè)計(jì)中,特別是單面板設(shè)計(jì)中使用得。在單面板的設(shè)計(jì)中,當(dāng)有些銅膜線無(wú)法連接,即使Prote199SE給連通了,進(jìn)行電氣檢查也是錯(cuò)的,系統(tǒng)會(huì)顯示錯(cuò)誤標(biāo)志。通常解決的辦法是使用跳線,跳線的長(zhǎng)度應(yīng)該選擇如下幾種:6mm、8mm和10mm。放置跳ISIS在畫(huà)導(dǎo)線時(shí)能夠智能地判斷是否要放置節(jié)點(diǎn)。但在兩條導(dǎo)線交叉時(shí)是不放Proteus可以同時(shí)編輯多個(gè)對(duì)象,即整體操作。常見(jiàn)的有整體暑、整體刪除暖、整體移動(dòng)我們還需要一個(gè)虛擬儀器——電流表。點(diǎn)擊虛擬儀表按鈕罾,在對(duì)象選擇器找到“DC前還需要設(shè)置各個(gè)對(duì)象的屬性。選中電源B1,再點(diǎn)擊左鍵,出現(xiàn)了屬性框,如圖3所示。在“ComponentReference”后面填上電源的名稱;在“Voltage”后面填上電源的電動(dòng)勢(shì)的值,這里我們?cè)O(shè)置為12V流超過(guò)了絲的額定電流,絲就會(huì)熔斷??上г谡{(diào)試狀態(tài)下沒(méi)有修復(fù)令。我們可以這樣修復(fù):按圃按鈕停止調(diào)試,然后再進(jìn)入調(diào)試狀態(tài),絲就修復(fù)好了。首先我們?cè)O(shè)計(jì)一個(gè)簡(jiǎn)單的單片機(jī)電路,如圖4所示。電路的是單片機(jī)AT89C52,C1、C2和晶振B1構(gòu)成單片機(jī)時(shí)鐘電路。單片機(jī)的P1口接8個(gè)發(fā)光二極管,二極管的正極通過(guò)限流電阻接到電源的正極,兩個(gè)按鍵SB1SB2一端接到單片機(jī)的P3.2、P3.3腳,另一端接地。按下按鍵SB1時(shí),8個(gè)發(fā)光二極管從LED1LED8輪流發(fā)光。當(dāng)按下按鍵SB2時(shí)發(fā)光二極管出現(xiàn)一個(gè)框,如圖5所示。點(diǎn)擊框的“NEW”按鈕,在出現(xiàn)的框找到文件設(shè)計(jì)好的[]進(jìn)人調(diào)試狀態(tài)。點(diǎn)擊按鍵SB1,看到發(fā)光二極管,是否依次點(diǎn)亮,也試試按鍵SB2。在這個(gè)框里。我們可以設(shè)置斷點(diǎn)。鼠標(biāo)點(diǎn)擊一下程序語(yǔ)句,此時(shí)這個(gè)語(yǔ)句變?yōu)楹谏?,點(diǎn)擊右SimulationLog8051CPUSFRMemory會(huì)出現(xiàn)特殊功能寄存器(SFR)8051CPUInternal(IDATA)Memory出現(xiàn)數(shù)據(jù)寄存器窗口。比較有用的還是WatchWindow窗口點(diǎn)擊一下將出現(xiàn)圖9的窗口在這里可以添加常用的寄存器。P1P1P1WatchWindow窗口。我們可發(fā)現(xiàn)無(wú)論在單步調(diào)試狀態(tài)還是在全速調(diào)試狀態(tài),WatchWindow的內(nèi)容都會(huì)隨著寄存器的變化而變化,這點(diǎn)是很有用的。四、電路圖的繪1、將所需元器件加入到對(duì)象選擇器窗口。PickingComponentsintothe彈出“PickDevices”頁(yè)面,在“ 將“7SEG-MPX6-CA-BLUE”(6位共陽(yáng)7段LED顯示器)添加至對(duì)象選擇器窗口最后,在“RES,選中“MatchWholeWords”,如圖所示。在“Results”RES完全匹配的搜索結(jié)果。雙擊“RES”,則可將“RES”(電阻)添加至對(duì)象選擇器窗7SEG-MPX6-CA-BLUE、AT89C51、RES三個(gè)元器件對(duì)象AT89C51,在預(yù)覽窗口中,見(jiàn)到AT89C51的實(shí)物圖,如圖所示;若RES或7SEG-MPX6-CA-BLUE,在預(yù)覽窗口中,見(jiàn)到RES和7SEG-MPX6-CA-BLUE的實(shí)物圖,如圖所示。此時(shí),我們已注意到在繪圖中的元器件按鈕處于選中狀態(tài)。 2、放置元器件至圖形編輯窗口cingComponentsontothe7SEG-MPX6-CA-BLUE,將鼠標(biāo)置于圖形編輯窗口該對(duì)象的欲放位置、單擊鼠標(biāo)左鍵,該對(duì)象被完成放置。同理,將AT89C51RES放置到圖形編輯窗口中。如圖由于電阻R1~R8的型號(hào)和電阻值均相同,因此可利用功能作圖。將鼠標(biāo)移到R1,單擊鼠標(biāo)右鍵,選中R1,在標(biāo)準(zhǔn)中,單擊按鈕,拖動(dòng)鼠標(biāo),按下鼠標(biāo)左鍵,將對(duì)象LEDAR1右端的連接點(diǎn)時(shí),跟著鼠標(biāo)的指針就會(huì)出現(xiàn)一R1的連接點(diǎn),單擊鼠標(biāo)左鍵,移動(dòng)鼠標(biāo)(不用拖動(dòng)鼠標(biāo)),將鼠標(biāo)的指針同時(shí),線形由直線自動(dòng)變成了90o的折線,這是因?yàn)槲覀冞x中了線路自動(dòng)路徑功能。ESC鍵或者單擊鼠標(biāo)的右鍵6、給與總線連接的導(dǎo)線貼PART相同的名。 KeilCProteus連接1、假若KeilC與Proteus均已正確安裝在C:\ProgramFiles的 里,把C:\ProgramFiles\LabcenterElectronics\Proteus6Professional\MODELS\VDM51.dll到C:\ProgramFiles\keilC\C51\BIN2、用記事本打開(kāi)C:\ProgramFiles\keilC\C51\TOOLS.INI文件,在[C51]欄目下加入:TDRV5=BIN\VDM51.DLL("ProteusVSMMonitor-51Driver")其中“TDRV5”中的“5”要根據(jù)實(shí)際情況寫(xiě),不要和原來(lái)的重3、進(jìn)入KeilCμVision2開(kāi)發(fā)集成環(huán)境,創(chuàng)建一個(gè)新項(xiàng)目(Project),并為該項(xiàng)目選定合適的單片CPU器件(如:Atmel公司的T89C51。并為該項(xiàng)目加入KeilC源程序#defineLEDS6unsignedcharcodeLED_CODES[]= 0x8E,0xFF,0x0C,0x89,0x7F,0xBF//F,空格 void{chari=0;{for(j=3000;j>0;j //LED模型靠脈沖點(diǎn)亮,第i位靠脈沖點(diǎn)亮后,會(huì)自動(dòng)熄來(lái)頭if(i>5)}}4、單擊“Project菜單/OptionsforTarget”選項(xiàng)或者點(diǎn)擊 Driver再點(diǎn)擊“Setting”按鈕,設(shè)置通口,在“Host”后面添上“”,如果使用的不是5、Proteus6、KeilC與Proteus連接仿真調(diào)五、電路圖的繪1、將所需元器件加入到對(duì)象選擇器窗口。PickingComponentsintothe單擊對(duì)象選擇器按鈕如圖所示在彈“PickDevices”頁(yè)面中使用搜索引擎“ 將“74LS37380C51.BUS”和“MEMORY_13_8”,放置到圖形編輯窗口,如圖所 單擊繪圖中的導(dǎo)線按鈕,在圖形編輯窗口,完成導(dǎo)線或總線的標(biāo)注,如圖所示若該總線一旦標(biāo)注完成,則系統(tǒng)自動(dòng)在導(dǎo)線編輯頁(yè)面的“String”欄的下拉菜單中加入以上8組導(dǎo)線名,今后在標(biāo)注與之相聯(lián)的導(dǎo)線名時(shí),如AD0,要直接從導(dǎo)線編輯頁(yè)面的“String”欄的下拉菜單中選取,如圖所示;③若標(biāo)注名為,直接在導(dǎo)線編輯頁(yè)面的“String”欄中輸入單擊繪圖中的電壓探針按鈕,在圖形編輯窗口,完成電壓探針的添加,如圖所示結(jié)束設(shè)置。此番操作意味著,時(shí)鐘信號(hào)發(fā)生器給單片機(jī)提供頻率為12MHz的時(shí)鐘信號(hào)。對(duì)象屬性編輯頁(yè)面,如圖所示。在“ProgramFile”中,通過(guò)打開(kāi)按鈕,添加程序執(zhí)行文件。 需要多幅圖來(lái)共同表達(dá)一個(gè)設(shè)計(jì)。ProteusISIS能夠支持一個(gè)設(shè)計(jì)有多幅圖的情況。前面我們所繪圖形是裝在第一幅圖中,這一點(diǎn)我們可通過(guò)狀態(tài)欄中的“Rootsheet1”中得知,下面虛擬邏輯分析儀添加到第二幅圖“Rootsheet2”)中。 單擊“Design”菜單,選中其下拉菜單“NewSheet”,如圖所示?;蛘邌螕魳?biāo)準(zhǔn)中的新建一幅圖按鈕,此時(shí),我們注意到狀態(tài)欄中顯示為“Rootsheet2”,表明可以在第二幅圖中繪制幅之間的切換,可以使用快捷鍵“PageDown”或“PageUp”等,可供我們使用。單擊繪圖中的Inter-sheetTerminal按鈕,在對(duì)象選擇器窗口,選中對(duì)象DEFAULT,如圖所示,將其放置到圖形編輯窗口;在對(duì)象選擇器窗口,選中對(duì)象BUS,如

溫馨提示

  • 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)論