基于單片機仿真器的設(shè)計詳解
仿真器是什么
仿真器(emulator)以某一系統(tǒng)復(fù)現(xiàn)另一系統(tǒng)的功能。與計算機模擬系統(tǒng)(Computer SimulaTIon)的區(qū)別在于,仿真器致力于模仿系統(tǒng)的外在表現(xiàn)、行為,而不是模擬系統(tǒng)的抽象模型。
仿真器可以替代你的目標(biāo)系統(tǒng)中的MCU,仿真其運行。 仿真器運行起來和實際的目標(biāo)處理器一樣,但是增加了其它功能,使你能夠通過桌面計算機或其它調(diào)試界面來觀察MCU中的程序和數(shù)據(jù),并控制MCU的運行。
單片機仿真器的作用
單片機仿真器是一種在電子產(chǎn)品開發(fā)階段代替單片機芯片進(jìn)行軟硬件調(diào)試的開發(fā)工具。配合集成開發(fā)環(huán)境使用仿真器可以對單片機程序進(jìn)行單步跟蹤調(diào)試,也可以使用斷點、全速等調(diào)試手段,并可觀察各種變量、RAM及寄存器的實時數(shù)據(jù),跟蹤程序的執(zhí)行情況。同時還可以對硬件電路進(jìn)行實時的調(diào)試。
利用單片機仿真器可以迅速找到并排除程序中的邏輯錯誤,大大縮短單片機開發(fā)的周期。在現(xiàn)場只利用燒錄器反復(fù)燒寫單片機,通過肉眼觀察結(jié)果進(jìn)行開發(fā)的方法大大增加了調(diào)試的難度,延長了整個開發(fā)周期,并且不容易發(fā)現(xiàn)程序中許多隱含的錯誤,特別對于單片機開發(fā)經(jīng)驗不豐富的初學(xué)者來說更加困難,由此可見,單片機仿真器單片機系統(tǒng)開發(fā)中發(fā)揮著重要的作用。本文主要跟大家分享基于SST89C54/58單片機仿真器的設(shè)計詳解。
基于SST89C54/58單片機仿真器的設(shè)計
一、概述
SST89C54/58(簡稱89C54/58)是美國SST公司推出的多用途51系列單片機,片內(nèi)集成了20 kB/36 kB的SuperFlashE‘PROM程序存儲器,分為BLOCK0(16kB/32kB)和BLOCKl(4kB)兩塊。其中,BLOCKl可以映射(Mapping)到64kB存儲空間的最高端或最低端,而且,對于程序計數(shù)器來說可以是不可見的。由于其存儲結(jié)構(gòu)上獨特的優(yōu)點,使得89C54/58非常適合于用做單片機仿真器。
二、SST89C54/58的程序存儲結(jié)構(gòu)
1、存儲器結(jié)構(gòu)
89C54/58片內(nèi)的存儲塊BLOCK0占據(jù)從0000H到3FFFH/7FFFH的存儲空間,BLOCKl占據(jù)從F000H到FFFFH的存儲空間。89C54/58存儲結(jié)構(gòu)如圖1所示。
當(dāng)EA#=1時,對于程序計數(shù)器來說,BLOCK0始終是可見的,用于代碼的存取;BLOCKl代碼的存取是通過特殊功能寄存器SFCM,SFCF,SFAL,SFAH,SFDT和SFST來實現(xiàn)的。當(dāng)SFCF=1時,BLOCKl是可見的。
2、存儲器再映射(Re-mapping)
89C54/58的存儲器再映射功能使得對BLOCK0進(jìn)行編程時,其系統(tǒng)中斷向量區(qū)依然可用(普通8051系列單片機無此特點)。89C54/58提供4種存儲器再映射方式,存儲器再映射數(shù)量的大小由MAP_ENCl:0)控制,當(dāng)MAP-
三、基于SST89C58的單片機仿真器的設(shè)計
1、設(shè)計原理簡介
仿真器電路設(shè)計如圖2所示。圖中U2為串行通信接口芯片MAX232,U1為89C54/58。89C54/58的監(jiān)控程序通過PC機串行口與KEILC51進(jìn)行通信,實現(xiàn)實時仿真功能。
2、仿真器監(jiān)控程序的加栽
SST公司提供的89C54/58仿真器監(jiān)控程序SoftlCE(Softwareln-CircuitEmulator)可通過SST公司提供的BSL(Boot-StrapLoader)加載或通過支持SST89C54/58的第三方編程器寫入。
3、仿真器性能簡介
基于89C54/58的單片機仿真器除不支持串行口仿真外,具有通用仿真器的所有功能。與KEIL軟件相結(jié)合,可完成大部分單片機應(yīng)用系統(tǒng)的仿真設(shè)計。
其具體性能如下:
(1)可下載IntelHEX格式文件。
(2)支持匯編及C51源代碼調(diào)試。
(3)支持在線匯編。
(4)支持單步(Step)功能。
(5)支持步越(StepOver)功能。
(6)最大可設(shè)置10個固定斷點和一個臨時斷點。
(7)支持讀寫數(shù)據(jù)存儲器。
(8)支持讀寫程序存儲器。
(9)支持讀寫特殊功能寄存器。
(10)支持讀寫端口。
(11)具有IAP(1n-ApplicaTIonProgramming)功能。
4、KEIL軟件及設(shè)置
KEIL C51是德國KEIL公司推出的Windows版的8051系列單片機開發(fā)套件,可用于編譯C源程序、匯編源程序,鏈接和定位目標(biāo)文件和庫,創(chuàng)建HEX文件以及調(diào)試目標(biāo)程序,并內(nèi)嵌有RTX51實時操作系統(tǒng),可 簡化復(fù)雜的多任務(wù)實時應(yīng)用系統(tǒng)的設(shè)計。與89C54/58仿真器配合時,在KEIL開發(fā)環(huán)境中設(shè)置如下:
(1)創(chuàng)建項目,并選擇SST單片機SST89C54/58。
(2)從菜單選擇“OpTIons for,Target 1/。
(3)在”OpTIonsforTarget,Targetl“窗口中,選擇使用KEILMonitor-51Driver,如圖3所示。
(4)雙擊圖3中Settings鍵,設(shè)置目標(biāo)參數(shù)如圖4所示,即可編譯調(diào)試目標(biāo)程序。
四、結(jié)語
綜上所述,由于SST89C54/58獨特的存儲器結(jié)構(gòu),使得89C54/58除用做通用的51單片機外,只需配以少量的外圍電路,即可做成51系列單片機仿真器。與功能強大的KEIL軟件相結(jié)合,為單片機工程師提供實時仿真開發(fā)環(huán)境,可完成大部分單片機應(yīng)用系統(tǒng)的設(shè)計。