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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機(jī)課程設(shè)計-ATMEL51系列單片機(jī)編程器

          單片機(jī)課程設(shè)計-ATMEL51系列單片機(jī)編程器

          作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
          用單片設(shè)計過很多東西,可以說把AT單片機(jī)(包括AVR單片機(jī))的所有外設(shè)資源都使用過了,所以在尋思著要設(shè)計一個什么樣的東東??

          有次去面試,我對面試官說我設(shè)計過一塊開發(fā)板,然后那面試官直接問了個核心問題:這個編程器的固件是你自己寫的嗎?一下子就問到了痛處。是的,編程器固件不是自己寫的,那為什么不自己設(shè)計一個呢? 我說的自己設(shè)計是包括硬件電路、單片機(jī)程序以及電腦端界面等等所有東西全部自己DIY。當(dāng)一個真正的DIYer。所以我動手了,用了幾天幾夜時間弄了一個可以支持兩種芯片(AT89S51 AT89S52)
          的基于ISP下載的編程器
          首先要說的是,要設(shè)計個編程器, 這方面的資料在網(wǎng)上基本是找不到的,估計是大家不想開源(open source code)...所以必須自己按照某一芯片的官方數(shù)據(jù)手冊慢慢搞懂它的下載協(xié)議,然后寫成固件。

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


          STEP 1. 研究數(shù)據(jù)手冊
          首先找了一份S52芯片的中文數(shù)據(jù)手冊,一看傻了眼,翻譯得很垃圾,垃圾還不要緊,最重要是里面把關(guān)于FLASH編程的章節(jié)直接忽略掉了。。想看都沒得看。沒辦法,那就直接研究英文數(shù)據(jù)手冊算了,用了一天多時間認(rèn)真把數(shù)據(jù)手冊看懂。。這里本人一直有個誤區(qū),從大一的時候開始就以為S52會有256B的用戶RAM,比S51高級,其實不是,S52也只有128B內(nèi)存,F(xiàn)LASH容量比S51多4KB也就是8KB。。謹(jǐn)記謹(jǐn)記。。或者你可以選擇接入外部RAM,不過這會浪費(fèi)掉你至少16個IO口用來做數(shù)據(jù)及地址總線,而且還要加外一個地址鎖存器用來復(fù)用本來就不夠用的IO口,而匯編指令中的MOVX就是用來操作外部RAM的。OK數(shù)據(jù)手冊研究完畢(還算幸運(yùn)的,因為S52的數(shù)據(jù)手冊只有30多頁)。


          STEP 2. HEX文件的本來面目以及怎樣將HEX文件轉(zhuǎn)換成機(jī)器碼

          之前我一直以為HEX文件就像鏡像文件一樣對應(yīng)著單片機(jī)FLASH的每一個數(shù)據(jù),然后燒錄軟件LOAD程序的時候是直接將HEX文件里面的數(shù)據(jù)一個一個輸入到單片機(jī)的FLASH中,又來了個誤區(qū),事實情況卻不是這樣的。正解是:HEX文件是一種用ASCII編碼的文件,就是說里面的數(shù)據(jù)都是字符來的,比如說里面記錄了一個地址為0X00EF的話,如果按照二進(jìn)制格式應(yīng)該是:0000 0000 1110 1111 這樣記錄的,但HEX采用了ASCII字符編碼,直接在里面寫成:‘0’ ‘0’ ‘E’ ‘F’ (這是ASCII字符?。。。??;谶@個原理,要想正確下載程序就必須寫一個HEX->機(jī)器碼轉(zhuǎn)換算法,將HEX文件轉(zhuǎn)換成機(jī)器碼。用了幾個小時就把算法搞定。具體實現(xiàn)過程就不說了,想了解的可以直接找我聊啦,總之最后結(jié)果就是我實現(xiàn)了一個 HEX_Translate(char *Input,char *Output)函數(shù)搞定


          上一頁 1 2 3 下一頁

          評論


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