新聞中心

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

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

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

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

        本文引用地址:http://www.104case.com/article/201612/324271.htm


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


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

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


        上一頁 1 2 3 下一頁

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 荔浦县| 六盘水市| 溧水县| 吴川市| 兴国县| 漾濞| 平度市| 德清县| 定陶县| 芷江| 江城| 台东市| 吐鲁番市| 张北县| 临漳县| 通化市| 敦化市| 安丘市| 慈溪市| 巨鹿县| 新疆| 阜新| 龙胜| 威远县| 安远县| 罗城| 平远县| 孝义市| 西和县| 长宁县| 张家港市| 宜兰县| 彭泽县| 富宁县| 新昌县| 潜江市| 福贡县| 北京市| 宁陵县| 普格县| 台南市|