<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 80C196單片機(jī)仿真軟件的設(shè)計(jì)與實(shí)現(xiàn)

          80C196單片機(jī)仿真軟件的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2013-09-11 來源:網(wǎng)絡(luò) 收藏


            CRunCode類封裝所有的操作模塊,仿真中的指令執(zhí)行部件,完成單步運(yùn)行、一次運(yùn)行和連續(xù)運(yùn)行3種指令的執(zhí)行方式。C196Chip類仿真整個(gè)模塊,除了指令執(zhí)行部件外,還包括各種外設(shè)模塊,完成中斷、串口等功能。對外提供統(tǒng)一的控制接口,完成的初始化、啟停、訪問存儲器、訪問外設(shè)、訪問特殊功能寄存器。

          CPU模塊中各個(gè)類的描述及其繼承關(guān)系。

          2.3指令的仿真運(yùn)行

            指令系統(tǒng)中有104種指令,按照操作碼和功能的不同,將指令劃分為13類,每個(gè)類模塊實(shí)現(xiàn)1類指令的功能。

            CRunCode類封裝了13類指令的各個(gè)模塊,提供了統(tǒng)一的接口,以地址寄存器值作為輸入輸出。進(jìn)入CRuncode-類的為地址寄存器值,根據(jù)此值取得指令,依指令操作碼的不同進(jìn)入各個(gè)操作模塊。各個(gè)操作模塊完成指令的功能,并計(jì)算出下一條指令的地址值返回給CRunCode-類,CRunCode類再將此值寫入CPU的地址寄存器中。其執(zhí)行過程如圖3所示。

            對于每一條指令的仿真,包括操作過程,操作結(jié)果與程序狀態(tài)字的改變力求做到與指令集相一致。以兩個(gè)操作數(shù)的加法指令A(yù)DD Al,BL為例,其實(shí)現(xiàn)過程如下:


          2.4編譯模塊設(shè)計(jì)

            編譯模塊將用戶編寫的源程序編譯成CPU能識別的二進(jìn)制機(jī)器語言的形式。為了降低系統(tǒng)的設(shè)計(jì)難度,采用了已經(jīng)具有的外部程序?qū)υ闯绦蜻M(jìn)行處理。編譯模塊讀取由外部程序生成的列表文件,將程序信息轉(zhuǎn)化為本系統(tǒng)能處理的數(shù)據(jù)結(jié)構(gòu),并將生成的二進(jìn)制操作碼裝入CPU的存儲器。

          2.5程序仿真與控制的實(shí)現(xiàn)

            程序運(yùn)行有3種方式,即單步運(yùn)行,運(yùn)行一次和連續(xù)運(yùn)行。程序的主要控制功能有復(fù)位、設(shè)置/清除中斷點(diǎn)、查看寄存器、查看程序狀態(tài)字等。編譯模塊對源程序進(jìn)行預(yù)處理,將源程序轉(zhuǎn)化為二進(jìn)制操作碼。CPU模塊將操作碼裝入存儲器成功后,初始化CPU的各種信號,并將程序地址寄存器的值置Ox2080,這是80C196匯編程序的起始地址。然后CPU模塊依據(jù)地址寄存器的值取操作碼,按照取址、譯碼、執(zhí)行的過程執(zhí)行每一條指令。在一條指令執(zhí)行完畢后,執(zhí)行中斷處理,刷新顯示結(jié)果以及檢查中斷點(diǎn)等操作。

          3軟件運(yùn)行結(jié)果

            本的關(guān)鍵技術(shù)在于CPU模塊的設(shè)計(jì)。這個(gè)模塊要完成80C196所有指令的功能,要分配存儲器資源,要控制軟件仿真過程中程序狀態(tài)字、特殊功能寄存器以及其他CPU信號的變化。采用面向?qū)ο缶幊谭椒ê头謱釉O(shè)計(jì)的思路,通過對指令的合理劃分,降低了指令系統(tǒng)的復(fù)雜度,通過對實(shí)際器件的抽象與封裝,實(shí)現(xiàn)了與實(shí)際硬件器件的功能等價(jià),使得仿真結(jié)果與真實(shí)執(zhí)行情況相一致。

            至此,該的基本功能已經(jīng)實(shí)現(xiàn),為仿真平臺的設(shè)計(jì)打下了基礎(chǔ),接下來的工作是以為基礎(chǔ),完成仿真平臺的開發(fā)與調(diào)試,主要包括各種外設(shè)的實(shí)現(xiàn),測試用例生成工具以及驅(qū)動(dòng)測試的外部激勵(lì)產(chǎn)生模塊,以此搭建一個(gè)具有良好人機(jī)界面的測試環(huán)境,提高應(yīng)用軟件的質(zhì)量與可靠性。按照軟件要求計(jì)劃采用dll文件的方式將各個(gè)模塊生成庫文件,并在仿真軟件中預(yù)留各個(gè)庫文件的接口,在程序需要時(shí)調(diào)用相應(yīng)的庫文件即可,簡化了設(shè)計(jì)的難度,同時(shí)增加了仿真平臺的靈活性和通用型。

          4結(jié) 語

            本文提出一種采用VC++面向?qū)ο蠹夹g(shù)設(shè)計(jì)80C196單片機(jī)應(yīng)用軟件仿真環(huán)境的方法。據(jù)此方法研制的仿真軟件可仿真80C196指令集的全部指令,并可對80C196單片機(jī)嵌入式控制軟件進(jìn)行仿真與運(yùn)行。該項(xiàng)技術(shù)為全軟件測試平臺的開發(fā)奠定了基礎(chǔ),也可供相關(guān)領(lǐng)域的應(yīng)用參考。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 80C196 單片機(jī) 仿真軟件

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();