日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]  上一講中我們學(xué)習(xí)了幾種常用的程序調(diào)試方法,這一講中將介紹Keil提供各種窗口如輸出窗口、觀察窗口、存儲器窗口、反匯編窗口、串行窗口等的用途,以及這些窗口的使用方法,并通過實(shí)例介紹這些窗口在調(diào)試中的使用

  上一講中我們學(xué)習(xí)了幾種常用的程序調(diào)試方法,這一講中將介紹Keil提供各種窗口如輸出窗口、觀察窗口、存儲器窗口、反匯編窗口、串行窗口等的用途,以及這些窗口的使用方法,并通過實(shí)例介紹這些窗口在調(diào)試中的使用。

  一、程序調(diào)試時的常用窗口

  Keil軟件在調(diào)試程序時提供了多個窗口,主要包括輸出窗口(Output Windows)、觀察窗口(Watch&Call Statck Windows)、存儲器窗口(Memory Window)、反匯編窗口(Dissambly Window)串行窗口(Serial Window)等。進(jìn)入調(diào)試模式后,可以通過菜單View下的相應(yīng)命令打開或關(guān)閉這些窗口。

圖1是輸出窗口、觀察窗口和存儲器窗口,各窗口的大小可以使用鼠標(biāo)調(diào)整。進(jìn)入調(diào)試程序后,輸出窗口自動切換到Command頁。該頁用于輸入調(diào)試命令和輸出調(diào)試信息。對于初學(xué)者,可以暫不學(xué)習(xí)調(diào)試命令的使用方法。

1、存儲器窗口

存儲器窗口中可以顯示系統(tǒng)中各種內(nèi)存中的值,通過在Address后的編緝框內(nèi)輸入“字母:數(shù)字”即可顯示相應(yīng)內(nèi)存值,其中字母可以是C、D、I、X,分別代表代碼存儲空間、 直接尋址的片內(nèi)存儲空間、間接尋址的片內(nèi)存儲空間、擴(kuò)展的外部RAM空間,數(shù)字代表想要查看的地址。例如輸入D:0即可觀察到地址0開始的片內(nèi)RAM單元值、鍵入C:0即可顯示從0開始的ROM單元中的值,即查看程序的二進(jìn)制代碼。該窗口的顯示值可以以各種形式顯示,如十進(jìn)制、十六進(jìn)制、字符型等,改變顯示方式的方法是點(diǎn)鼠標(biāo)右鍵,在彈出的快捷菜單中選擇,該菜單用分隔條分成三部份,其中第一部份與第二部份的三個選項(xiàng)為同一級別,選中第一部份的任一選項(xiàng),內(nèi)容將以整數(shù)形式顯示,而選中第二部份的Ascii項(xiàng)則將以字符型式顯示,選中Float項(xiàng)將相鄰四字節(jié)組成的浮點(diǎn)數(shù)形式顯示、選中Double項(xiàng)則將相鄰8字節(jié)組成雙精度形式顯示。第一部份又有多個選擇項(xiàng),其中Decimal項(xiàng)是一個開關(guān),如果選中該項(xiàng),則窗口中的值將以十進(jìn)制的形式顯示,否則按默認(rèn)的十六進(jìn)制方式顯示。Unsigned和Signed后分別有三個選項(xiàng):Char、Int、Long,分別代表以單字節(jié)方式顯示、將相鄰雙字節(jié)組成整型數(shù)方式顯示、將相鄰四字節(jié)組成長整型方式顯示,而Unsigned和Signed則分別代表無符號形式和有符號形式,究竟從哪一個單元開始的相鄰單元則與你的設(shè)置有關(guān),以整型為例,如果你輸入的是I:0,那么00H和01H單元的內(nèi)容將會組成一個整型數(shù),而如果你輸入的是I:1,01H 和02H單元的內(nèi)容全組成一個整型數(shù),以此類推。有關(guān)數(shù)據(jù)格式與C語言規(guī)定相同,請參考C語言書籍,默認(rèn)以無符號單字節(jié)方式顯示。第三部份的Modify Memory at X:xx用于更改鼠標(biāo)處的內(nèi)存單元值,選中該項(xiàng)即出現(xiàn)如圖3所示的對話框,可以在對話框內(nèi)輸入要修改的內(nèi)容。

2、工程窗口寄存器頁

圖4是工程窗口寄存器頁的內(nèi)容,寄存器頁包括了當(dāng)前的工作寄存器組和系統(tǒng)寄存器, 系統(tǒng)寄存器組有一些是實(shí)際存在的寄存器如A、B、DPTR、SP、PSW等,有一些是實(shí)際中并不存在或雖然存在卻不能對其操作的如PC、Status等。每當(dāng)程序中執(zhí)行到對某寄存器的操作時,該寄存器會以反色(藍(lán)底白字)顯示,用鼠標(biāo)單擊然后按下F2鍵,即可修改該值。

3、觀察窗口

觀察窗口是很重要的一個窗口,工程窗口中僅可以觀察到工作寄存器和有限的寄存器如A、B、DPTR等,如果需要觀察其它的寄存器的值或者在高級語言編程時需要直接觀察變量,就要借助于觀察窗口了。

其它窗口將在以下的實(shí)例中介紹。

一般情況下,我們僅在單步執(zhí)行時才對變量的值的變化感興趣,全速運(yùn)行時,變量的值是不變的,只有在程序停下來之后,才會將這些值最新的變化反映出來,但是,在一些特殊場合下我們也可能需要在全速運(yùn)行時觀察變量的變化,此時可以點(diǎn)擊View->Periodic Window Updata(周期更新窗口),確認(rèn)該項(xiàng)處于被選中狀態(tài),即可在全速運(yùn)行時動態(tài)地觀察有關(guān)值的變化。但是,選中該項(xiàng),將會使程序模擬執(zhí)行的速度變慢。

二、各種窗口在程序調(diào)試中的用途 以下通過一個高級語言程序來說明這些窗口的使用。例2,

#include "reg51.h"

sbit P1_0=P1^0; //定義P1.0

void mDelay(unsigned char DelayTime)

{ unsigned int j=0;

for(;DelayTime>0;DelayTime--)

{ for(j=0;j<125;j++) {;} }

}

void main()

{ unsigned int i;

for(;;){ mDelay(10); //延時10毫秒

i++;

if(i==10)

{ P1_0=!P1_0;

i=0; }

} }

這個程序的工作過程是:不斷調(diào)用延時程序,每次延時10毫秒,然后將變量I加1,隨后對變量I進(jìn)行判斷,如果I的值等于10,那么將P1.0取反,并將I清0,最終的執(zhí)行效果圖4 工程窗口寄存器頁圖3存儲器的值的修改

是P1.0每0.1S取反一次。

輸入源程序并以exam2.c為文件名存盤,建立名為exam2的項(xiàng)目,將exam2.c加入項(xiàng)目, 編譯、連接后按Ctrl+F5進(jìn)入調(diào)試,按F10單步執(zhí)行。注意觀察窗口,其中有一個標(biāo)簽頁為 Locals,這一頁會自動顯示當(dāng)前模塊中的變量名及變量值??梢钥吹酱翱谥杏忻麨镮的變量,

其值隨著執(zhí)行的次數(shù)而逐漸加大,如果在執(zhí)行到mDelay(10)行時按F11跟蹤到mDelay函數(shù)內(nèi)部,該窗口的變量自動變?yōu)镈elayTime和j。另外兩個標(biāo)簽頁Watch #1和Watch #2可以加入自定義的觀察變量,點(diǎn)擊“type F2 to edit”然后再按F2即可輸入變量,試著在Watch #1 中輸入I,觀察它的變化。在程序較復(fù)雜,變量很多的場合,這兩個自定義觀察窗口可以篩選出我們自己感興趣的變量加以觀察。觀察窗口中變量的值不僅可以觀察,還可以修改,以該程序?yàn)槔?,I須加10次才能到10,為快速驗(yàn)證是否可以正確執(zhí)行到P1_0=!P1_0行,點(diǎn)擊 I后面的值,再按F2,該值即可修改,將I的值改到9,再次按F10單步執(zhí)行,即可以很快執(zhí)行到P1_0=!P1_0程序行。該窗口顯示的變量值可以以十進(jìn)制或十六進(jìn)制形式顯示,方法是在顯示窗口點(diǎn)右鍵,在快捷菜單中選擇如圖5所示。

點(diǎn)擊View->Dissambly Window可以打開反匯編窗口,該窗口可以顯示反匯編后的代碼、源程序和相應(yīng)反匯編代碼的混合代碼,可以在該窗口進(jìn)行在線匯編、利用該窗口跟蹤已找行的代碼、在該窗口按匯編代碼的方式單步執(zhí)行,

這也是一個重要的窗口。打開反匯編窗口,點(diǎn)擊鼠標(biāo)右鍵,出現(xiàn)快捷菜單,如圖6所示,其中MixedMode是以混合方式顯示,Assembly Mode是以反匯編碼方式顯示。

程序調(diào)試中常使用設(shè)置斷點(diǎn)然后全速運(yùn)行的方式,在斷點(diǎn)處可以獲得各變量值,但卻無法知道程序到達(dá)斷點(diǎn)以前究竟執(zhí)行了哪些代碼,而這往往是需要了解的,為此,Keil提供了跟蹤功能,在運(yùn)行程序之前打開調(diào)試工具條上的允許跟蹤代碼開關(guān),然后全速運(yùn)行程序,當(dāng)程序停止運(yùn)行后,點(diǎn)擊查看跟蹤代碼按鈕,自動切換到反匯編窗口,

如圖6所示,其中前面標(biāo)有“-”號的行就是中斷以前執(zhí)行的代碼,可以按窗口邊的上卷按鈕向上翻查看代碼執(zhí)行記錄。

利用工程窗口可以觀察程序執(zhí)行的時間,下面我們觀察一下該例中延時程序的延時時間是否滿足我們的要求,即是否確實(shí)延時10毫秒,展開工程窗口Regs頁中的Sys目錄樹,其中的Sec項(xiàng)記錄了從程序開始執(zhí)行到當(dāng)前程序流逝的秒數(shù)。點(diǎn)擊RST按鈕以復(fù)位程序,Sec 的值回零,按下F10鍵,程序窗口中的黃色箭頭指向mDelay(10)行,此時,記錄下Sec值為0.00038900,然后再按F10執(zhí)行完該段程序,再次查看Sec的值為0.01051200,兩者相減大約是0.01秒,所以延時時間大致是正確的。讀者可以試著將延時程序中的unsigned int改為 unsigned char試試看時間是否仍正確。注意,使用這一功能的前提是在項(xiàng)目設(shè)置中正確設(shè)置晶振的數(shù)值。

Keil提供了串行窗口,我們可以直接在串行窗口中鍵入字符,該字符雖不會被顯示出來, 但卻能傳遞到仿真CPU中,如果仿真CPU通過串行口發(fā)送字符,那么這些字符會在串行窗口顯示出來,用該窗口可以在沒有硬件的情況下用鍵盤模擬串口通訊。下面通過一個例子說明Keil串行窗口的應(yīng)用。該程序?qū)崿F(xiàn)一個行編緝功能,每鍵入一個字母,會立即回顯到窗口中。編程的方法是通過檢測RI是否等于1來判斷串行口是否有字符輸入,如果有字符輸入,則將其送到SBUF,這個字符就會在串行窗口中顯示

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計(jì)中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計(jì)工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉