天天看點

在Proteus中實作C51源碼級的調試

Proteus是英國L,abcenter公司開發的EDA軟體,它集單片機仿真和SPICE分析于一身,功能極其強大。目前在國内開始被廣泛使用,在網絡上有很多論壇在讨論該軟體的使用。(編者注:有關該軟體的基本使用方法見《無線電》2005年第5、6期。)用該軟體進行單片機系統的仿真時,若要實作源碼級的調試,目前廣泛采用的有兩種方式:一是調用彙編語言程式,但是目前相對來說,編制大量彙編代碼的人越來越少,以51系列單片機為例,更多的是采用C51,是以這種方式不是最佳方式。二是利用Keil C51軟體與Proteus搭建的聯調系統,這種方式在調試時需要Keil和Proteus一起運作,并頻繁在不同視窗之間切換,使用起來不太友善。本文将介紹兩種直接在Proteus軟體中實作C51源碼級調試的方式。

  8051單片機仿真支援的檔案格式用Proteus進行具體仿真之前都需要設定相應的程式檔案。當我們點選程式檔案輸入框右側的檔案夾圖示,則可以打開檔案選擇對話框來選擇Proteus支援的檔案。

  其所支援的檔案類型有Intel  Hex  Files、OMF51 Files、UBROF Files三種。

  對于前面提到的兩種方式需要配置的是Intel Hex Fries格式的檔案,即我們通常使用的HEX十六進制檔案。是低版本所支援的格式。該檔案沒有包含足夠的資訊,不允許我們進行單步調試,不能實作觀察源碼、觀看變量等功能。

  後面兩種格式是在6.9版本中增加的。其中OMF51(absolute objectmodule format files,絕對目标檔案)是Keil所支援的檔案格式,UBROF(Universal Binary ReLOCatable Ob—ject Format,通用的二進制重定位目标格式)是IAR編譯器所支援的檔案格式。它們都包括所有的指令和調試資訊,允許我們實作全速、單步、設定斷點、觀察變量等調試功能,它是由編譯器輸出的目标檔案。下面分别介紹OMF51格式和UBROF格式檔案的生成和使用。

  在kell中如何生成OMF51聊格式的檔案具體過程如下:

  1.在Keil中打開相應的工程項目。

  2.将Target 1選中點滑鼠右鍵,選擇Options for Trget“Target 1"。

  3.在新打開的對話框中選擇OUTPUT欄,并完成設定。

  需要說明.通常Name of Executable是工程名,沒有擴充名,需要我們添加“omf”。再有必須要包含調試的資訊(Debug Information),将輸出十六進制Hex格式檔案的選項(Create HEX File)去掉,然後點選确定退出。對整個工程進行編譯就可以得到我們想要的OMF。格式檔案了。

  如何使用OMF51格式檔案在Proteus軟體中打開單片機仿真檔案,将程式檔案設定成OMF檔案,然後就可以在Proteus環境中調試系統。

  當需要調出c源代碼視窗時,先按下面的暫停按鈕,然後點Debug菜單,将8051 CPU SourceCode-U1選中,也可以打開其它觀察視窗。這個時候的調試方式和VC++等系統相似,提供了全速、跳過函數、進入函數、跳出函數、執行到光标處、設定斷點、單步等方式。

  在岫中如何生成删格式的檔案首先要正确安裝IAR軟體,IAR軟體針對不同的微控制器有不同的版本,是以在安裝時選擇8051的版本,在下載下傳之前需要注冊,之後會将注冊碼和下載下傳位址發送到你的信箱,然後下載下傳安裝,使用期是一個月,目前的版本為7.2,下面的所有操作都是基于該版本的IAR。關于如何安裝IAR軟體這裡不再詳述。

  UBROF格式檔案生成的具體過程如下;1.在IAR中打開相應的工程項目。

  2.如圖7所示,将WorksPACe選擇為Debug方式,這是必須的,否則觀察不了源代碼。

  3.本例中的工程名為EX-1,将EX-1-De-bug選中并點滑鼠右鍵,選擇Options。

  4.在打開的Options對話框中選擇Linker,此時要産生UBROF格式的檔案有兩種方式:第一種方式,選擇Output欄,完成設定,其他項均為預設值,第二種方式,選擇Extra Output欄,此時若Output欄中的Format設定為Debug infor—mation for C-SPY,則必須選中A11owC-SPY-spe-cific  extraoutput file。

  5.在設定如何使用UBROF格式的檔案在Proteus軟體中打開單片機仿真檔案,将程式檔案設定成UBROF格式的檔案,然後就可以在Proteus環境中調試系統。

  當需要調出C源代碼視窗時,先按下面的暫停按鈕,然後點Debug菜單,将8051  CPUSource Code—U1選中,也可以打開其它觀察視窗。這個時候的調試方式和VC++等系統相似,提供了全速、跳過函數、進入函數、跳出函數、執行到光标處、設定斷點、單步等方式。

  采用UBROF恪式的檔案比采用OMF格式的檔案更有優勢,因為采用UBROF格式的檔案可以直接通過變量的名稱觀察程式裡的變量,觀察視窗可通過Debug菜單下選中7.8051 CPU Vari—ables-U1調出,在變量視窗中可以觀察到變量temp的目前值,而采用OMF格式的檔案則不具有這項功能。

  總結利用OMF和UBROF檔案進行調試的方式,将為開發節約大量的時間。

  由于整個仿真過程和我們使用硬體系統的操作完全一緻,這樣的調試方式特别适合于職業教育訓練和職業技能的考核。目前使用Proteus軟體仿真8051單片機系統時采用這種方式的還不多見,是以将自己的一些使用經驗寫出來供大家參考。

繼續閱讀