原文網址:http://www1.eccn.com/tech06/te074653.asp
用SST89E516RD自制51單片機仿真器
|
||||||
文/吳漢清
|
||||||
一、單片機SST89E516RD簡介 SST89E516RD是8位集成存儲器的51系列兼容單片機,和51系列單片機軟件兼容、開發工具兼容、管腳也兼容。 SST89E516RD片內有兩塊SuperFlash EEPROM,分爲64K主塊(Block0)和8K次塊(Block1)。Block0的地址範圍是0000h~ffffh;Block1的地址範圍是10000h~11fffh。做仿真器時Block1存儲區燒寫SoftICE仿真監控程序。 SST89E516RD具有在應用可編程(IAP)和在系統可編程(ISP)的功能,其中IAP是通過串口實現的。 仿真器就是利用了SST89E516RD的IAP功能。由於SST89E516RD具有兩塊獨立的SuperFlash程序存儲區,當監控程序在Block1存儲區中運行時可以改寫Block0程序存儲區中的程序,這就是仿真器的基本特性。 SST89E516RD的引腳圖見圖1。更詳細的資料見本期配刊光盤。
二、仿真器電路和工作原理 仿真器的電路見圖2。仿真器通過計算機的一個串口與KeilμVision2集成開發環境進行通信。VTl、VT2、VD1、VD2、R1~R5等組成電平轉換電路,其中發光二極管VD2作串口通信信號指示。
單片機SST89E516RD和晶振電路、復位電路一起組成單片機最小系統。SST89E516RD的引腳分別接在40腳的插針上,應用時40腳的插針插在目標板的單片機插座上。仿真器可能通過跳線的方式選擇仿真器上的晶振或目標板上的晶振。仿真器使用目標板上的電源。 仿真器的工作過程就是在調試過程中隨時對程序進行修改,來達到單步運行、跨步運行、斷點運行和全速運行的目的。在通過KeilμVision2集成開發環境進行仿真時,需要調試的單片機程序目標代碼通過串口被傳送給監控芯片,並由監控程序燒寫到監控芯片的Block0程序存儲器中。在仿真調試過程中,監控程序可以隨時改寫被調試的程序來設置單步運行、跨步運行、斷點運行。程序暫停執行後,在集成開發環境中可以觀察單片機RAM、寄存器和單片機內部的各種狀態。 爲了避免製作雙面印製電路板的麻煩,仿真器可用萬能電路板安裝。單片機使用IC插座安裝。 仿真器的監控芯片SST89E516RD中要預先燒寫監控程序,SST、公司爲部分SST89類單片機提供了仿真監控程序,但其中不包括SST89E516RD的監控程序,由於SST89E516RD和SST89E564RD兼容,因此可以用SST89E564RD的監控程序代替,SST89E564RD監控程序的下載地址爲:www.sst.com/prod-ucts/software.utiIs/softice/index.xhtml,下載網頁軟件列表中的SoftICE_564.zip文件,解壓縮後即可得到Softlce564.hex目標文件。用能夠燒寫SST89E516RD芯片的編程器將SoftIce564.hex目標文件燒入Block1程序存儲區。燒寫時注意兩點1.加載目標文件時緩衝區開始地址要改爲10000;2.加密位SB1、SB2、SB3和配置位SC0等都不要勾選。只有這樣才能正常使用IAP功能。如果自己沒有可用的編程器,可在購買單片機芯片時請商家代寫,現在網上也有已燒寫好監控程序的SST89E516RD芯片出售。 製作中40腳插針和IC插座焊接是一個難點,先焊接好40腳插針,然後在其對面即銅箔面焊接IC插座,IC插座除18、19腳要接跳線外,其餘各引腳焊接在插針的對應焊點上。仿真器到串口插頭的連線可使用雙芯屏蔽線,其中屏蔽層作接地線。如果沒有屏蔽線也可以用三根導線作連線。 製作好的仿真器照片實物見圖3。
四、使用Keil μVision2進行仿真調試 仿真器做好以後就可以配合Keil μVision2進行仿真調試,筆者爲仿真調試建了一個項目test.Uv2,在本期配刊光盤中,這是一個流水燈的程序,對應的單片機目標板電路見圖4。項目中有關仿真器的選項都已設置好。如果自己建項目進行設置,則相關設置過程如下:
在菜單Project中選擇Optionsfor Target'Targetl',在"Optionsfor Trarget 'Targetl'"對話框的Debug 頁面裏,選擇"Use:KeilMonitor-51 Driver"。相關設置見圖5。
然後單擊"Settings"選擇要使用的計算機串行端口。Keil μ Vision2默認設置爲COM1/9600。仿真器在一定範圍內對串行通信波特率是自適應的,晶振頻率爲11.0592MHz時波特率可在4800~38400 之間選擇。一般取最大值,以提高串口通信速度。相關設置見圖6。最後單擊"確定"按鈕保存設定。仿真器或目標板也可以選擇其他頻率的晶振,比如晶振頻率爲6MHz時波特率可在2400~19200之間選擇。如果使用目標板上的晶振,波特率要根據目標板上的晶振頻率確定。
打開項目test.Uv2,完成上述設置後就可以進行仿真調試了。先單擊工具欄上的Build target按鈕 編譯項目,編譯成功後將生成目標代碼。將仿真器按正確的方向插在目標板上,串口和計算機連接好後接通目標板的電源,按一下仿真器的復位鍵SB,再單擊Start/Stop Debug session按鈕 ,啓動仿真調試環境,這時目標代碼將被自動下載到仿真器的Block0用戶程序空間。連接成功會後出現如圖7所示的畫面,連接過程中我們會發現發光二極管VD2在閃爍。連接不成功時請檢查軟件設置和硬件電路。 仿真時使用的主要調試按鈕的功能如下:
進入仿真調試環境後,按一下全速運行按鈕 ,目標板上的8個發光二極管就會輪流點亮,表示運行成功。如果我們在delay(100)前插入一個斷點,按一下全速運行按鈕 你會發現程序運行到斷點後停止向下執行,只有第一個發光二極管點亮;再按一下全速運行按鈕 ,剛輪流到第二個發光二極管點亮,以此類推。退出仿真時,請先按仿真器的復位鍵,然後再點一下按鈕 ,就回到編輯模式,修改程序後重新編譯,可以再次進入仿真調試環境。注意每次進入仿真調試環境前都要先按一下仿真器的復位按鈕SB。 使用仿真器時請注意下面兩點: 1.仿真器佔用了仿真單片機的串行通信接口和用作波特率發生器的定時器2的資源,只有在全速運行時才釋放這些資源,因此當目標板使用這些資源時就不能進行單步、跨步、斷點等運行。這也是這個仿真器的一個不足之處。 2.仿真器監控芯片的SuperFlashEEPROM擦寫壽命一般爲每個存儲單元1萬次,而每一個單步執行都將擦寫一次存儲單元,因此應儘量少使用單步執行,多使用斷點、跨步、斷點和執行到光標行等節省擦寫次數的功能,以延長仿真器的使用壽命。 |