單片機的單CPU仿真器的設(shè)計
單片機主程序如下:
MOV SCON,#50H ;串口方式 1
MOV TMOD,#20H ;T1 方式 1
MOV TL1,#0FDH ;波特率 9600 的常數(shù)
MOV TH1,#0FDH
SETB TR1 ;開中斷
SETB ET1
SETB ES
SETB EA
系統(tǒng)“寫”時用如下指令:
MOVX @DPTR,A
MOVX @Ri, A
在中斷服務子程序中,為區(qū)別所接收的信號是聯(lián)絡信號還是字節(jié)數(shù)、是數(shù)據(jù)還是校驗和,需要設(shè)立不同的標志位如下:
FLAG0 BIT 00H ;接收聯(lián)絡信號標志位
FLAG1 BIT 01H ;接收字節(jié)數(shù)標志位
FLAG2 BIT 02H ;接收數(shù)據(jù)標志位
FLAG3 BIT 03H ;接收文件結(jié)束標志位
程序流程如圖3所示,其中R7為接收到的字節(jié)數(shù),接收的數(shù)據(jù)一定要存入片外RAM從0000H開始的單元中。當單片機復位后,把RAM當作程序存儲器時,PC是從0000H開始的。
圖3 單片機接收中斷服務子程序流程圖
幾點討論
(1) 系統(tǒng)中不需要單獨的仿真器電源,也不需要晶振電路。
(2) 下位機的片外存儲器在重復寫數(shù)時不用擦除,每次重新下載程序時,總是用覆蓋的方式。新下載的程序都有END為結(jié)束,就算新下載的程序比原來的短,也不會執(zhí)行多余的代碼。
(3) 在實際中,可以進一步改進電路,當文件下載完之后,通過串口備用的信號線產(chǎn)生控制信號來控制和復位,從而使得全過程均由上位機控制。
(4) 由于內(nèi)部結(jié)構(gòu)的限制,被仿真的產(chǎn)品不能擴展片外的程序存儲器,但由于片外可以擴展64KB的數(shù)據(jù)存儲器,文中只用了32KB,因此還可以擴展一定的外設(shè)。
(5) 被仿真產(chǎn)品的E(--)A(--)的接法有一定的限制,不能直接接地或接電源正極,實際中只要加上一個合適的限流電阻(如10K?)就可以了。實際上這種方案可以適用于任何可以外擴存儲器的單片機。
結(jié)束語
對以上的設(shè)計進行分析不難發(fā)現(xiàn),整個系統(tǒng)各個功能模塊技術(shù)非常成熟:在硬件方面,各子電路均有現(xiàn)存的電路套用,而且各個元器件的參數(shù)容易確定;在軟件方面,僅涉及到COM口的串行通信程序及上位機的界面程序。在實際的制作過程中,系統(tǒng)的元器件數(shù)目少且價格低廉,容易調(diào)試,成功率高,性能穩(wěn)定。
評論