80C51系列單片機(jī)仿真器選購(gòu)指南
第六章 如何測(cè)試通用仿真器
在選擇了仿真器生產(chǎn)廠商后,用戶還需要對(duì)仿真器的性能做仔細(xì)的測(cè)試,保證您選擇的仿真器能夠達(dá)到該仿真器保證的性能以及作為仿真器應(yīng)該達(dá)到的性能。
在選擇一種仿真器前,通過(guò)該仿真器的廣告和銷售人員的介紹,用戶能基本上了解該仿真器的突出性能。這些突出性能應(yīng)該是該仿真器確實(shí)存在的功能,雖然可能有被夸大但一般都不會(huì)有欺騙的成分。這些性能好不好需要有針對(duì)性的一一驗(yàn)證,這里只能建議用戶將目光注意在實(shí)際仿真性能上,而不要過(guò)分注意一些與仿真器無(wú)關(guān)或關(guān)系不大的功能。
很多的仿真器雖然具備一些附加的功能,但是用戶必須要注意到這些仿真器可能在一些最基本的仿真功能卻做不好,這種現(xiàn)象在國(guó)產(chǎn)的仿真器中非常普遍!由于用戶并不專業(yè)于仿真器的測(cè)試,因此在購(gòu)買中不知道對(duì)這些仿真器的死點(diǎn)進(jìn)行驗(yàn)證。等以后在學(xué)習(xí)特別是在開(kāi)發(fā)設(shè)計(jì)中,這些設(shè)計(jì)中的死點(diǎn)可能給您帶來(lái)莫名其妙的問(wèn)題。您可能要花幾倍的時(shí)間來(lái)尋找其中的原因,因?yàn)槟紫葢岩墒悄到y(tǒng)的問(wèn)題而不懷疑是仿真器的問(wèn)題。所以選擇一個(gè)性能可靠的仿真器是十分重要的,這需要非常專業(yè)化的測(cè)試程序來(lái)實(shí)現(xiàn)。
以下的測(cè)試程序由廣州致遠(yuǎn)電子有限公司提供,經(jīng)過(guò)長(zhǎng)時(shí)間的使用證明能基本上反映出一個(gè)仿真器設(shè)計(jì)水平的高低。廣州致遠(yuǎn)電子有限公司在提供這些測(cè)試程序時(shí)聲明:這些測(cè)試程序只是指出仿真器設(shè) 計(jì)中容易出現(xiàn)的問(wèn)題,但并不有意攻擊任何含有上述問(wèn)題的仿真器廠家。
1.單步性能的測(cè)試
測(cè)試說(shuō)明:?jiǎn)尾绞欠抡嫫髟O(shè)計(jì)中比較難實(shí)現(xiàn)的功能。照通常的理解,用戶每執(zhí)行一個(gè)單步應(yīng)該準(zhǔn)確實(shí)現(xiàn)理想運(yùn)行的單步性能。例如,運(yùn)行一個(gè)機(jī)器周期的指令,內(nèi)部的所有時(shí)序應(yīng)該都動(dòng)作一個(gè)機(jī)器周 期而不能出現(xiàn)不動(dòng)作或動(dòng)作過(guò)度的現(xiàn)象。不過(guò)很遺憾的看到國(guó)內(nèi)的仿真器多數(shù)不能達(dá)到這個(gè)指標(biāo)。
測(cè)試程序:
ORG 0000H
SETB TR0 /* 打開(kāi)定時(shí)器0 */
TestStart:
NOP /* 定時(shí)器0 運(yùn)行1個(gè)機(jī)器周期, TL0 加1 */
MOV A,#0FFH /* 定時(shí)器0 運(yùn)行1個(gè)機(jī)器周期, TL0 加1 */
MUL AB /* 定時(shí)器0 運(yùn)行4 個(gè)機(jī)器周期, TL0 加4 */
LJMP TestStart /* 定時(shí)器0 運(yùn)行2 個(gè)機(jī)器周期, TL0 加2 */
END
測(cè)試步驟
(1) 照您當(dāng)前使用的仿真器要求測(cè)試上面的程序;
(2) 在運(yùn)行前打開(kāi)TL0 的顯示,以便單步運(yùn)行后能觀察TL0 的變化;
(3) 使用當(dāng)前仿真器環(huán)境提供的單步功能開(kāi)始單步運(yùn)行;
(4) 單步運(yùn)行后檢查TL0 變化的數(shù)值是否與指令的周期數(shù)相同。
測(cè)試結(jié)論:仿真器如果沒(méi)有照嚴(yán)格正規(guī)的設(shè)計(jì),程序的單步運(yùn)行性能將不準(zhǔn)確,一般會(huì)出現(xiàn)實(shí)際運(yùn)行時(shí)間變長(zhǎng)的現(xiàn)象,這在時(shí)間要求較高的單步運(yùn)行將不能仿真程序的真正運(yùn)行。
2.中斷性能的測(cè)試
測(cè)試說(shuō)明:中斷是一種非正常的程序跳轉(zhuǎn),單步仿真有一定的難度,尤其在低檔仿真器中。在當(dāng)前采用Bondout 技術(shù)制作的仿真器中一般可以做到正確仿真,但是仍有一些仿真器不能正確單步仿真中斷。
測(cè)試程序:
ORG 0000H
LJMP TestStart
ORG 000BH /* 定時(shí)器0 的中斷服務(wù)程序 */
RETI
TestStart:
SETB EA /* 開(kāi)放全局中斷允許 */
SETB ET0 /* 開(kāi)放T0 中斷允許 */
TestLoop:
SETB TF0 /* 設(shè)置T0 的中斷標(biāo)志 */
INC A /* A 數(shù)值加一,以便觀察程序持續(xù)運(yùn)行 */
LJMP TestLoop /* 連續(xù)運(yùn)行 */
END
測(cè)試步驟
(1) 照您當(dāng)前使用的仿真器要求測(cè)試上面的程序。
(2) 每次SETB TF0 后程序?qū)⑦M(jìn)入T0 的中斷服務(wù)程序,執(zhí)行完畢后返回主程序繼續(xù)運(yùn)行。
(3) 主程序能在TestLoop 中連續(xù)運(yùn)行,因此A 能連續(xù)加一,但是每循環(huán)一次就進(jìn)入一次中斷。
測(cè)試結(jié)論:仿真器如果沒(méi)有照嚴(yán)格正規(guī)設(shè)計(jì),程序的中斷性能將不準(zhǔn)確。可能出現(xiàn)程序不能跳轉(zhuǎn)到中斷服務(wù)程序,或沒(méi)有返回到正確的主程序,或A 不能每次循環(huán)連續(xù)的加1。
評(píng)論