Re: [問題] 89S51燒錄原理

看板ASM (組合語言)作者 ( )時間15年前 (2010/01/15 01:03), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串3/3 (看更多)
: 推 sorkayi:可以先去看看8051的 spec 就知道程式大概怎麼寫的 01/06 10:31 : 推 hayden0828:RS232的技巧比較深,通常會有一顆UART轉成SPI的單晶片 01/07 00:56 : → hayden0828:或是用RS232的交握腳位(DTR.DSR.RTS.CTS)來做溝通 01/07 00:58 2006年的時候我有用VB寫過一個, 89S51 Programer v0.1 by Serial Port http://blog.mosquito.tk/2006/07/2006070589s51-programer-v01-by-serial.html 經過了不算短的時間, blog從PTT2搬到自己架的BLOG,現在又搬到BLOGGER, 物換星移,所以有些問題XD 當初寫好之後測試就有發現一個問題, 寫入較大的HEX FILE會有資料錯誤的狀況, 小於1k的HEX FILE都正常, 當初以為是我操作89S51的模式錯誤, 他在操作時有分為byte mode and page mode, 我只用BYTE MODE去操作。 另外一個不算問題的問題, 當初用VB寫,很久沒接觸的情況之下, 拿起書來就寫,非常無腦的寫法, 沒有寫Thread,就很暴力的直接寫入, 所以在Read或Write時會有吃光CPU的缺點XDDDD 不過後來有閒想把他整理好還是用別的語言重寫的時候咧, 發現我當初自以為包好的source原來沒包到最重要的code檔XDDDD 所以只剩下binary可以用。 以上是屁話..... 前一陣子我打算用python重寫這支程式(要找工作了,有東西總是好看一點) 重新回頭看Intel HEX Format,發現當初會有超過1k就有錯誤的原因, Intel Hex Format有分 8bits , 16bits , 32bits三種型態, (記得當初我看的大陸文章完全沒提這回事= =) 所以當初對晶片的操作都是OK的,只是我的格式讀錯了XDDD 當初因為我的NB上沒有Printer Port的緣故,找到的solution是大陸寫的, 簡體的亂碼很討厭,所以才打算自己動手寫, 當初採用的就是透過RS232的控制線來對S51直接做燒錄, 當初還有用MAX232去轉為TTL準位,不過如果要的話,這部份電路可以更簡化。 實際上S51的燒錄只需要3條線, 網路上走Printer Port的方法, 大多是同時利用其他線做其他控制, 像是燒錄時RST要拉到高準位,或是用LED表示讀取寫入狀態等, 我用RS232來處理的時候,RST是手動控制= =+ 如果真想寫的話, 花點時間看看intel hex format跟89s51的datasheet, 其實不難說實在~ (現在找到工作了,等哪天有閒在來重寫, 用python是因為可以控制硬體又跨平台完全不用改CODE的語言 我只知道c、python跟java,覺得java太肥大, 用C寫,在Win底下要搭配Cygwin才能做到不改code, 所以就採用python...XD) -- ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ 國 立 聯 合 大 學 (理工/電資/管理/技術/客家)院所 招生中 National United University ─────────────────────────────────── 首頁 http://www.nuu.edu.tw BBS telnet://uun.twbbs.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.33.193

01/15 02:23, , 1F
我也有看到你的BLOG
01/15 02:23, 1F

01/15 02:24, , 2F
當初用你的programmer就很奇怪一直燒不過256Bytes
01/15 02:24, 2F

01/15 02:25, , 3F
BugDe超久的....後來就自己寫一個了XD
01/15 02:25, 3F

01/15 02:26, , 4F
http://tinyurl.com/ycyw8am 電路都是一樣的
01/15 02:26, 4F

01/15 15:39, , 5F
GOOD!!!
01/15 15:39, 5F
文章代碼(AID): #1BJqvlKw (ASM)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #1BJqvlKw (ASM)