




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
貞Keil實(shí)克例教程(一緒)辛Keil工事程建立及設(shè)幟置秀寸平凡湖教怠程來源:本匪站原創(chuàng)時(shí)點(diǎn)擊數(shù)碌:1700服更雄新時(shí)間:2搜008-7友-23繪擔(dān)Keil駁工程文件的滔建立、設(shè)置著與目標(biāo)文件娛的獲得倆單片機(jī)開發(fā)梢中除必要的蛋硬件外,同囑樣離不開軟壇件,我們寫憑的匯編語言鈔源程序要變苗為冰CPU丸可以執(zhí)行的箱機(jī)器碼有兩例種方法,一僑種是手工匯伯編,另一種吳是機(jī)器匯編顧,目前已極夏少使用手工傻匯編的方法蔽了。機(jī)器匯卸編是通過匯霧編軟件將源影程序變?yōu)闄C(jī)則器碼,用于缸MCS-5茄1答單片機(jī)的匯光編軟件有早每期的擇A51欄,隨著單片棵機(jī)開發(fā)技術(shù)彎的不斷發(fā)展楊,從普遍使兩用匯編語言坊到逐漸使用當(dāng)高級語言開雷發(fā),單片機(jī)和的開發(fā)軟件野也在不斷發(fā)秧展,竄Keil醫(yī)軟件是目前局最流行開發(fā)嚷MCS-5布1景系列單片機(jī)笑的軟件,這賠從近年來各仍仿真機(jī)廠商鋪紛紛宣布全簽面支持抽Keil鍛即可看出。下Keil詞提供了包括悠C愉編譯器、宏般匯編、連接坡器、庫管理榜和一個(gè)功能繁強(qiáng)大的仿真幸調(diào)試器等在捕內(nèi)的完整開蝦發(fā)方案,通個(gè)過一個(gè)集成日開發(fā)環(huán)境(眾uVisi臂on玉)將這些部汪份組合在一廢起。運(yùn)行昨Keil壽軟件需要惰Penti香um后或以上的陵CPU燥,召16MB宵或更多猛RAM再、株20M慈以上空閑的漫硬盤空間、賞WIN98既、炕NT劫、灶WIN20參00徹、強(qiáng)WINXP誓等操作系統(tǒng)巷。掌握這一范軟件的使用炒對于使用嘴51穗系列單片機(jī)湯的愛好者來相說是十分必奮要的,如果辣你使用爹C輔語言編程,釋那么奶Keil哄幾乎就是你油的不二之選閣(目前在國士內(nèi)你只能買希到該軟件、腥而你買的仿朵真機(jī)也很可童能只支持該毒軟件),即悅使不使用薪C繭語言而僅用躁匯編語言編坊程,其方便拿易用的集成枝環(huán)境、強(qiáng)大躁的軟件仿真境調(diào)試工具也外會令你事半診功倍。洋我們將通過掌一些實(shí)例來咳學(xué)習(xí)劉Keil飽軟件的使用能,在這一部頁份我們將學(xué)僻習(xí)如何輸入曾源程序,建行立工程、對依工程進(jìn)行詳璃細(xì)的設(shè)置,都以及如何將暈源程序變?yōu)橄嗄繕?biāo)代碼。母圖似1肯所示電路圖很使用償89C51銳單片機(jī)作為柱主芯片,這柏種單片機(jī)性毫屬于貨MCS-5啊1揭系列,其內(nèi)煮部有躁4K忘的煮FLASH姻ROM,楚可以反復(fù)擦楚寫,非常適箱于做實(shí)驗(yàn)。濱89C51島的落P1儲引腳上接盛8虎個(gè)發(fā)光二極乖管,妻P3.2~疏P3.4格引腳上接砍4喘個(gè)按鈕開關(guān)寬,我們的第惑一個(gè)任務(wù)是趴讓接在孤P1渾引腳上的發(fā)注光二極管依揪次循環(huán)點(diǎn)亮予。如塔一、搖Keil璃工程的建立秘首先啟動(dòng)背Keil盡軟件的集成戀開發(fā)環(huán)境,絡(luò)這里假設(shè)讀微者已正確安服裝了該軟件塌,可以從桌失面上直接雙階擊腹uVisi尸on螞的圖標(biāo)以啟尖動(dòng)該軟件。輪UViso坡n珠啟動(dòng)后,程算序窗口的左品邊有一個(gè)工鬼程管理窗口單,該窗口有熊3敬個(gè)標(biāo)簽,分閣別是舒Files貨、嶄Regs擋、和疲Books天,這三個(gè)標(biāo)校簽頁分別顯遞示當(dāng)前項(xiàng)目剩的文件結(jié)構(gòu)鈴、蜘CPU襪的寄存器及串部份特殊功收能寄存器的撫值(調(diào)試時(shí)叢才出現(xiàn))和座所選止CPU荒的附加說明峰文件,如果亦是第一次啟霉動(dòng)沒Keil呼,那么這三挑個(gè)標(biāo)簽頁全傳是空的。色圖1境圖1簡單的鍵盤、顯示板菜1傷、源文件的絹建立蹤潤使用菜單壓“摔File-煙>New工”跡或者點(diǎn)擊工原具欄的新建矮文件按鈕,神即可在項(xiàng)目猾窗口的右側(cè)瞞打開一個(gè)新摩的文本編緝斜窗口,在該峰窗口中輸入騰以下匯編語繁言源程序,喊例往1擠:餓汪秘MO匠V逢A狹,蠻#0FEH餐MAIN:鼓MO桶V滲P1規(guī),蜻A暮示諷RL苗弦A憶磁LCA饅LL服DELAY旗繡AJM甚P膨MAIN迷DELAY妻:MO鵝V蹄R7,#幣255筋D1:充枝MOV開R猴6,#25霸5堂DJNZ問R縣6,$每搶DJN淚Z推R7,D估1捐薪RET柱END薯保存該文件奴,注意必須家加上擴(kuò)展名縣(匯編語言捧源程序一般柏用闖asm測或援a(chǎn)51商為擴(kuò)展名)羽,這里假定美將文件保存盜為漏exam1拉.asm作。紫需要說明的泊是,源文件炭就是一般的梨文本文件,橋不一定使用巖Keil距軟件編寫,論可以使用任嬸意文本編緝燒器編寫,而兩且,弱Keil探的編緝器對毫漢字的支持艇不好,建議往使用回Ultra仗Edit橡之類的編緝尤軟件進(jìn)行源救程序的輸入坑。汪2躬、建立工程昨文件狼在項(xiàng)目開發(fā)維中,并不是擾僅有一個(gè)源袍程序就行了石,還要為這芬個(gè)項(xiàng)目選擇嚴(yán)CPU日(梁Keil侵支持?jǐn)?shù)百種類CPU袖,而這些沾CPU坊的特性并不線完全相同)統(tǒng),確定編譯脂、匯編、連播接的參數(shù),寬指定調(diào)試的拔方式,有一慣些項(xiàng)目還會鞭有多個(gè)文件斯組成等,為執(zhí)管理和使用信方便,剃Keil愉使用工程(寸Proje絲ct撞)這一概念記,將這些參稈數(shù)設(shè)置和所射需的所有文翠件都加在一繪個(gè)工程中,嚷只能對工程玻而不能對單起一的源程序曬進(jìn)行編譯(柿匯編)和連盾接等操作,逼下面我們就狼一步一步地燭來建立工程耗。圖3加入文件圖2選擇目標(biāo)CPU壘點(diǎn)擊牽“臥Proje餐ct->N買ewPr散oject團(tuán)…敞”艦菜單,出現(xiàn)宵一個(gè)對話框秧,要求給將銜要建立的工慮程起一個(gè)名失字,你可以帥在編緝框中鏟輸入一個(gè)名頃字(設(shè)為趣exam1膽),不需要茂擴(kuò)展名。點(diǎn)威擊仗“悼保存剃”費(fèi)按鈕,出現(xiàn)滋第二個(gè)對話麗框,如圖算2議所示,這個(gè)初對話框要求在選擇目標(biāo)希CPU貢(即你所用纖芯片的型號因),竊Keil收支持的識CPU派很多,我們外選擇膛Atmel棄公司的等89C51牢芯片。點(diǎn)擊批ATMEL僅前面的墨“遍+晃”粥號,展開該冶層,點(diǎn)擊其托中的圍89C51弓,然后再點(diǎn)秧擊晚“乞確定恢”含按鈕,回到旋主界面,此歇時(shí),在工程尼窗口的文件石頁中,出現(xiàn)珍了醋“蠻Targe搭t1嬌”膀,前面有球“怠+胳”扒號,點(diǎn)擊窯“壟+石”晶號展開,可蛋以看到下一功層的街“捆Sourc司eGro貝up1閉”減,這時(shí)的工只程還是一個(gè)斥空的工程,澡里面什么文嬸件也沒有,占需要手動(dòng)把坊剛才編寫好謎的源程序加算入,點(diǎn)擊暈“肆Sourc縱eGro味up1鐵”月使其反白顯序示,然后,想點(diǎn)擊鼠標(biāo)右潔鍵,出現(xiàn)一飄個(gè)下拉菜單準(zhǔn),如圖不3亡所示。選中巡其中的述“耀Addf侍ilet椒oGro勞up窮”尋Sourc述eGro悉up1肅”始,出現(xiàn)一個(gè)僅對話框,要露求尋找源文寫件,注意,愛該對話框下兄面的錫“環(huán)文件類型桃”部默認(rèn)為刪Csou儀rcef雨ile(*指.c)耽,也就是以螺C呼為擴(kuò)展名的廣文件,而我摧們的文件是灣以相asm造為擴(kuò)展名的期,所以在列只表框中找不如到鈴exam1謙.asm蝶,要將文件洋類型改掉,枕點(diǎn)擊對話框撈中暗“翠文件類型浩”蛛后的下拉列州表,找到并中選中涼“跨AsmS政ource惑File他(*.a5病1,*.a確sm)憂,這樣,在恒列表框中就罷可以找到抄exam1粗.asm堪文件了。
泡圖2蛛圖3辨母雙擊鮮exam1嚴(yán).asm映文件,將文咳件加入項(xiàng)目炊,注意,在籃文件加入項(xiàng)呢目后,該對踏話框并不消炸失,等待繼澆續(xù)加入其它勾文件,但初澆學(xué)時(shí)常會誤悶認(rèn)為操作沒宅有成功而再恥次雙擊同一留文件,這時(shí)威會出現(xiàn)如圖蔥4抹所示的對話屑框,提示你哄所選文件已浮在列表中,重此時(shí)應(yīng)點(diǎn)擊鐵“以確定?!辟v,返回前一蕉對話框,然翅后點(diǎn)擊礎(chǔ)“槳Close舒”船即可返回主穿界面,返回授后,點(diǎn)擊秋“老Sourc峰e(cuò)Gro能up1商”螺前臂圖4重復(fù)加入文件的錯(cuò)誤修的加號,會三發(fā)現(xiàn)搞exam1專.asm透文件已在其州中。雙擊文怨件名,即打薄開該源程序?yàn)I。
喘圖4拉二、工程的妖詳細(xì)設(shè)置怎工程建立好當(dāng)以后,還要慈對工程進(jìn)行該進(jìn)一步的設(shè)青置,以滿足亮要求。奉首先點(diǎn)擊左擦邊喪Proje盆ct盈窗口的今Targe持t1紅,然后使用劫菜單吼“少Proje悶ct->O林ption姨for女targe系t余‘歐targe揪t1昆’欲”役即出現(xiàn)對工百程設(shè)置的對挨話框,這個(gè)雙對話框可謂狹非常復(fù)雜,逗共有槳8書個(gè)頁面,要蘭全部搞清可博不容易,好許在絕大部份但設(shè)置項(xiàng)取默重認(rèn)值就行了榴。圖5對目標(biāo)進(jìn)行設(shè)置皮設(shè)置對話框奮中的糟Targe幼t午頁面,如圖年5攤所示,劣Xtal以后面的數(shù)值順是晶振頻率憂值,默認(rèn)值霉是所選目標(biāo)帆CPU否的最高可用架頻率值,對題于我們所選憲的盡AT89C幕51跟而言是度24M乓,該數(shù)值與籃最終產(chǎn)生的件目標(biāo)代碼無巖關(guān),僅用于哄軟件模擬調(diào)霧試時(shí)顯示程膠序執(zhí)行時(shí)間龍。正確設(shè)置襖該數(shù)值可使份顯示時(shí)間與晌實(shí)際所用時(shí)仁間一致,一調(diào)般將其設(shè)置裳成與你的硬漏件所用晶振歐頻率相同,珍如果沒必要澡了解程序執(zhí)執(zhí)行的時(shí)間,泥也可以不設(shè)歡,這里設(shè)置崖為幕12春。
株圖5崗Memor辭yMod滿el桐用于設(shè)置煉RAM基使用情況,騰有三個(gè)選擇膀項(xiàng),澇Small業(yè)是所有變量仁都在單片機(jī)絡(luò)的內(nèi)部耀RAM廣中;汗Compa獎(jiǎng)ct估是可以使用能一頁外部擴(kuò)和展貪RAM錫,而思Large晚t籍則是可以使帖用全部外部截的擴(kuò)展良RAM耗。及Code恐Model顆用于設(shè)置元ROM努空間的使用德,同樣也有原三個(gè)選擇項(xiàng)雹,即積Small諒模式,只用換低于馬2K米的程序空間就;茶Compa冒ct膨模式,單個(gè)勻函數(shù)的代碼訴量不能超過叨2K錯(cuò),整個(gè)程序榜可以使用瞇64K嗽程序空間;攜Large雷t乞模式,可用謙全部寄64K狹空間。別Useo匯n-chi略pROM軋選擇項(xiàng),確敢認(rèn)是否僅使蘭用片內(nèi)眉ROM衛(wèi)(注意:選租中該項(xiàng)并不窮會影響最終冬生成的目標(biāo)擊代碼量);細(xì)Opera僵ting桌項(xiàng)是操作系塊統(tǒng)選擇,吼Keil愈提供了兩種擁操作系統(tǒng):柏Rtxt勝iny透和之Rtxf干ull疲,關(guān)于操作趨系統(tǒng)是另外理一個(gè)很大的是話題了,通仁常我們不使酸用任何操作利系統(tǒng),即使蘿用該項(xiàng)的默竭認(rèn)值:僅None貍(不使用任朵何操作系統(tǒng)里);幫OffC笛hipC斯odem豪emory峽用以確定系襪統(tǒng)擴(kuò)展紛ROM生的地址范圍瘡,堆OffC受hipx飾Data意memor逼y皂組用于確定派系統(tǒng)擴(kuò)展培RAM娃的地址范圍辭,這些選擇飯項(xiàng)必須根據(jù)醋所用硬件來狡決定,由于嘗該例是單片跟應(yīng)用,未進(jìn)響行任何擴(kuò)展鬼,所以均不狀重新選擇,啊按默認(rèn)值設(shè)污置。娃設(shè)置對話框息中的尿OutPu鉗t謊頁面,如圖撈6桐所示,這里務(wù)面也有多個(gè)男選擇項(xiàng),其洽中蜘Creat愚Hex暢file典用于生成可筒執(zhí)行代碼文賤件(可以用序編程器寫入報(bào)單片機(jī)芯片遼的辨HEX出格式文件,深文件的擴(kuò)展趣名為罪.HEX撇),默認(rèn)情才況下該項(xiàng)未湯被選中,如旅果要寫片做禽硬件實(shí)驗(yàn),羽就必須選中乒該項(xiàng),這一登點(diǎn)是初學(xué)者集易疏忽的,帥在此特別提陪醒注意。選婦中喘Debug危info脂rmati牛on代將會產(chǎn)生調(diào)避試信息,這球些信息用于納調(diào)試,如果允需要對程序暖進(jìn)行調(diào)試,乘應(yīng)當(dāng)選中該墳項(xiàng)。督Brows秤einf再ormat通ion惱是產(chǎn)生瀏覽禽信息,該信游息可以用菜花單脾view-饑>Brow落se采來查看,這賊里取默認(rèn)值陷。按鈕號“籮Selec謙tFol戴derf淘orob遵jects恭”掀是用來選擇句最終的目標(biāo)波文件所在的溪文件夾,默浙認(rèn)是與工程喘文件在同一撞個(gè)文件夾中餐。堤N(yùn)ame辯ofEx著ecuta肺ble掌用于指定最表終生成的目群標(biāo)文件的名芝字,默認(rèn)與三工程的名字焰相同,這兩駱項(xiàng)一般不需父要更改。隨圖6圖6對輸出進(jìn)行控制憐工程設(shè)置對舟話框中的其撲它各頁面與器C51數(shù)編譯選項(xiàng)、越A51予的匯編選項(xiàng)中、勵(lì)BL51麗連接器的連鞠接選項(xiàng)等用籠法有關(guān),這齒里均取默認(rèn)競值,不作任盼何修改。以嚴(yán)下僅對一些責(zé)有關(guān)頁面中爺常用的選項(xiàng)剪作一個(gè)簡單墻介紹。
慚Listi攔ng哥標(biāo)簽頁用于梯調(diào)整生成的虜列表文件選躍項(xiàng)。在匯編建或編譯完成嘴后將產(chǎn)生(味*.lst設(shè))的列表文拆件,在連接蓮?fù)瓿珊笠矊㈥懏a(chǎn)生(員*.m51候)的列表文辦件,該頁用船于對列表文影件的內(nèi)容和息形式進(jìn)行細(xì)算致的調(diào)節(jié),撒其中比較常銜用的選項(xiàng)是責(zé)“脹CCom表pile解Listi炕ng管”民下的睛“遮Assam敗bleC閉ode僻”鈴項(xiàng),選中該瓦項(xiàng)可以在列花表文件中生雄成膊C庭語言源程序菜所對應(yīng)的匯萬編代碼。圖7代碼生成控制山C51丙標(biāo)簽頁用于要對幫Keil恭的損C51林編譯器的編擋譯過程進(jìn)行框控制,其中五比較常用的勸是困“毒Code凱Optim多izati潤on灰”茅組,如圖甜7熱所示,該組朽中成Level聽是優(yōu)化等級兔,境C51詳在對源程序胳進(jìn)行編譯時(shí)征,可以對代筑碼多至流9摘級優(yōu)化,默拐認(rèn)使用第踢8另級,一般不斃必修改,如栗果在編譯中源出現(xiàn)一些問磨題,可以降逗低優(yōu)化級別科試一試。離Empha蕩sis關(guān)是選擇編譯岡優(yōu)先方式,嘴第一項(xiàng)是代翼碼量優(yōu)化(蛛最終生成的俯代碼量小)覺;第二項(xiàng)是梯速度優(yōu)先(劍最終生成的夾代碼速度快哀);第三項(xiàng)粘是缺省。默仇認(rèn)的是速度喚優(yōu)先,可根家據(jù)需要更改固。
蹤圖7份設(shè)置完成后愁按確認(rèn)返回肆主界面,工劫程文件建立異、設(shè)置完畢棉。彼三、編譯、驟連接圖9正確編譯、連接之后的結(jié)果圖8有關(guān)編譯、連接、項(xiàng)目設(shè)置的工具條鉛在設(shè)置好工海程后,即可恩進(jìn)行編譯、恒連接。選擇旗菜單幼Proje蝕ct->B敬uild畫targe漫t北,對當(dāng)前工驅(qū)程進(jìn)行連接葬,如果當(dāng)前悔文件已修改赤,軟件會先較對該文件進(jìn)拉行編譯,然賞后再連接以龜產(chǎn)生目標(biāo)代母碼;如果選洋擇步Rebui思ldAl眾ltar引getf侄iles亡將會對當(dāng)前煮工程中的所汪有文件重新訓(xùn)進(jìn)行編譯然亮后再連接,敞確保最終生朵產(chǎn)的目標(biāo)代臣碼是最新的亦,而饅Trans趴late裕…戶.斤項(xiàng)則僅對該季文件進(jìn)行編右譯,不進(jìn)行鼠連接。
何以上操作也躍可以通過工燭具欄按鈕直杠接進(jìn)行。圖怕8里是有關(guān)編譯裕、設(shè)置的工釘具欄按鈕,棒從左到右分刊別是:編譯拉、編譯連接兇、全部重建逼、停止編譯桐和對工程進(jìn)帥行設(shè)置。榨圖8劉編譯過程中炸的信息將出蠢現(xiàn)在輸出窗膝口中的候Build留頁中,如果裝源程序中有匪語法錯(cuò)誤,姿會有錯(cuò)誤報(bào)項(xiàng)告出現(xiàn),雙數(shù)擊該行,可每以定位到出膽錯(cuò)的位置,堤對源程序反荷復(fù)修改之后笛,最終會得賴到如圖旺9疤所示的結(jié)果犁,提示獲得鍵了名為亮exam1身.hex攪的文件,該帳文件即可被津編程器讀入料并寫到芯片辜中,同時(shí)還恢產(chǎn)生了一些礎(chǔ)其它相關(guān)的藍(lán)文件,可被鬧用于哄Keil盈的仿真與調(diào)團(tuán)試,這時(shí)可皂以進(jìn)入下一狂步調(diào)試的工朱作。毛圖9做教程錄入:磁平凡估責(zé)任編輯漸:平凡旱上一篇教程梢:乓C語言綜合惱練習(xí)(2)寨下一篇教程偏:王Keil的劇調(diào)試命令、奮在線匯編與傭斷點(diǎn)設(shè)置勇Keil的憂調(diào)試命令、絞在線匯編與禾斷點(diǎn)設(shè)置沉釀平凡門教暴程來源:本薪站原創(chuàng)術(shù)點(diǎn)擊數(shù)誕:2100敘更貢新時(shí)間:2氏008-7往-24教痛上一講中燕我們學(xué)習(xí)了蛾如何建立工堆程、匯編、熄連接工程,捎并獲得目標(biāo)餐代碼,但是拘做到這一步域僅僅代表你買的源程序沒捕有語法錯(cuò)誤料,至于源程俘序中存在著密的其它錯(cuò)誤煉,必須通燥過調(diào)試才能喝發(fā)現(xiàn)并解決屢,事實(shí)上,挺除了極簡單通的程序以外心,絕大部份冠的程序都要催通過反復(fù)調(diào)隙試才能得到俗正確的結(jié)果堤,因此,調(diào)陡試是軟件開耀發(fā)中重要的余一個(gè)環(huán)節(jié),布這一講將居介紹常用的沖調(diào)試命令、吊利用在線匯奏編、各種設(shè)低置斷點(diǎn)進(jìn)行燕程序調(diào)試的謙方法,并通述過實(shí)例介紹盜這些方法的揉使用。塵一、常用調(diào)亞試命令誓在對工程成仍功地進(jìn)行匯擱編、連接以剖后,按農(nóng)Ctrl+擔(dān)F5炸或者使用菜元單早Debug介->Sta連rt/St固opDe厚bugS壇essio奪n挑即可進(jìn)入調(diào)平試狀態(tài),緩Keil遺內(nèi)建了一個(gè)納仿真弄CPU便用來模擬執(zhí)檔行程序,該幻仿真洞CPU饅功能強(qiáng)大做,可以在沒歌有硬件和仿慰真機(jī)的情況集下進(jìn)行程序渣的調(diào)試,下糖面將要學(xué)的專就是該模擬騾調(diào)試功能。變不過在學(xué)習(xí)均之前必須明鈴確,模擬畢泉竟只是模擬歉,與真實(shí)的胖硬件執(zhí)行赴程序肯定還攜是有區(qū)別的恢,其中最明腿顯的就是時(shí)苗序,軟件模秘?cái)M是不可能獻(xiàn)和真實(shí)的硬豎件具有相同功的時(shí)序的,擴(kuò)具體的表現(xiàn)埋就是程序執(zhí)酒行的速度和瞎各人使用的拋計(jì)算機(jī)有關(guān)椒,計(jì)算機(jī)附性能越好,你運(yùn)行速度越所快。圖1調(diào)試工具條商進(jìn)入調(diào)試狀薄態(tài)后,界面狀與編緝狀態(tài)洞相比有明顯柏的變化,霜Debug憂菜單項(xiàng)中原拐來不能用的友命令現(xiàn)在已腔可以使用了加,工具欄會牧多出一個(gè)用格于運(yùn)行和調(diào)舉試的工具條完,如圖腿1率所示,盲Debug服菜單上的大撐部份命令可陵以在此找到確對應(yīng)的快捷粗按鈕,從左襪到右依次是咽復(fù)位、運(yùn)行問、暫停、單史步、過程單伙步、執(zhí)行完限當(dāng)前子程序四、運(yùn)行到當(dāng)崖前行、下一在狀態(tài)、打開烤跟蹤、觀察幣跟蹤、反匯純編窗口、觀含察窗口、代叮碼作用范圍敲分析、密1豈#串行窗口竹、內(nèi)存窗口謎、性能分析懲、工具按鈕鏡等命令。
異圖1調(diào)試富工具條閃圖2調(diào)試窗口餅學(xué)習(xí)程序驕調(diào)試,必須泰明確兩個(gè)重搜要的概念,離即單步執(zhí)行狠與全速運(yùn)行澡。全速執(zhí)行鴉是指一行程劣序執(zhí)行完以潑后緊接著執(zhí)下行下一行程禁序,中間不鹿停止,這樣必程序執(zhí)行的乏速度很快銜,并可以看迫到該段程序句執(zhí)行的總體閱效果,即最潮終結(jié)果正確鷹還是錯(cuò)誤,嘆但如果程序或有錯(cuò),則難汁以確認(rèn)錯(cuò)誤護(hù)出現(xiàn)在哪些葉程序行。單勵(lì)步執(zhí)行是每籍次執(zhí)行一行逗程序,執(zhí)行桂完該行程乞序以后即停塘止,等待命獲令執(zhí)行下一排行程序,此桑時(shí)可以觀察餓該行程序執(zhí)雅行完以后得鐮到的結(jié)果,趕是否與我們鹽寫該行程序勻所想要得到博的結(jié)果相同肥,借此可以聰找到程序彩中問題所在處。程序調(diào)試暗中,這兩種寫運(yùn)行方式都尺要用到。
催使用菜單叉STEP冷或相應(yīng)的命柳令按鈕或使博用快捷鍵凝F11講可以單步執(zhí)設(shè)行程序,使果用菜單綠STEP違OVER號或功能鍵比F10束可以以過程洪單步形式執(zhí)咐行命令,所豬謂過程單步黎,是指將匯缺編語言中的抄子程序或高寧級語言中的缺函數(shù)作為一府個(gè)語句來全依速執(zhí)行。朝按下桶F11捆鍵,可以看朝到源程序窗恨口的左邊出茶現(xiàn)了一個(gè)黃撓色調(diào)試箭頭腳,指向源程衛(wèi)序的第一行扣,如圖垮2監(jiān)所示。每按填一次偷F11撤,即執(zhí)行該栽箭頭所指程核序行,然后去箭頭指向下筍一行,當(dāng)箭顯頭指向鼻LCALL由散DELAY改行時(shí),再次缺按下臭F11跟,會發(fā)現(xiàn),暑箭頭指向了輸延時(shí)子程序辦DELAY靈的第一行。毒不斷按免F11哭鍵,即可逐宇步執(zhí)行延時(shí)訴子程序。然圖2單步仇執(zhí)行儉通過單步執(zhí)穿行程序,可龜以找出一些丸問題的所在換,但是僅依下靠單步執(zhí)行千來查錯(cuò)有時(shí)姐是困難的,論或雖能查出集錯(cuò)誤但效率彈很低,為此撓必須輔之以姜其它的方法奧,如本例中賤的延時(shí)程序釋是通過將傘D2名:視DJNZ材R6,涂D2放這一行程序廊執(zhí)行六萬多保次來達(dá)到延烈時(shí)的目的,警如果用按麻F11半六萬多次的扎方法來執(zhí)行長完該程序行樸,顯然不合歸適,為此,工可以采取以鍛下一些方法梁,第一,用閘鼠標(biāo)在子程錯(cuò)序的最后一冷行(鹿ret碼)點(diǎn)一下,倒把光標(biāo)定位迫于該行,然攝后用菜單雖Debug庭->Run輔toC較ursor租line奴(執(zhí)行到光嘴標(biāo)所在行)尿,即可全速驕執(zhí)行完黃色逗箭頭與光標(biāo)句之間的程序撒行。第二,噸在進(jìn)入該子熊程序后,使回用菜單究Debug縱->Ste頃pOut拿ofC鏈urren仍tFun訴ction島(單步執(zhí)行此到該函數(shù)外刑),使用該線命令后,即緊全速執(zhí)行完噴調(diào)試光標(biāo)所省在的子程序庸或子函數(shù)并小指向主程序抬中的下一行緊程序(這里瓶是難JMPL燒OOP簽行)。第三阿種方法,在旦開始調(diào)試的豬,按糞F10田而非孟F11賢,程序也將劣單步執(zhí)行,仍不同的是,莊執(zhí)行到籍lcall娘de惕lay覽行時(shí),按下到F10撞鍵,調(diào)試光默標(biāo)不進(jìn)入子倆程序的內(nèi)部遷,而是全速舟執(zhí)行完該子校程序,然后漠直接指向下菜一行?!百€JMPL爸OOP霜”譜。靈活應(yīng)用來這幾種方法辮,可以大大屈提高查錯(cuò)的賽效率。令二、在線匯王編圖3在線匯編窗口闖在進(jìn)入剛Keil模的調(diào)試環(huán)境虎以后,如果澤發(fā)現(xiàn)程序有動(dòng)錯(cuò),可以直江接對源程序測進(jìn)行修改,臭但是要使修鹽改后的代碼翁起作用,必拒須先退出調(diào)譽(yù)試環(huán)境,重尸新進(jìn)行編譯旦、連接后再射次進(jìn)入調(diào)試睜,如果只是粘需要對某些術(shù)程序行進(jìn)行章測試,或僅茄需對源程序鍛進(jìn)行臨時(shí)的慢修改,這樣畏的過程未免盟有些麻煩,摧為此淹Keil墻軟件提供了成在線匯編的留能力,將光溪標(biāo)定位于需許要修改的程花序行上,用晉菜單視Debug猜->Inl甩ineA慮ssamb緞ly紡…擁即可出現(xiàn)如駱圖刻3膀的對話框,蔑在丑Enter記New繪后面的編緝穩(wěn)框內(nèi)直接輸腫入需更改的鴿程序語句,蕩輸入完后鍵深入回車將自豐動(dòng)指向下一訓(xùn)條語句,可暈以繼續(xù)修改罩,如果不再勺需要修改,鞋可以點(diǎn)擊右作上角的關(guān)閉駛按鈕關(guān)閉窗勉口。
暑圖3在線首匯編院三、斷點(diǎn)設(shè)嬌置納程序調(diào)試敗時(shí),一些程下序行必須滿下足一定的條煮件才能被執(zhí)猛行到(如程洪序中某變量僻達(dá)到一定的叛值、按鍵被仰按下、串口蹤接收到數(shù)據(jù)箭、有中斷產(chǎn)沙生等),這式些條件往往刊是異步發(fā)孫生或難以預(yù)漁先設(shè)定的,鞏這類問題使局用單步執(zhí)行酬的方法是很慚難調(diào)試的,貨這時(shí)就要使穗用到程序調(diào)器試中的另一馳種非常重要核的方法務(wù)——棄斷點(diǎn)設(shè)置。蜘斷點(diǎn)設(shè)置的彩方法有多種拳,常用的刷是在某一程庸序行設(shè)置斷戲點(diǎn),設(shè)置好罩?jǐn)帱c(diǎn)后可以朗全速運(yùn)行程雪序,一旦執(zhí)尋行到該程序?yàn)?zāi)行即停止,畜可在此觀察叮有關(guān)變量值扭,以確定問鞭題所在。在朝程序行設(shè)置騙/辜移除斷點(diǎn)的侵方法是將光趙標(biāo)定位于需柱要設(shè)置斷點(diǎn)際的程序行,罪使用菜單鴨Debug阻->Ins團(tuán)ert/R晉emove興Brea太kPoin瞇t收設(shè)置或移除刊斷點(diǎn)(也可偵以用鼠標(biāo)在租該行雙擊實(shí)江現(xiàn)同樣的功哀能);翠Debug鋤->Ena剪ble/D雁isabl繪eBre施akpoi儉nt徐是開啟或暫船停光標(biāo)所在圓行的斷點(diǎn)功久能;取Debug艷->Dis義able繼AllB炕reakp煙oint顯暫停所有斷廉點(diǎn);訊Debug旱->Kil哥lAll嚴(yán)Brea畏kPoin臂t垮清除所有的州斷點(diǎn)設(shè)置。奸這些功能也焦可以用工具己條上的快捷串按鈕進(jìn)行設(shè)仔置。榜除了在某程續(xù)序行設(shè)置斷晃點(diǎn)這一基本律方法以外,革Keil眾軟件還提供礦了多種設(shè)置折斷點(diǎn)的方法星,按筍Debug掌->Bre跪akpoi哲nts歌…賣即出現(xiàn)一個(gè)冰對話框,該徑對話框用于先對斷點(diǎn)進(jìn)行瞎詳細(xì)的設(shè)置錘,如圖澤4爬所示。和圖申4朋中和Expre葬ssion催后的編緝框堡內(nèi)用于輸入破表達(dá)式,該企表達(dá)式用于該確定程序停茫止運(yùn)行的條季件,這里表撲達(dá)式的定義躬功能非常強(qiáng)薯大,涉及到羽Keil箏內(nèi)置的一套和調(diào)試語法,慘這里不作詳黎細(xì)說明,僅好舉若干實(shí)例咬,希望讀者輕可以舉一反握三。卸圖4斷點(diǎn)撇表達(dá)式幕1)省烤在批Exper避ssion毒中鍵入是a==0x完f7加,再點(diǎn)擊肢Defin脹e祝即定義了一鞠個(gè)斷點(diǎn),犁職注意,墓a于后有兩個(gè)等賺號,意即相堪等。該表達(dá)寧式的含義是退:如果傘a障的值到達(dá)例0xf7閃則停止程序餐運(yùn)行。除使限用相等符號詳之外,還可題以使用盼>,>=,學(xué)<,<=,疲!=砌(不等于)退,&替(兩值按位俘與)嬌,&&蚊(兩值相與朋)等運(yùn)算符環(huán)號。既2)貪呢在如Exper色ssion之后中鍵入谷Delay鋪再點(diǎn)擊要Defin底e疾,其含義是副如果執(zhí)行標(biāo)萬號為答Delay嫁的行則中斷瘡。晌3)面圖4斷點(diǎn)設(shè)置對話框卡在待Exper葡ssion斯后中鍵入系Delay盼,按立Count楚后的微調(diào)按廊鈕,將值調(diào)指到儲3錯(cuò),其意義是離當(dāng)?shù)谌螆?zhí)貧行到景Delay帝時(shí)才停止程趴序運(yùn)行。
診4)誤黨在州Exper蘋ssion像后鍵入粒Delay懷,在彼Comma答nd省后鍵入揮print默f(枕“衡SubRo絕utine糠暴‘智Delay悄’飄has秧been瘡Calle躲d\n生”疑)慕主程序每次撫調(diào)用例Delay床程序時(shí)并不衣停止運(yùn)行,針但會在輸出宏窗口抗Comma陳nd釀頁輸出一行橡字符,即陰SubRo車utine紡春‘彩Delay愈’翼has臂been蕉Calle請d固。其中歷“別\n酷”泰的用途是回丹車換行,使筑窗口輸出的桶字符整齊。啄5)蒙膽設(shè)置斷點(diǎn)前秒先在輸出窗剖口的層Comma稿nd俗頁中鍵入筑DEFIN稻Eint夸I話,然后在斷頃點(diǎn)設(shè)置時(shí)同喊4斷),但是刃Comma門nd驗(yàn)后鍵入克print英f(賊“違SubRo籃utine我念‘僵Delay彎’汁h(huán)as賣been刮Calle根d%d盯times韻\n優(yōu)”堆,++I)非,則主程序載每次調(diào)用夕Delay達(dá)時(shí)將會在昨Comma表nd醒窗口輸出該憂字符及被調(diào)灘用的次數(shù),曬如支SubRo削utine由濫‘釣Delay棵’屬has呀been熟Calle譜d10周times違。知對于使用甲C管源程序語言廁的調(diào)試,表部達(dá)式中可以胖直接使用變栽量名,但必喇須要注意,元設(shè)置時(shí)只能學(xué)使用全局變兵量名和調(diào)試丈箭頭所指模可塊中的局部椅變量名。圍四、實(shí)例調(diào)鞠試有為進(jìn)行程序毫的調(diào)試,我瓦們首先給源輝程序制造一葬個(gè)錯(cuò)誤,將寒延時(shí)子程序嚴(yán)的第三行(撒D2瓣:眠DJNZ該R6,D報(bào)2伶)后的腔D2俊改為臺D1情,而將下一醬行的拍D1貢改為劣D2謝,然后重新盈編譯,這樣愛并無語法錯(cuò)討誤,所以不畏會有任何出筐錯(cuò)提示,但舅由于轉(zhuǎn)移目特的地出錯(cuò),陡所以子程序魔將陷入無限柿循環(huán)中。素進(jìn)入調(diào)試狀廢態(tài)后,按霉F10保以過程單步醉的形式執(zhí)行完程序,當(dāng)執(zhí)溉行到征LCALL讀DELA怕Y月行時(shí),程序火不能繼續(xù)往書下執(zhí)行,同埋時(shí)發(fā)現(xiàn)調(diào)試肯工具條上的嶺Halt被按鈕變成了牽紅色,說明把程序在此不繡斷地執(zhí)行著貪,而我們預(yù)批期這一行程寬序也將執(zhí)行幫完后停止,廉這個(gè)結(jié)果與臥預(yù)期不同,盡可以看出調(diào)濫用的子程序估出了差錯(cuò)。療為查明出錯(cuò)忽原因,按娘Halt恩按鈕使程序探停止執(zhí)行,鋒然后按廁RST啄按鈕使程序窯復(fù)位,再次添按下堤F10搬單步執(zhí)行,跡但在執(zhí)行到冷LCALL忽DELA阿Y爆行時(shí),改按朽F11慕鍵跟蹤到子寺程序內(nèi)部(展如果按下佳F11式鍵沒有反應(yīng)陶,請?jiān)谠闯膛男虼翱谥杏每髽?biāo)點(diǎn)一下例),單步執(zhí)獸行程序,可害以發(fā)現(xiàn)在執(zhí)吹行到夢D2:DJ丑NZR6菌,D2塑行時(shí),程序撕不斷地從這鋪一行轉(zhuǎn)移到虜上一行,同氏時(shí)觀察左側(cè)安的寄存器的貼值,會發(fā)現(xiàn)削R6少的值始終在見FFH桃和煌FEH魔之間變化,偽不會減小,樣而我們的預(yù)鄭期是用R6劣的值不斷減少小,減到財(cái)0唇后往下執(zhí)行丟,因此這個(gè)扭結(jié)果與預(yù)期導(dǎo)不符,通過支這樣的觀察涉,不難發(fā)現(xiàn)跟問題是因?yàn)楦F標(biāo)號寫錯(cuò)而筋產(chǎn)生的,發(fā)斷現(xiàn)問題即可雄以修改,為招了驗(yàn)證即將襪進(jìn)行的修改塌是否正確,排可以先使用碎在線匯編功輝能測試一下盲。把光標(biāo)定軌位于程序行份D2全:崖DJNZ猴R6,D1轎,打開在線武匯編的對話聾框,將程序餐改為涌DJNZ扇R7賀,D2刻,回車后再升鍵入鄉(xiāng)DJNZ斜R6客,恥D1稍,然后關(guān)閉柴窗口,再進(jìn)驚行調(diào)試,發(fā)忙現(xiàn)程序能夠虜正確地執(zhí)行浩了,這說明決修改是正確幕的。注意,腦這時(shí)候的源濾程序并沒有柴修改,此時(shí)薪應(yīng)該退出調(diào)舒試程序,將嗚源程序更改蹤過來,并重重新編譯連接問,以獲得正火確的目標(biāo)代邀碼。象教程錄入:魔平凡偶責(zé)任編輯叢:平凡確上一篇教程偶:坑Keil工怖程建立及設(shè)白置慶下一篇教程而:正Keil減程序調(diào)試窗零口閃…叨Keil凍程序調(diào)試窗客口脅殿平凡玉教錫程來源:本笑站原創(chuàng)磨點(diǎn)擊數(shù)拿:2720退更艙新時(shí)間:2束008-7鷹-24碼能上一講中我梁們學(xué)習(xí)了幾悅種常用的程里序調(diào)試方法緊,這一講中掉將介紹產(chǎn)Keil醉提供各種窗迎口如輸出窗塌口、觀察窗過口、存儲器橡窗口、反匯逝編窗口、串率行窗口等的芽用途,以及靠這些窗口的憂使用方法,煩并通過實(shí)例你介紹這些窗咳口在調(diào)試中廟的使用。沫一、程序調(diào)特試時(shí)的常用潑窗口視Keil外軟件在調(diào)試贏程序時(shí)提供搬了多個(gè)窗口雄,主要包括循輸出窗口(拔Outpu鵲tWin歇dows藏)、觀察窗梨口(伍Watch淺&Call座Stat也ckWi識ndows擠)、存儲器慮窗口(非Memor爸yWin概dow飾)、反匯編狠窗口(惱Dissa抹mbly孝Windo屢w話)串行窗口豎(膚Seria啄lWin刻dow答)等。進(jìn)入休調(diào)試模式后測,可以通過胃菜單惕View使下的相應(yīng)命爺令打開或關(guān)豎閉這些窗口若。浸圖密1煤是輸出窗口欄、觀察窗口胡和存儲器窗僚口,各窗口捐的大小可以扛使用鼠標(biāo)調(diào)聰整。進(jìn)入調(diào)宮試程序后,抓輸出窗口自滔動(dòng)切換到達(dá)Comma線nd挎頁。該頁用育于輸入調(diào)試交命令和輸出擾調(diào)試信息。晶對于初學(xué)者圍,可以暫不跪?qū)W習(xí)調(diào)試命升令的使用方融法。積圖1輸出狠窗口、觀察盤窗口和存儲接器窗口市圖1調(diào)試窗口(命令窗口、存儲器窗口、觀察窗口)陡1厘、存儲器窗艱口扎圖2存儲器數(shù)值各種方式顯示選擇娛存儲器窗口典中可以顯示塵系統(tǒng)中各種泳內(nèi)存中的值躺,通過在羽Addre澆ss盜后的編緝框全內(nèi)輸入梯“近字母:數(shù)字巷”蠟即可顯示相北應(yīng)內(nèi)存值,鏟其中字母可捉以是揪C網(wǎng)、派D膨、瞎I隸、豪X眼,分別代表董代碼存儲空莫間、直接尋牙址的片內(nèi)存中儲空間、間劍接尋址的片橡內(nèi)存儲空間甩、擴(kuò)展的外盯部走RAM閱空間,數(shù)字前代表想要查緊看的地址。撿例如輸入至D債:耽0緞即可觀察到寨地址御0則開始的片內(nèi)票RAM寒單元值、鍵預(yù)入繁C拼:晚0醒即可顯示從巷0伏開始的塵ROM章單元中的她值,即查看踩程序的二進(jìn)做制代碼。該費(fèi)窗口的顯示恭值可以以各葵種形式顯示彼,如十進(jìn)制通、十六進(jìn)制穗、字符型等嫂,改變顯示僵方式的方法懷是點(diǎn)鼠標(biāo)右緊鍵,在彈出刊的快捷菜伍單中選擇,況該菜單用分添隔條分成三恩部份,其中萍第一部份與刑第二部份的萌三個(gè)選項(xiàng)為躬同一級別,傻選中第一部肅份的任一選撥項(xiàng),內(nèi)容將休以整數(shù)形式稅顯示,而選怪中第二部份產(chǎn)的滴Ascii凳項(xiàng)則將以字紅符型式顯示待,選中盯Float夏項(xiàng)將相鄰四屠字節(jié)組成的搏浮點(diǎn)數(shù)形式矮顯示、選中孝Doubl腸e遵項(xiàng)則將相鄰胳8趙字節(jié)組成雙毛精度形式顯式示。第一部全份又有多個(gè)渴選擇項(xiàng),其跑中蒸Decim鼠al撇項(xiàng)是一個(gè)開飽關(guān),如果選巖中該項(xiàng),則粉窗口中的值膨?qū)⒁允M(jìn)制悲的形式顯示銅,否則按默趕認(rèn)的十六進(jìn)駐制方式顯示景。丹Unsig妻ned陳和駕Signe舅d申后分別有三柄個(gè)選項(xiàng):細(xì)Char想、刃Int自、消Long瓣,分別代表為以單字節(jié)方款式顯示、將課相鄰雙字節(jié)怕組成整型數(shù)眠方式顯示、驟將相鄰四字騎節(jié)組成長整影型方式顯示想,而續(xù)Unsig炭ned制和羨Signe灶d黎則分別代表陶無符號形式茫和有符號形斯式,究竟從子哪一個(gè)單元染開始的相鄰批單元?jiǎng)t與你垃的設(shè)置有關(guān)減,以整型為識例,如果你搞輸入的是病I:0訊,那么貌00H雁和家01H倦單元的內(nèi)容季將會組成一言個(gè)整型數(shù),坑而如果你輸料入的是圓I遞:縣1骨,根01H潛和久02H僑單元的內(nèi)容舊全組成一個(gè)鴨整型數(shù),以判此類推。有差關(guān)數(shù)據(jù)格式字與貪C均語言規(guī)定相施同,請參考效C派語言書籍,膜默認(rèn)以無符攻號單字節(jié)方雪式顯示。第和三部份的規(guī)Modif燙yMem叼orya恐tX:x猜x熟用于更改鼠醫(yī)標(biāo)處的內(nèi)存慨單元值,選只中該項(xiàng)即出浙現(xiàn)如圖虎3映所示的對話碼框,可以在觸對話框內(nèi)輸器入要修改的怕內(nèi)容。
貌圖2內(nèi)存白窗口味圖3修改酷內(nèi)存值圖3存儲器的值的修改踩2潑、工程窗口好寄存器頁井劃圖升4侮是工程窗口乓寄存器頁的宵內(nèi)容,寄存驚器頁包括了喜當(dāng)前的工作畏寄存器組和免系統(tǒng)寄存器脅,系統(tǒng)寄存饞器組有一些吉是實(shí)際存在遲的寄存器如使A慚、跌B借、勿DPTR榆、情SP損、絕PSW物等,有一些值是實(shí)際中并普不存在或雖待然存在卻不揪能對其操作棍的如刻PC邀、款Statu盤s巷等。每當(dāng)程舅序中執(zhí)行到土對某寄存器佳的操作時(shí),砍該寄存器會反以反色(藍(lán)睡底白字)顯霞示,用鼠標(biāo)凈單擊然后按墳下警F2勸鍵,即可修匆改該值。塊圖4工程眨窗口寄存器伙3和、觀察窗口圖4工程窗口寄存器頁謠觀察窗口是鄉(xiāng)很重要的一之個(gè)窗口,工鍬程窗口中僅野可以觀察到貨工作寄存器煤和有限的寄取存器如校A貍、射B被、姓DPTR釋等,如果需老要觀察其它浙的寄存器的烤值或者在高細(xì)級語言編程夢時(shí)需要直接品觀察變量,芒就要借助于纏觀察窗口了線。
勵(lì)其它窗口將踏在以下的實(shí)譜例中介紹。臟一般情況下耳,我們僅在祝單步執(zhí)行時(shí)川才對變量的購值的變化感巖興趣,全速標(biāo)運(yùn)行時(shí),變未量的值是不泥變的,只有扭在程序停下比來之后,才豆會將這些值雁最新的變化哄反映出來,意但是,在一傻些特殊場合脈下我們也可誠能需要在全濕速運(yùn)行時(shí)觀貓察變量的變割化,此時(shí)可脆以點(diǎn)擊式View-羨>Peri竄odic檢Windo態(tài)wUpd攀ata飽(周期更新翠窗口),確狡認(rèn)該項(xiàng)處于褲被選中狀態(tài)難,即可在全舅速運(yùn)行時(shí)動(dòng)種態(tài)地觀察有美關(guān)值的變化主。但是,選居中該項(xiàng),將抬會使程序模幼擬執(zhí)行的速屑度變慢。猴二、各種窗窯口在程序調(diào)熔試中的用途礙以下通過一掩個(gè)高級語言除程序來說明柜這些窗口的農(nóng)使用。例勒2出:甩熊#incl丈ude"備reg51煎.h"外sbit鄉(xiāng)P1_0=臟P1^0;址/慕/境定義汪P1.0苦void戴mDela惱y(uns擇igned濁char溝Dela程yTime挎)魔{un鷹signe閑dint焰j=0;結(jié)fo梅r(;De御layTi妨me>0;乞Delay衡Time-慎-)飛{撥for(j漂=0;j<佳125;j讓++){嗽;}}辦}故void北main(急)特{un貸signe范dint甩i;齒fo捕r(;;)景{mDe酬lay(1乓0);魯//義延時(shí)紐10愉毫秒變譽(yù)筑i+少+;叢賄狀if摩(i==1閃0)冬{P術(shù)1_0=!疫P1_0;疊五妥蝕稿盟i=0;世鞭}竟}跟}橡容這個(gè)程序的煮工作過程是柴:不斷調(diào)用畜延時(shí)程序,賴每次延時(shí)此10里毫秒,然后嫂將變量獨(dú)I降加策1干,隨后對變登量蛛I說進(jìn)行判斷,囑如果艙I孟的值等于掃10松,那么將彈P1.0賢取反,并將綿I曾清案0響,最終的執(zhí)蹲行效果是諸P1.0末每周0.1S倆取反一次。個(gè)輸入源程序嘆并以須exam2零.c宋為文件名存惹盤,建立名慌為增exam2搶的項(xiàng)目,將矛exam2愿.c候加入項(xiàng)目,很編譯、連接吸后按貢Ctrl+慰F5嘴進(jìn)入調(diào)試,壩按丸F10乳單步執(zhí)行。嶄注意觀察窗廢口,其中有至一個(gè)標(biāo)簽頁艘為以Local糧s罰,這一頁會稀自動(dòng)顯示當(dāng)嫌前模塊中的儲變量名及變寬量值??梢猿吹酱翱谥序延忻麨檎笽傳的變量,其搶值隨著執(zhí)行叨的次數(shù)而逐敗漸加大,如務(wù)果在執(zhí)行到秋mDela捷y(10)惱行時(shí)按畏F11憤跟蹤到灰mDela爽y橫函數(shù)內(nèi)部,佛該窗口的變快量自動(dòng)變?yōu)橥﨑elay碧Time賊和邊j瞞。另外兩個(gè)門標(biāo)簽頁后Watch妙#1破和村Watch狐#2肝可以加入自跡定義的觀察骨變量,點(diǎn)擊夢“瞞type訂F2to拔edit胡”性然后再按劍F2線即可輸入變錦量,試著在艇Watch耳#1松中輸入悉I耕,觀察它的掙變化。在程嬌序較復(fù)雜,災(zāi)變量很多的汪場合,這兩禍個(gè)自定義觀抬察窗口可以飾篩選出我們狠自己感興趣積的變量加以替觀察。觀察糾窗口中變量掃的值不僅可載以觀察,還鴿可以修改,亭以該程序?yàn)檠嚼?,弊I候須加女10位次才能到氣10冶,為快速驗(yàn)菜證是否可以鞭正確執(zhí)行到更P1_0=習(xí)!P1_0倘行,點(diǎn)擊塌I詳后面的值,抓再按置F2本,該值即可成修改,將鹿I尤的值改到禮9蟻,再次按紛F10腰單步執(zhí)行,洋即可以很快悼執(zhí)行到麻P1_0=更!P1_0深程序行。該紗窗口顯示的著變量值可以駛以十進(jìn)制或擴(kuò)十六進(jìn)制形間式顯示,方張法是在顯示牛窗口點(diǎn)右鍵丈,在快捷菜淚單中選擇如想圖君5映所示。泄圖5設(shè)定先觀察窗的顯碼示方式圖6反匯編窗口圖5設(shè)定觀察窗的顯示方式私點(diǎn)擊講View-脹>Diss劈ambly可Wind符ow收可以打開反怪匯編窗口,春該窗口可以割顯示反匯編要后的代碼、扣源程序和相僅應(yīng)反匯編代奸碼的混合代敏碼,可以在效該窗口進(jìn)行役在線匯編、晨利用該窗口狹跟蹤已找行筍的代碼、在跪該窗口按匯功編代碼的方咸式單步執(zhí)行蘿,這也是一競個(gè)重要的窗移口。打開反擠匯編窗口,草點(diǎn)擊鼠標(biāo)右丙鍵,出現(xiàn)快敘捷菜單,如桌圖牲6炎所示,其中債Mixed蹄Mode冰是以混合方虧式顯示,央Assem肥blyM貴ode沾是以反匯編評碼方式顯示惱。
動(dòng)程序調(diào)試中邁常使用設(shè)置肅斷點(diǎn)然后全深速運(yùn)行的方激式,在斷點(diǎn)巷處可以獲得刮各變量值,族但卻無法知怪道程序到達(dá)鋸斷點(diǎn)以前究岔竟執(zhí)行了哪錢些代碼,而克這往往是需牧要了解的,服為此,火Keil柿提供了跟蹤農(nóng)功能,在運(yùn)罷行程序之前累打開調(diào)試工贈具條上的允鎮(zhèn)許跟蹤代碼鴨開關(guān),然后穿全速運(yùn)行程暫序,當(dāng)程序產(chǎn)停止運(yùn)行后行,點(diǎn)擊查看千跟蹤代碼按土鈕,自動(dòng)切糾換到反匯編狗窗口,如圖簽6咱所示,其中譯前面標(biāo)有善“帥-梯”旬號的行就是疼中斷以前執(zhí)斗行的代碼,辜可以按窗口螞邊的上卷按怒鈕向上翻查們看代碼執(zhí)行播記錄。k碑圖6反匯翼編窗口狗井利用工程窗蜜口可以觀察駱程序執(zhí)行的尼時(shí)間,下面渠我們觀察一豐下該例中延棚時(shí)程序的延蛛時(shí)時(shí)間是否編滿足我們的片要求,即是派否確實(shí)延時(shí)宵10周毫秒,展開團(tuán)工程窗口讓Regs魚頁中的銷Sys深目錄樹,其唐中的價(jià)Sec辦項(xiàng)記錄了從鳴程序開始執(zhí)桐行到當(dāng)前程衫序流逝的秒哈數(shù)。點(diǎn)擊餡RST云按鈕以復(fù)位剛程序,脹Sec慚的值回零,淚按下瓣F10膝鍵,程序窗次口中的黃色勺箭頭指向雨mDela及y(10)諸行,此時(shí),袋記錄下雨Sec日值為毀0.000絲38900驚,然后再按毀F10稅執(zhí)行完該段肚程序,再次阿查看陵Sec旁的值為餡0.010財(cái)51200悟,兩者相減節(jié)大約是隱0.01牙秒,所以延忘時(shí)時(shí)間大致捆是正確的。斯讀者可以試咸著將延時(shí)程帖序中的奧unsig掏nedi遵nt悲改為誕unsig嘗nedc害har巷試試看時(shí)間朝是否仍正確互。注意,使洋用這一功能蠢的前提是在詞項(xiàng)目設(shè)置中杜正確設(shè)置晶傍振的數(shù)值。系Keil舌提供了串行諒窗口,我們電可以直接在咽串行窗口中戲鍵入字符,帽該字符雖不確會被顯示出休來,但卻能野傳遞到仿真察CPU崗中,如果仿裁真揀CPU誓通過串行口器發(fā)送字符,們那么這些字歇符會在串行正窗口顯示出英來,用該窗緣口可以在沒碌有硬件的情核況下用鍵盤存模擬串口通魯訊。下面通溪過一個(gè)例子膨說明訂Keil響串行窗口的喪應(yīng)用。該程旁序?qū)崿F(xiàn)一個(gè)攤行編緝功能使,每鍵入一繁個(gè)字母,會下立即回顯到知窗口中。編哥程的方法是溪通過檢測釣RI歪是否等于陳1悲來判斷串行概口是否有字束符輸入,如臭果有字符輸幕入,則將其顛送到常SBUF暖,這個(gè)字符饞就會在串行隱窗口中顯示全出來。其中皆ser_i抬nit舉是串行口初應(yīng)始化程序,帝要使用串行禿口,必須首懶先對串行口隙進(jìn)行初始化案。例討3耽:院誕MOV姜SP,#5敵FH;蝶堆棧初始化岡CALL丙SER_I彩NIT;焦串行口初始廁化遞LOOP:鉤鵝JBC香RI,NE店XT;醒如果串口接譜收到字符,躁轉(zhuǎn)扛JMP壩LOOP接;枯否則等待接稱收字符榨NEXT:詢MOVA散,SBUF針;梅從妄SBUF漫中取字符僑MOVS診BUF,A破;細(xì)回送到發(fā)送耍SBUF清中軟SEND:標(biāo)折JBCT輔I,LOO烈P;叢發(fā)送完成,腦轉(zhuǎn)弱LOOP尊JMPS隙END傷;計(jì)否則等待發(fā)荒送完唇SER_I襲NIT:訂角贏;銹中斷初始化速M(fèi)OV檢SC惰ON,#5構(gòu)0H元ORL良TM消OD,#2橫0H艷煙勵(lì)監(jiān)ORL羞PC法ON,#8孝0H岸MOV繳TH死1,#0F光DH;寨設(shè)定波特率緩SETB豐TR錦1耐;譽(yù)定時(shí)器彎1瓜開始運(yùn)行臨SETB駛RE慰N;屈允許接收干SETB麻SM瀉2稻RET恢END續(xù)立輸入源程序軍,并建立項(xiàng)益目,正確編近譯、連接,爪進(jìn)入調(diào)試后貝,全速運(yùn)行辯,點(diǎn)擊串行輕窗口巷1焰按鈕,即在虧原源程序窗匙口位置出現(xiàn)爸一個(gè)空白窗交口,擊鍵,隊(duì)相應(yīng)的字母培就會出現(xiàn)在沫該窗口中。鈔在窗口中擊秘鼠標(biāo)右鍵,猾出現(xiàn)一個(gè)彈墳出式菜單,澡選擇畢“喘Ascii折Mode晚”蘇即以端Ascii臘碼的方式顯順示接收到的杰數(shù)據(jù);選擇右“夸HexM屢ode碌”村以十六進(jìn)制羽碼方式顯示敢接收到的數(shù)愧據(jù);選擇駕“鍬Clear月Wind旅ow潔”懶可以清除窗貫口中顯示的繩內(nèi)容。箏由于部份鳥CPU善具有雙串口案,故魚Keil決提供了兩個(gè)抓串行窗口,訂我們選用的剃89C51罷芯片只有一達(dá)個(gè)串行口,律所以享Seria板l2茅串行窗口不哥起作用。乏小技巧:凡盆是鼠標(biāo)單擊丙然后按終F2厘的地方都可基以用鼠標(biāo)連旨續(xù)單擊兩次亮(注意:不些是雙擊)來些替代。宰教程錄入:盡平凡影責(zé)任編輯昌:平凡怎上一篇教程餓:罩Keil的橫調(diào)試命令、舌在線匯編與震斷點(diǎn)設(shè)置煙下一篇教程枯:退Keil的溜輔助工具和仔部份高級技況巧赴Keil的艇輔助工具和貼部份高級技坡巧近濱平凡地教怕程來源:本女站原創(chuàng)過點(diǎn)擊數(shù)蔽:2331營更抗新時(shí)間:2錯(cuò)008-7疲-24確膏在前面的幾藝講中我們介升紹了工程的劈建立方法,贈常用的調(diào)試滅方法,除此袋之外,作Keil打還提供了一吧些輔助工具撤如外圍接口夸、性能分析氣、變量來源悠分析、代碼額作用分析等繭,幫助我們伸了解程的性津能、查找程氧序中的隱藏盡錯(cuò)誤,快速棵查看程序變撓量名信息等支,這一講中近將對這些功飼工具作一介杯紹,另外還煙將介紹棒Keil相的部份高級躲調(diào)試技巧。翅一、胞殘輔助工具大這部份功能于并不是直接最用來進(jìn)行程抗序調(diào)試的,端但可以幫助武我們進(jìn)行程鍋序的調(diào)試、提程序性能的拴分析,同樣纖是一些很有廣用的工具。龜1拾、外圍接口圖1外圍設(shè)備之并行端口芳為了能夠比殖較直觀地了浙解單片機(jī)中脅定時(shí)器、中稼斷、并行端南口、串行端征口等常用外伐設(shè)的使用情吼況,蛋Keil探提供了一些適外圍接口對掌話框,通過顫Perip獨(dú)heral暴s村菜單選擇,眼該菜單的下郵拉菜單內(nèi)容斧與你建立項(xiàng)霸目時(shí)所選的高CPU瘡有關(guān),如果儀是選擇的狼89C51賴這一類壺“洲標(biāo)準(zhǔn)宋”鋪的條51禿機(jī),那么將未會有相Inter脖rupt戲(中斷)、悉I/OP誓orts她(并行山I/O訂口)、美Seria馬l據(jù)(串行口)拔、勉Timer虧(定時(shí)劫/屈計(jì)數(shù)器)這詠四個(gè)外圍設(shè)哲備菜單。打刊開這些對話陣框,列出了臘外圍設(shè)備的門當(dāng)前使用情瞎況,各標(biāo)志臂位的情況等僑,可以在這尾些對話框中價(jià)直觀地觀察磚和更改各外駝圍設(shè)備的運(yùn)授行情況。
雅圖譜1隆外圍設(shè)備之勇并行端口膚下面我們通合過一個(gè)簡單花例子看一看蜂并行端口的成外圍設(shè)備對煙話框的使用躲。例節(jié)4揪:捧貸MOV騎A娛,#0FE叛H讀LOOP:減MO萄V搜P1,A西院亭RL載損A艙挺淚CA餡LL撓DEL助AY;謹(jǐn)延時(shí)老100伍毫秒態(tài)息愁JM厘P暮LO妨OP眼衰碗其中延時(shí)配100要毫秒的子程秘序請自行編浪寫。圖2外圍設(shè)備之定時(shí)器廉編譯、連接撒進(jìn)入調(diào)試后曠,點(diǎn)擊涼Perip旗heral城s->I/陡O-Por嘉ts->P戀ort1絡(luò)打開,如圖洗1挎所示,全速駕運(yùn)行,可以胡看到代表各貸位的勾在不控?cái)嘧兓ㄈ缑补床坏阶冇浕?,請點(diǎn)擊稻View-億>Peri脹odic去Windo傻wUpd折ata檔),這樣可標(biāo)以形象地看勿出程序執(zhí)行號的結(jié)果。
凝注:如果你封看到的變化逼極快,甚至高看不太清楚求,那么說明首你的計(jì)算機(jī)貓性能好,模慢擬執(zhí)行的速抓度快,你可條以試著將加供長延時(shí)程序關(guān)的時(shí)間以放醬慢速度。模貸擬運(yùn)行速度冊與實(shí)際運(yùn)行錯(cuò)的速度無法唯相同是軟件砍模擬的一個(gè)械固有弱點(diǎn)。丹點(diǎn)擊親Perip寨heral償s->I/父O-Por王ts->T艇imer0壟即出現(xiàn)圖薦2蜂所示定時(shí)爹/偏計(jì)數(shù)器傾0追的外圍接口犁界面,可以補(bǔ)直接選擇陵Mode壩組中的下拉課列表以確定喝定時(shí)峰/栽計(jì)數(shù)工作方片式,絨0-3安四種工作方蛛式,設(shè)定定慧時(shí)初值等,跌點(diǎn)擊選中葛TR0奏,糕statu栗s栽后的色stop熊就變成了融run翠,如果全速親運(yùn)行程序,特此時(shí)濁t(yī)h0,t扔l0銷后的值也快把速地開始變立化(同樣要量求外Perio系dicW挺indow灑Upda壟ta住處于選中狀報(bào)態(tài)),直觀稠地演示了定司時(shí)歷/鷹計(jì)數(shù)器的工香作情況(當(dāng)錦然,由于你還的程序未對潤此寫任何代院碼,所以程微序不會對此豈定時(shí)娘/辯計(jì)數(shù)器的工建作進(jìn)行處理奧)。曠圖補(bǔ)2突外圍設(shè)備之鼓定時(shí)器童廊2載、性能分析雕Keil組提供了一個(gè)瞧性能分析工蘭具,利用該僵工具,我們登可以了解程壘序中哪些部城份的執(zhí)行時(shí)體間最長,調(diào)烤用次數(shù)最多緩,從而了解享影響整個(gè)程感序中執(zhí)行速谷度的瓶頸。好下面通過一涌個(gè)實(shí)例來看予一看這個(gè)工豆具如何使用纏,例胃5侮:蜘姿#incl倡ude"眨reg51謊.h"腳sbit強(qiáng)P1_0=薯P1^0;例/體/寇定義跡P1.0蟲void掌mDela集y(uns狐igned策char貞Dela寸yTime燃)督{un酒signe傳dint院j=0;尖fo茄r(;De梅layTi初me>0;乘Delay住Time-窮-)幫{盤for(j熱=0;j<屠125;j夾++){褲;}}值}嗽void下mDela弦y1(un秒signe個(gè)dcha甚rDel邪ayTim宮e)中{un房signe毒dint床j=0;半fo趁r(;De孟layTi弟me>0;諷Delay汪Time-捏-)耗{棟for(j縫=0;j<兵125;j坡++){恩;}}長}速void土main(闊)迫{un誕signe姐dint聲i;侍fo碎r(;;)芬{mDe讀lay(1客0);副//浴延時(shí)系10斯毫秒宵置各i+藏+;苗塌煙if勤(i==1維0)溫{P候1_0=!剩P1_0;干柴蕩拼翻材i=0;悶憂栗恨勺景悄籍mD億elay1火(10);莖}錦}}蘭樸編譯連接。爐進(jìn)入調(diào)試狀侵態(tài)后使用菜想單剖View-悠>Perf疑orman誰ceAn房alyze聲r(shí)Win皇dow牌,打開性能袍分析對話框金,進(jìn)入該對鷹話框后,只尊有一項(xiàng)消unspe微cifie堆d攪,點(diǎn)鼠標(biāo)右插鍵,在快捷項(xiàng)菜單中選擇扮Setup上PA水即打開性能嬌分析設(shè)置對快話框,對于蜘C壁語言程序,回該對話框右挪側(cè)的憶“截Funct括ionS省ymbol縣”圾下的列表框奉給出函數(shù)符濱號,雙擊某副一符號,該振符號即出現(xiàn)礦在釀Defin鄙ePer里forma腿nceA棚nalyz愁er母下的編緝框女中,每輸入紐一個(gè)符號名皮字,點(diǎn)擊防Defin狗e傷按鈕,即將眠該函數(shù)加入烘其上的分析途列表框。對爭于匯編語言竊源程序,學(xué)Funct侮ionS久ymbol林下的列表框句中不會出現(xiàn)漁子程序名,躍可以直接在巷編緝框中輸佛入子程序名司,點(diǎn)擊嫂Close膛關(guān)閉窗口,工回到性能分錘析窗口,此血時(shí)窗口共有裹4手個(gè)選項(xiàng)。全礙速執(zhí)行程序狼,可以看到技mDela冊y懸和錄mDela鐮y1峽后出現(xiàn)一個(gè)語藍(lán)色指示條蛛,配合上面倒的標(biāo)尺可以痰直觀地看出鹿每個(gè)函數(shù)占旺整個(gè)執(zhí)行時(shí)薪間的比例,況點(diǎn)擊相應(yīng)的謹(jǐn)函數(shù)名,可恥以在該窗口痕的狀態(tài)欄看條到更詳細(xì)的踏數(shù)據(jù),其中族各項(xiàng)的含義跳如下:嬌Min用:該段程序董執(zhí)行所需的仗最短時(shí)間;嗚Max證:該段程序賓執(zhí)行所需的亡最長時(shí)間;之Avg遇:該段程序損執(zhí)行所花平思均時(shí)間;流Total否:該段程序搖到目前為目克總共執(zhí)行的轎時(shí)間;迅%貝:占整個(gè)執(zhí)華行時(shí)間的百袍分比;光count咽:被調(diào)用的償次數(shù)。肢本程序中,譜函數(shù)升mDela先y戒和她mDela脂y1晨每次被調(diào)用存都花費(fèi)同樣令的時(shí)間,看演不出起Min住、箱Max幫、和硬Avg跑的意義,實(shí)最際上,由于看條件的變化護(hù),某些函數(shù)惱執(zhí)行的時(shí)間窮不一定是一烏個(gè)固定的值紛,借助于這筒些信息,可律以對程序有名更詳細(xì)的了蔽解。下面將捉mDela鷹y1武函數(shù)略作修廊改作一演示扭。掩void抹mDela開y1(un戲signe假dcha駕rDel挺ayTim翅e)趴{st待atic施unsig殺nedc窗hark康;際茫unsi俗gned朵intj悲=0;蓄fo墳r(;De喇layTi涂me>0;究Delay存Time-棗-)社{蹄for(;弟j<k;j雹++)狂宵{;}橫}疊k+尼+;}略程序中定義比了一個(gè)靜態(tài)年變量賣K泉,每次調(diào)用餓該變量加雄1詞,而別j曉的循環(huán)條件族與虛k唱的大小有關(guān)友,這使每次愧執(zhí)行該程序芬所花的時(shí)間腦不一樣。編捐譯、執(zhí)行該揪程序,再次貓觀察性能分炸析窗口,可這以看出刑Min搭、桌Max石、予Avg辜的意義。慈3決、變量來源封瀏覽愿該窗口用于痛觀察程序中虛變量名的有少關(guān)信息,如華該變量名在歇那一個(gè)函數(shù)既中被定義、仙在哪里被調(diào)捆用,共出現(xiàn)生多少次等。秧在釘Sourc捉eBro姓wse驟窗口中提供浩了完善的管浪理方法,如獄過濾器可以染分門別類地靠列出各種類哥別的變量名慧,可以對這揮些變量按剖Class嚴(yán)(組)、烤Type五(類型)、鍛Space琴(所在空間擺)、護(hù)Use津(調(diào)用次數(shù)攤)排序,點(diǎn)限擊變量名,司可以在窗口凡的右側(cè)看到迷該變量名的桌更詳細(xì)的信波息。婦4粥、代碼作用忘范圍分析豐在你寫的程暗序中,有些嫩代碼可能永滔遠(yuǎn)不會被執(zhí)巖行到(這是抖無效的代碼攝),也有一斑些代碼必須格在滿足一定獄條件后才能皮被執(zhí)行到,擺借助于代碼鐵范圍分析工碑具,可以快派速地了解代凈碼的執(zhí)行情質(zhì)況。誤進(jìn)入調(diào)試后粘,全速運(yùn)行膝,然后按停捎止按鈕,停愿下來后,可刮以看到在源標(biāo)程序的左列怎有三種顏色禁,灰、淡灰矛和綠,其中時(shí)淡灰所指的飲行并不是可縣執(zhí)行代碼,姓如變量或函辰數(shù)定義、注銹釋行等等,童而灰色行是斥可執(zhí)行但從住未執(zhí)行過的貿(mào)代碼,而綠坡色則是已執(zhí)來行過的程序鵝行。使用調(diào)盾試工具條上市的畢Code償Cover舒ageW地indow絲可打開代碼兵作用范圍分而析的對話框杯,里面有各皮個(gè)模塊代碼妙執(zhí)行情況的扎更詳細(xì)的分倍析。如果你察發(fā)現(xiàn)全速運(yùn)盡行后有一些賤未被執(zhí)行到網(wǎng)的代碼,那佩么就要仔細(xì)陷分析,這些辛代碼究竟是匠無效的代碼舞還是因?yàn)闂l哭件沒有滿足搬而沒有被執(zhí)掉行到。廳二、部份高必級調(diào)試技巧兵Keil至內(nèi)置了一套醬調(diào)試語言,辦很多高級調(diào)鑒試技巧與此蛾有關(guān),但是確全面學(xué)習(xí)這答套語言并不加現(xiàn)實(shí),這不閃是這么幾期殼連載可以勝資任的,這里倉僅介紹部份經(jīng)較為實(shí)用的眨功能,如要留獲得更詳細(xì)腔的信息,請研參考灰Keil楚自帶的幫助煎文件屠GS51.教PDF搭。坊1非、串行窗口釣與實(shí)際硬件衰相連遷Keil糞的串行窗口剪除可以模擬炒串行口的輸斥入和輸出功災(zāi)能外還可以步與廚PC段機(jī)上實(shí)際的伶串口相連,促接受串口輸客入的內(nèi)容,盟并將輸出送遵到串口。這勵(lì)需要在談Keil醋中進(jìn)行設(shè)置歲。方法是首柏先在輸出窗集口的曲Comma箏nd擋頁用姑MODE羞命令設(shè)置串造口的工作方茫式,然后用植ASSIG牢N貨命令將串行截窗口與實(shí)際可的串口相關(guān)注聯(lián),下面我順們通過一個(gè)賤實(shí)例來說明均如何操作。營例節(jié)6恨:潔腳塞ORG仇0械000H付核JMP澤START纖眉ORG農(nóng)道3+4*8倆;冶串行中斷入鈴口絲周JMP厲SER_I淺NT激START專:浙損MOV碑SP,#艦5FH;瘡堆棧初始化秩控CALL時(shí)SER_度INIT伐;憲串行口初始敘化鑼A定鞏SETB詳家EA;嗎只SETB覺郵ES;撕甘JMP冤$分;破主程序到此咐結(jié)束滋SER_I檔NT:立脊JBC緞RI,N袋EXT;灶如果串口接瞇收到字符,抗轉(zhuǎn)誦葉JMP澆SEND帳;點(diǎn)否則轉(zhuǎn)發(fā)送善處理某NEXT:棄棍MOV觸A,SBU蓮F;早從告SBUF堪中取字符切伐MOV濕SBUF,賽A;恭回送到發(fā)送塵SBUF燙中真辟JMP奧OVER蠅SEND:熔筒慢clr晚ti墨OVER:堪額reti無寸SER_I乞NIT:蹲增初;擔(dān)中斷初始化養(yǎng)掌MOV就S截CON,#蚊50H葡啦ORL駱T艷MOD,#姨20H蛛文看耗個(gè)ORL世P虹CON,#己80H飄狹MOV裕T休H1,#0致FDH;屑設(shè)定波特率吸患SET螺BT牽R1雹;筋定時(shí)器色1訴開始運(yùn)行壽吵SET杠BR熔EN;起允許接收稠仔SET命BS木M2肉鞏RET僑END別卷這個(gè)程序使績用了中斷方隔式編寫串行性口輸入抵/貪輸出程序,沙它的功能是聽將接串行口祖收到的字符懼回送,即再軍通過串行口崗發(fā)送出去。樓正確輸入源勞文件、建立棚工程、編譯裕連接沒有錯(cuò)奪后,可進(jìn)行怕調(diào)試,使用搬Keil撈自帶的串行林窗口測試功關(guān)能是否正確難,如果正確斬,可以進(jìn)行貸下一步的連跳機(jī)試驗(yàn)。張為簡單實(shí)用脹,我們不借現(xiàn)助于其它的摩硬件,而是非讓臺PC割機(jī)上的兩個(gè)姿串口互換數(shù)格據(jù),即雄COM1盛發(fā)送房COM2瓦接收,而炮COM2蘋發(fā)送則由隙COM1盼接收,為此仙,需要做一乒根連接線將裝這兩個(gè)串口拌連起來,做輔法很簡單,貢找兩個(gè)可以勢插入未PC霜機(jī)串口的反DIN9盛插座(母)頁,然后用一黃根中3銀芯線將它們莫連起來,連問線的方法是鞠:輛2渠——媽3坐3本——稅2嶺5?!獕?高接好線把兩膜個(gè)插頭分別獻(xiàn)插入透PC寧機(jī)上的串口圍1廣與串口仿2嶼。找一個(gè)藥PC濁機(jī)上的串口受終端調(diào)試軟紐件,如串口慣精靈之類,辨運(yùn)行該軟件逗,設(shè)置好串炮口參數(shù),其碌中串口選擇絲2蒸,串口參數(shù)乘設(shè)置為:展19200富,鋤n誼,占8遷,莫1卷其含義是波療特率為棟19200號,無奇偶校掃驗(yàn),放8糞位數(shù)據(jù),乞1務(wù)位停止位。浩在曬Keil成調(diào)試窗口的吧comma覆nd袋頁中輸入:晉>mode鳳com1絮1920搬0,0,8瘦,1現(xiàn)>assi海gnco摩m1<s蠶in>so職ut獸注意兩行最芒前面的筍“淡>索”員是提示符,斧不要輸入,辮第二行中的補(bǔ)“譜<院”富和鼻“珍>梨”博即鬼“厲小于除”默和東“按大于水”輩符號,中間特的是字母徒“肥s撿”負(fù)和明“雖input征”迫的前兩個(gè)字黑母,最后是誓字母盼“聞s劍”沫和點(diǎn)“懷outpu摸t獄”豬的前三個(gè)字美母。下第一行命令英定義串口歌1武的波特率為惹19200示,無奇偶校萍驗(yàn),康8晚位數(shù)據(jù),友1挨位停止位。覆第二行是將餃串口扭1捆(臨com1蝦)分配給串權(quán)行窗口。告全速運(yùn)行程床序,然后切信換串口精靈由,開始發(fā)送順,會看到發(fā)播送后的數(shù)據(jù)啦會立即回顯撇到窗口中,多說明已接收賴到了發(fā)送過水來的數(shù)據(jù)。邪切換到設(shè)uViso污n書,查看串行恰窗口饞1津,會看到這遣里的確接收昨到了串口精嬸靈送來的內(nèi)謊容?;?幕、從端口送盤入信號福程序調(diào)試中詳如果需要有鍛信號輸入,僚比如數(shù)據(jù)采矛集類程序,輕需要從外界挎獲得數(shù)據(jù),盈由于夢Keil垮的調(diào)試完全憲是一個(gè)軟件奉調(diào)試工具,托沒有硬件與植之相連,所銹以不可能直場接獲得數(shù)據(jù)鏡,為此必須湖采用一些替憂代的方法,巾例如,某電炎路用糖P1借口作為數(shù)據(jù)水采集口,那俗么可以使用腳的一種方法港是利用外圍渴接口,打開傍PORT道1典,用鼠標(biāo)在椅點(diǎn)擊相應(yīng)端繞口位,使其裙變?yōu)楦唠娖骄虻碗娖?,持就能輸入?shù)跑據(jù)。顯然,擇這種方法對價(jià)于要輸獲得少數(shù)據(jù)而不是畜作位處理來蜜說太麻煩了帳,另一種方余法是直接在物comma想nd清頁輸入我port1范=扒數(shù)值,以下技是一個(gè)小小桿的驗(yàn)證程序員。例奧7百:愚LOOP:輕MO但V宏A,P1己屈JZ儉吩NE命XT濃刪MOV濤R英0,#55帖H賢苦JMP混座LOOP噸NEXT:停MO壞V逢R0,#陶0AAH傭灰JMP愿堅(jiān)LOOP變END笛該程序從過P1巨口獲得數(shù)據(jù)初,如果秘P1鼓口的值是抱0景,那么就讓嬸R0委的值為蜻0AAH微,否則讓弦R0收的值為南55H拋。輸入源程暫序并建立工沾程,進(jìn)入調(diào)巴試后,在觀穴察窗口加入糠R0曠,然后全速題運(yùn)行程序,芽注意確保廣View-捎>Peri菠odic裂Windo吼wUpd都ata硬處于選中狀盤態(tài),然后在鑄Comma馬nd建后輸入雄PORT1扶=0橡回車后可以寫發(fā)現(xiàn)觀察窗典口中的驅(qū)R0跪的值變成了轎0AAH稻,然后再輸脾入情PORT1奴=1東或其它非零異值,則奶R0捐的值會變?yōu)檠?5H購。傻同樣的道理到,可以用上port0慮、鹿port2突、受port3油分別向端口禁0霸、禽2旁、唇3呈輸入信號。雪3尿、直接更改觀內(nèi)存值侍在程序運(yùn)行圣中,另一種愁輸入數(shù)據(jù)的探方法是直接劃更改相應(yīng)的御內(nèi)存單元的閉值,例如,券某數(shù)據(jù)采集也程序,使用核30H語和凳31H河作為存儲單米元,采入的法數(shù)據(jù)由這兩裕個(gè)單元保存通,那么我們料更改了秒30H量和長31H而單元的值就慕相當(dāng)于這個(gè)姥數(shù)據(jù)采集程考序采集到了嘉數(shù)據(jù),這可泳以在內(nèi)存窗販口中直接修拉改(參考上朱一講),也鍵可以通過命筋令進(jìn)行修改分,命令的形固式是:雅_WBY格TE(定地址獎(jiǎng),滲數(shù)據(jù)爛)魯,其中地址異是指待寫入悠內(nèi)存單元的蝶地址,而數(shù)寒據(jù)則是待寫耐入該地址的藥數(shù)據(jù)。例如箏_WBYT誠E(0x3喘0,11)榴會將值致11扭寫入內(nèi)存地杯址十六進(jìn)制鞭30H價(jià)單元中。犁教程錄入:注平凡沈責(zé)任編輯皺:平凡礦上一篇教程襖:淺Keil勾程序調(diào)試窗趴口綿…尤下一篇教程偉:株基于Kei仍l的實(shí)驗(yàn)仿汪真板使用遍基于Kei立l的實(shí)驗(yàn)仿午真板使用搜夏平凡問教鍛程來源:本灰站原創(chuàng)訴點(diǎn)擊數(shù)腸:4150頭更震新時(shí)間:2賄008-7次-24哲鍵盤、LED顯示實(shí)驗(yàn)仿真板
拿前面介紹了誠Keil軌軟件的使用關(guān),從中我們描可以看到塔Keil熄的強(qiáng)大功能綱,不過,對疏于初學(xué)者來手說,還有些椅不直觀,調(diào)年試過程中看曠到的是一些經(jīng)數(shù)值,并沒穿有看到這些體數(shù)值所引起鴨的外圍電路楚的變化,例辜如數(shù)碼管點(diǎn)賢亮、發(fā)光管圖發(fā)光等。為聚了讓初學(xué)者遮更好地入門史,筆者利用食Keil油提供的綠AGSI遺接口開發(fā)了剝兩塊仿真實(shí)奏驗(yàn)板。將這兩塊仿真趣板將枯燥無擁味的數(shù)字用脫形象的圖形嚷表達(dá)出來,榆可以使初學(xué)鳴者在沒有硬辱件時(shí)就能感麻受到真實(shí)的短學(xué)習(xí)環(huán)境,友降低單片機(jī)理的入門門檻常。圖禍1丸是鍵盤、很LED儀顯示實(shí)驗(yàn)仿蠻真板的圖,痛從圖中可以遠(yuǎn)看出,該板膊比較簡單,眾有在暴P1閣口接有悼8舒?zhèn)€發(fā)光二極呆管,在債P3靜口接有斯4箏個(gè)按鈕,圖齡的右邊給出險(xiǎn)了原理圖。
四圖1鍵熟盤、咬LED筒顯示實(shí)驗(yàn)仿沃真板菊剖圖流2億是另一個(gè)較好為復(fù)雜的實(shí)開驗(yàn)仿真板。腔在該板上有命8禿個(gè)數(shù)碼管,坦16仇個(gè)按鍵(接口成窩4歇*鍛4請的矩陣式)共,另外還有描P1翅口接的賽8訊個(gè)發(fā)光管,主兩個(gè)外部中酷斷按鈕,一雹個(gè)帶有計(jì)數(shù)善器的脈沖發(fā)膠生器等資源倆,顯然,這秩塊板可以完君成更多的實(shí)旁驗(yàn)。大圖禁2奔單片機(jī)實(shí)驗(yàn)夜仿真板和一、實(shí)驗(yàn)仿筑真板的安裝圖2單片機(jī)實(shí)驗(yàn)仿真板艱這兩塊仿真映實(shí)驗(yàn)板實(shí)際暫上是兩個(gè)歌dll朋文件,名稱侄分別是介ledke鎮(zhèn)y.dll旁和賽simbo幟ard.d填ll奧,安裝時(shí)只部要根據(jù)需要夾將這兩個(gè)或引某一個(gè)文件謊拷貝到但keil弱軟件的賴c51\b糖in育文件夾中即闖可。
付二、實(shí)驗(yàn)仿柄真板的使用效要使用仿真括板,必須對吧工程進(jìn)行設(shè)炮置,設(shè)置的碗方法是點(diǎn)擊嘗Proje壁ct->O洋ption誰for期Targe始t拿‘壯Targe刊t1吹’籍打開對話框怖,然后選中脂Debug睬標(biāo)簽頁,在夏Dialo云g:Pa懷ramet兔er:臉后的編緝框碗中輸入豪-d戲文件名。例員如要用煉ledke粉y.dll予(即第一塊欺仿真板)進(jìn)姥行調(diào)試,就辯輸入糠-dled姥key府,如圖煙3任所示,輸入燕完畢后點(diǎn)擊唱確定退出。層編譯、連接舉完成后按避CTRL+項(xiàng)F5稻進(jìn)入調(diào)試,慎此時(shí),點(diǎn)擊雀菜單枯Perip床heral帽s講,即會多出綁一項(xiàng)愁“塔鍵盤翁LED躁仿真板(兼K劉)不”政,選中該項(xiàng)菜,即會出現(xiàn)渡如圖弄1蛋的界面,同雷樣,在設(shè)置校時(shí)如果輸入歸-dsim搭board啦則能夠調(diào)出言如圖走2懲的界面。圖3實(shí)驗(yàn)仿真板的設(shè)置
過圖棵3茂實(shí)驗(yàn)仿真板廈的設(shè)置個(gè)第一塊仿真蓬板的硬件電手路很簡單,晌電路圖已在拳板上,第二醫(yī)塊板實(shí)現(xiàn)的禍功能稍復(fù)雜嫁,其鍵盤和喜數(shù)碼顯示管賽部份的電路蛋原理圖如圖劉4謠所示。下表玻給出了常用炕字形碼,讀鞠者也可以根移據(jù)圖中的接邁線自行寫出塌其它如究A枝、侄B賴、伯C誠、問D符、活E約、艷F斤等的字形碼吵。禿儉除了鍵盤和丘數(shù)碼管以外伸,辰P1濤口同樣也接撤有趴8杰個(gè)發(fā)光二極未管,連接方餡式與圖希1鷹相同;鍵盤磨旁的兩個(gè)按沃鈕轟INT0魄和賠INT1算分別接到阿P3凈口的醫(yī)INT0濁和外INT1絲即飲P3.2吹和逐P3.3銀引腳,脈沖他發(fā)生器是接薄入俘T0壽即惕P3.4傳引腳。0c0h0f9h0a4h0b0h99h92h82h0f8h80h90h0FFH0123456789消隱圖4實(shí)驗(yàn)仿真板2數(shù)碼管和鍵盤部份的電路圖瓦絡(luò)說明:按鍵頭接法與當(dāng)前貍提供的DP京J8版本不黨相符,請按呢下圖接法編伸程(09年帆4月8日修激訂):炕三、實(shí)例調(diào)麻試傾以下以一個(gè)蓋稍復(fù)雜的程鎖序?yàn)槔?,說個(gè)明鍵盤、肢LED賢顯示實(shí)驗(yàn)仿鑼真板的使用晨。該程序?qū)嵓姮F(xiàn)的是可控張流水燈,接嶺P3.2與的鍵為開始護(hù)鍵,按此鍵集則燈開始流津動(dòng)(由上而螞下),接落P3.3靈的鍵為停止噴鍵,按此鍵頭則停止流動(dòng)選,所有燈暗業(yè),接漲P3.4消的鍵為向上攤鍵,按此鍵針則燈由上向熔下流動(dòng),接鋒P3.5息的鍵為向下從鍵,按此鍵餡則燈由下向易上流動(dòng)。治例渾8扎:棕UpDow扇n愉BI透T00H累;壯上下行標(biāo)志遷Start悅EndB福IT01迫H;易起動(dòng)及停止土標(biāo)志獨(dú)LAMPC漁ODE匪EQU肉2筆1H;層存放流動(dòng)的頑數(shù)據(jù)代碼盜駕ORG攀盲0000H零桐AJMP鼻M需AIN樹遭ORG絮絮30H栽MAIN:輕襲感MOV本S執(zhí)P,#5F受H穩(wěn)小MOV工P掛1,#0F網(wǎng)FH浴夜CLR叨UpDow廈n彩;介啟動(dòng)時(shí)處于淚向上的狀態(tài)滲視CLR夾Start餅End;暖啟動(dòng)時(shí)處于雜停止?fàn)顟B(tài)挑要MOV狡L喬AMPCO遭DE,#0叮1H;誓單燈流動(dòng)的檢代碼蹄泛LOOP:語AC冰ALL并KEY;速調(diào)用鍵盤程農(nóng)序羽跨JNB擇F0,LN很EXT辮;府如果無鍵按厲下逐,零則繼續(xù)膛艱ACAL震LKE索YPROC液設(shè)荒;植否則調(diào)用鍵喊盤處理程序隙LNEXT音:ACA術(shù)LLL雁AMP爺;匆調(diào)用燈顯示佩程序陳制AJMP肆L墻OOP喚死;搏反復(fù)循環(huán)躺,耍主程序到此便結(jié)束縣;組延時(shí)程序添,擋鍵盤處理中序調(diào)用夸DELAY弟:MO唯V艇R7,#粉100鵲D1:M笨OV拔R6,瞇#100喉均DJNZ伍步R6,$帝葉DJNZ母按R7,D1屋孩RET長KEYPR適OC:獨(dú)努MOV趙A痛,B暈鄙;訪從末B夫寄存器中獲釣取鍵值秧寧JB驚ACC.亦2,Key尖Start肢;逼分析鍵的代帥碼非,茶某位被按下厭,派則該位為掘1串爐JB訓(xùn)ACC.貪3,Key糖Over慢設(shè)JB騰ACC.頸4,Key扭Up白拳JB跑ACC.冷5,Key紅Down孩角AJMP怎K汁EY_RE伴T削KeySt貓art:后章SETB士堤Start爆End;誼第一個(gè)鍵按培下后的處理瀉伶AJMP懷K玩
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程款支付申請表的填寫規(guī)范與標(biāo)準(zhǔn)
- 采暖散熱器施工方案
- 星級酒店關(guān)系質(zhì)量研究調(diào)查
- 2025年液堿行業(yè)現(xiàn)狀分析:我國燒堿產(chǎn)量為3980.5萬噸
- 江西省部分學(xué)校2024-2025學(xué)年高三上學(xué)期1月期末英語試題【含答案】
- 2024年普通?等學(xué)校招?全國統(tǒng)?考試上海語?試卷
- 裝修成品保護(hù)施工方案
- 上海市安全員-C3證考試題及答案
- 清除路肩雜草施工方案
- 新風(fēng)機(jī)組施工方案
- 【課時(shí)講練(全冊)】6年級下冊道德與法治 人教部編版(含答案)
- 新川教版信息技術(shù)六年級下冊全冊教案
- 光伏電站安全預(yù)防措施及應(yīng)急預(yù)案
- 陜西省建筑防火設(shè)計(jì)、審查、驗(yàn)收疑難問題技術(shù)指南-ppt
- 部編版語文四年級上冊《 中國古代神話選編》整本書共讀 課件 (共10張PPT)
- 下穿高速鐵路監(jiān)測方案
- 建筑結(jié)構(gòu)加固培訓(xùn)講義
- NB/T 10755-2021煤礦在用架空乘人裝置定期安全檢測檢驗(yàn)規(guī)范
- 平面設(shè)計(jì)需求表、流程表
- GB/T 19774-2005水電解制氫系統(tǒng)技術(shù)要求
- GB/T 15166.4-2021高壓交流熔斷器第4部分:并聯(lián)電容器外保護(hù)用熔斷器
評論
0/150
提交評論