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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 什么是單片機(jī)燒寫程序

          什么是單片機(jī)燒寫程序

          作者: 時間:2012-11-17 來源:網(wǎng)絡(luò) 收藏

          為什么叫燒寫呢?

          早期一般是將調(diào)試好的程序?qū)懭氲絉OM、EPROM中,這種操作就像刻制光盤一樣,實(shí)在高電壓方式下寫入,PROM是一次性寫入,存儲內(nèi)部發(fā)生變化,有些線路或元件就被燒斷,不可再恢復(fù),所以叫做燒寫,EPROM可以使用紫外線將原來寫入的內(nèi)容擦除,重新燒寫,目前大量采用EEPROM,是可以電擦寫的存儲器。

          啟動時會直接運(yùn)行這些芯片中的程序,完成既定的功能。

          所謂燒寫,其實(shí)就是對中的rom進(jìn)行擦寫?,F(xiàn)代工藝下,rom已經(jīng)可以進(jìn)行多次擦寫,但在早期,rom只能一次性設(shè)計(jì)好,例如早期的PLC,把二極管上的絲燒了后就永久編碼出1。而我們知道,單片機(jī)程序經(jīng)編譯連接后傳給機(jī)器便是機(jī)器語言,簡而言之就是一大堆1和0。在少些過程中,我們將燒不燒一大堆MOS管和BJT的絲或連不連上通道來表示這些1和0。

          燒寫的三種方式:

          1.把單片機(jī)當(dāng)做一個,早期的單片機(jī)都是如此。將單片機(jī)放在通用編程上編程時,就像給28C256這樣的ROM中寫程序的過程一樣。只是不同的單片機(jī)使用的端口,編程用的時序不一樣。

          2.像AT89S52或AVR單片機(jī)一樣,在單片機(jī)上有SPI接口,這時用專用的下載線將程序燒寫到單片機(jī)中。這時不同的是,單片機(jī)的CPU除了執(zhí)行單片機(jī)本身的指令之外,還能執(zhí)行對ROM進(jìn)行操作的特殊指令,如ROM擦除、燒寫和校驗(yàn)指令。在編程ROM時,下載線先通過傳輸這些指令給CPU執(zhí)行(擦除ROM、讀入數(shù)據(jù)、燒寫ROM、和校驗(yàn)ROM),這樣完成對單片機(jī)的ROM的燒寫。此外,現(xiàn)在普遍使用的JTAG仿真器也是這樣,單片機(jī)的CPU能執(zhí)行JTAG的特殊指令,完成對ROM的燒寫操作。

          3.引導(dǎo)程序,即單片機(jī)中已經(jīng)存在了一個。啟動單片機(jī)時首先運(yùn)行這程序,程序判斷端口狀態(tài),如果符合“要燒寫ROM”的狀態(tài)存在,就從某個端口(串口、SPI等等)讀取數(shù)據(jù),然后寫入到單片機(jī)的ROM中。如果沒有“要燒寫ROM”的狀態(tài),就轉(zhuǎn)到用戶的程序開始執(zhí)行。像AVR單片機(jī)的bootloader方式、STC的串口下載方式,還有其他單片機(jī)的串口編程等等都是這樣。

          單片機(jī)相關(guān)文章:單片機(jī)教程


          單片機(jī)相關(guān)文章:單片機(jī)視頻教程


          單片機(jī)相關(guān)文章:單片機(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); })();