色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

          單片機課程設計-ATMEL51系列單片機編程器

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

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

          本文引用地址:http://cafeforensic.com/article/201612/324271.htm


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


          STEP 2. HEX文件的本來面目以及怎樣將HEX文件轉換成機器碼

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


          上一頁 1 2 3 下一頁

          評論


          技術專區(qū)

          關閉