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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 51單片機開發(fā)主要方法

          51單片機開發(fā)主要方法

          作者: 時間:2016-11-23 來源:網(wǎng)絡 收藏
          ISD51 (在線調(diào)試器)為8051編程用戶提供了新的監(jiān)控調(diào)試技術(shù)。將 ISD51 進行配置后與您的用戶程序連接起來用戶就可以通過8051的一個串口直接在芯片上調(diào)試程序了。ISD51的軟件和硬件可以工作于最小模式。它可以運行于帶有外部或內(nèi)部程序空間的系統(tǒng)并且不要求增加像馮.諾伊曼架構(gòu)的數(shù)據(jù)存儲器等的特殊硬件部件。ISD51 可以工作在像 Philips LPC 系列之類的微型單片機上并且可以完全訪問其 CODE 和 XDATA 地址空間。
          ISD51硬件需求,一個8051兼容串口, 500-700字節(jié)的程序代碼在相應數(shù)量的特殊積存器中運行,6字節(jié)堆棧空間,1字節(jié)IDATA RAM,為每個軟件斷點預留2字節(jié)IDATA RAM 。
          ISD51在你的8051系統(tǒng)里增加了一個串口中斷函數(shù) (ISD51中斷)。當ISD51連接到 uVision2 調(diào)試器時, 8051輸入ISD51的中斷函數(shù)。只要到程序運行一被停止, 8051就只運行ISD51中斷服務程序當uVision2調(diào)試器發(fā)出一個“Go”的指令, 8051就脫離ISD51中斷函數(shù)并且運行用戶程序。如果沒有設(shè)置任何斷點或者如果所有斷點設(shè)置為硬件斷點, 8051 就會全速運行用戶程序。如果設(shè)置了軟件斷點, 8051在相應8051 CPU指令后面輸入ISD51 中斷函數(shù)。ISD51 中斷服務程序會檢查是否8051程序到了一個斷點地址,如果是,開始和 uVision2 調(diào)試器通訊。所以, 當使用軟件斷點時,8051 的程序運行速度會變得相當慢(相差100倍左右)。一旦“ISD51 系統(tǒng)在線調(diào)試器”被作為中斷函數(shù)實現(xiàn),其它和 ISD51 系統(tǒng)的中斷優(yōu)先級一樣,甚至比ISD51優(yōu)先級更高的中斷函數(shù)中就不能再設(shè)置斷點或者單步執(zhí)行了。默認狀態(tài)下, ISD51 中斷函數(shù)使用的中斷優(yōu)先等級為0級。uVision2 調(diào)試器發(fā)送一個 0xA5 的字符到 ISD51 的中斷函數(shù)中,使用戶程序停止并且開始與調(diào)試器通訊, 當 uVision2 調(diào)試器收到請求信號后,8051 就會開始執(zhí)行程序。
          當然光是有ISD51還不夠,還要選擇合適的硬件整個系統(tǒng)才能有效的運行起來。ISD51的調(diào)試過程是這樣的,首先將帶有ISD51接口函數(shù)的用戶代碼燒寫到MCU的FLASH中,然后打開Keil C完成一些必要的設(shè)置后,就可以運行ISD51進行代碼的調(diào)試了。根據(jù)以上分析,要實現(xiàn)代碼的調(diào)試,就要求反復擦寫單片機,而象89Sxx、STC系列的單片機都具有ISP功能,在沒有編程器的情況細很容易實現(xiàn)擦寫。

          為了調(diào)試方便自己寫了一個ISD51的模板程序,支持C編程,無需仿真器,只要在主函數(shù)中添加用戶代碼,就可以完成單步、斷點等調(diào)試功能。

          本文引用地址:http://www.ex-cimer.com/article/201611/320539.htm


          關(guān)鍵詞: 51單片機主要方

          評論


          技術(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); })();