2008年5月30日 星期五

Mahdi's Programmer v1.0

這是89S系列的燒錄程式

之前我都是用mosquito520寫的programmer

在用了一陣子之後
發覺m大的programmer寫入的速度稍嫌不足。

而在昨天竟然寫好程式下載後沒有辦法執行,
找了很久的BUG之後才發現原來m大的程式沒有辦法燒錄超過256Bytes的程式。
當下就想說自己也來寫一個應該也不錯。

##CONTINUE##

寫好後發現程式寫入速度增快很多,目前也沒發現什麼BUG。

目前能燒入4KByte的程式碼,剩下的等下次改版吧!!反正Keil只能compile 2k的程式
應該是夠用了。

現在可以燒錄64KBytes的程式碼了。

使用方法很簡單,只要照著程式上的步驟一步一步照著做就好了。

這是利用RS232的溝通腳位(DTR、RTS、CTS、DSR)進行SPI通訊傳輸,所以速度沒有其他ISP的MCU這麼快。

特色
1.介面簡潔!!
2.快速燒錄,page mode跟byte mode混合使用

燒錄到現在還沒有出錯過,所以我沒有意願要寫檢查程式碼的功能。

支援的IC有
89S51/98S52/89S53/89S1051/89S2051/89S4051

按這裡下載Mahdi's Programmer最新版本

這是陽春的版本,如果需要更強大的版本,請下載Mahdi's Digital Studio(快寫好了@@")。
提供記憶體檢視、指令程式化、HEX編輯、反編譯等功能。



線路圖可以參考
http://www.ourchip.com/NZILIAO/Other/89S_ISP/index.htm

線路圖目前是參考上面的網站,利用輸出產生脈波和資料串列,輸入讀取資料。
(這種方法不能用PL-2303來USB一下,速度不是普通的慢!!!)


改天再來個改版

目前有一個想法是CLK在實驗版上由震盪電路(LMC555...)產生,同時傳入MCU和傳回電腦,而電腦轉換資料往前半個相位,這樣就能少一隻輸出腳位而可以連接Reset,充分利用所有的腳位,不過工程太浩大,還要改硬體,目前沒有這個體力可以去研究,再等等吧.....


心得是

VB和Keil C左寫寫右寫寫的感覺還真不好受= ="

69 則留言:

  1. 你上面網址所參考的電路圖是屬於89S51/52的,在那個網站並沒有說能燒錄89S2051/4051/10518阿。
    是因為軟體的關係嗎,所以才能燒錄?
    那如果是這樣子的話,我要燒錄89S2051時的腳位位置應該是跟89S51一樣吧,還是說在燒錄時安裝的IC位置要換掉?
    電源部分目前沒有辦法吃USB電源嗎?那以這樣來說只能先吃直流電池的電囉~

    回覆刪除
  2. 我手邊沒有20pin的S51能測試,不過我想應該是可以的,不過要注意的是腳位的改變

    MOSI是17(P1.5,本來S51的接腳6),
    MISO是18(P1.6,S51的接腳7),
    SCK是19(P1.7,S51的接腳8),
    RST是1(S51的接腳9)

    如果程式有問題再跟我回報,我再作修正,謝謝!!

    電源可以使用USB電源喔,注意極性!!

    回覆刪除
  3. 你是說電路圖是對的,但是在於IC接腳部分要做修正囉?
    那以這樣來說的話,是改硬體囉?
    也就是說要能燒錄S2051及S51的話可能必須要做兩個IC座囉?
    你給的網址中有說到電路會不穩定,要加個LS型驅動器,應該不會影響到S2051吧...畢竟原本電路是燒錄S51......

    回覆刪除
  4. 直接做兩個IC座是比較方便省錢的方法...

    我也是有用74LS244來做穩定,S2051的電氣特性跟S51很相似,加上去並不會影響到S2051的...

    話說最近好多人在討論S2051,是買的到了嗎?我找了好多地方都找不到= =...

    回覆刪除
  5. 今天去找s系列的2051/1051/4051,結果全部摃龜......根本都沒有在賣。都是賣c系列的,真搞不懂,既然買不到還開什麼材料店阿!還說貨物齊全,根本是騙人的嘛!
    也蠻奇怪的,s系列的都買不到,不知道是不是ATMEL在搞鬼,而且又不太想用c系列的......真是夠麻煩的~看來還得再找找看囉~~~

    回覆刪除
  6. 應該是代理廠商的問題,想當初89S51兩三年前就出來了,也是最近才比較容易買到。
    如果真的已經出來的話前幾天買了一小包C2051的我應該會吐血吧...

    至於同時能燒錄S2051跟S51我已經有解決的辦法了,我改天再寫一篇吧!!

    回覆刪除
  7. 目前既然都買不到S2051/1051/4051,就只能先用C系列的了,你有關於C系列的燒錄器電路圖嗎?當然也包括燒錄程式囉...
    順便問一下,你撰寫的"燒錄軟體"是用哪種語言阿?實際上我一直很佩服能自己寫出一套軟體的人,真希望我也有機會能夠自己寫一套出來,那種感覺應該很棒吧!!!

    回覆刪除
  8. 哈哈,我正打算再寫一篇有關燒錄20pin C族的51...

    現在程式已經寫好了,不過介面要整理一下= =

    我是用VB寫的,VB裡面就有Com port的控制元件,寫起來是不難的,只要稍微研究一下DATASHEET就可以了...

    回覆刪除
  9. 天阿~~VB!!!!
    對我來說真是難如登天阿~連個九九乘法表都還寫不好...我看想學C語言也沒望了...
    我看我還是乖乖的玩組合語言好了...嗚嗚嗚
    T_T

    回覆刪除
  10. 會組語很厲害阿!!
    每次用Keil C 編譯之後的HEX檔都很肥...

    擔心哪一次程式寫太大就塞不進51裡面了= =

    回覆刪除
  11. 是喔~~但是你都能寫出燒錄程式...
    組合語言能寫嗎???
    我怎麼都沒聽別人提過...可能要學的太多了,希望能好好學變成我的另一個專長

    回覆刪除
  12. 您好
    您使用的這個燒錄器可以使用usb轉rs232的線嗎?
    燒錄成功率高嗎?
    不好意思 問題有點多
    謝謝

    回覆刪除
  13. 應該不行喔...
    這燒錄器是利用DTS等腳位進行燒錄的(本來是電腦跟數據機用來確認狀態的),並不是用標準的串列通訊

    我的USB轉換晶片是PL-2303X,燒錄起來很慢,在燒錄完成之前燒錄程式就會當掉了...
    用手插麵包版變換零壹還比較快= ="(開玩笑的...)

    如果真要用USB的話,則必須用到URAT轉SPI的元件才能燒錄

    回覆刪除
  14. 您好:
    小弟是8051的新手
    目前使用您的電路和程式後
    以能正常燒89s52
    想更進一步的學習
    不知您是否能開放或mail燒寫程式的source code呢?

    小弟的mail:dan_de_li_on@hotmail.com

    回覆刪除
  15. 沒問題!!

    但是因為原始碼很亂,所以我整理一下程式和相關資料,再寫一篇文章來說明好了。

    回覆刪除
  16. 真是太感謝了
    小弟就等著拜讀大作了 :D

    回覆刪除
  17. Opensource的版本我已經重製好了


    http://hayden0828.01.googlepages.com/S51pgmer_1.0os.rar

    壓縮檔裡面有S51和HEX檔案格式的資料,給你參考看看囉!

    有問題可以再問我!

    回覆刪除
  18. 好的
    小弟先來學習了
    有問題在請教大大了
    感謝

    回覆刪除
  19. 請問板主
    那個NZLIAO的網站電路已經連不上了,可否提供一下元件電阻電容的資料,另外如果買好一點的USB-RS232,完整支援RS232,是否還能工作呢?
    THANKS
    NIPS

    回覆刪除
  20. 抱歉我網誌設定的問題,所以沒有看到你的意見。

    規格如下所示
    C5~C8 10uf
    CX1CX2 20p

    USB-RS232這就沒有辦法提供你相關的資訊了,
    不過我覺得可以找高速(USB2.0)的產品來試試看。

    回覆刪除
  21. 沒有特別註明,選25V以上的就好了,

    不過25V以下的也不太容易找就是了XD

    回覆刪除
  22. 它話請將Reset重新置於高電壓.要怎解決?不是把它連接就可以嗎? 還有這個ISP是不是可以重燒的?

    回覆刪除
  23. 可以斷電重啟,或是將RESET接地再接到高電位。
    還有它是可以重燒的。

    回覆刪除
  24. 還是不行.可否幫我看看?
    http://i777.photobucket.com/albums/yy57/kelivn000/123.jpg

    回覆刪除
  25. 如果指的是這張電路圖的話

    石英震盪器的接腳應該錯了,還有MAX232第六與第二支腳接電容之後分別接到VCC與GND這部分要注意

    回覆刪除
  26. 是不是這樣接?
    http://i777.photobucket.com/albums/yy57/kelivn000/8052.jpg

    回覆刪除
  27. 看下來應該是沒有錯,不過要注意電路圖中的9Pin是公座,而你給的圖我沒有辦法判斷是公座還是母座@@"

    回覆刪除
  28. 你說麵包板中 9 pin ? 紅正 黑負.

    回覆刪除
  29. 我是指你銲的那個RS232插座,不知道是公的還是母的,設計圖是公座的

    回覆刪除
  30. 要連進電腦只能用母頭.

    回覆刪除
  31. 電腦出來是公座沒錯,8051這邊也要用公座,然後再用母對母的線連接,如果8051這邊是母座(用公對母的線),記得腳位要反轉。

    聖誕節快樂XDDD!!!

    回覆刪除
  32. 試試先. RS232頭腳位要反轉? 1-9 pin 左右反轉?

    回覆刪除
  33. 5<-->1
    4<-->2
    9<-->6
    8<-->7

    大概是這樣吧

    回覆刪除
  34. 喔! 原來我把6和9看錯,所以7和8插錯了.現在不需要轉公頭.好似也燒到了.
    http://i777.photobucket.com/albums/yy57/kelivn000/iSP.jpg
    如果 8051 9pin 連接著電阻和電容也能正常燒嗎?

    回覆刪除
  35. 這個才對
    http://i777.photobucket.com/albums/yy57/kelivn000/ISP.jpg
    I打錯了i =.="

    回覆刪除
  36. 可以把pin9接上RC重置電路(應該就是你說的電阻電容)

    當重置按鈕按著時就能燒錄。

    燒成功了嗎??最近我用這個電路燒的時候都要加Buffer(像74LS244)

    回覆刪除
  37. 要在9pin加上按鈕?
    是阿.燒了好似沒有反應.

    回覆刪除
  38. MAX232連接74LS244,是否9,11,12腳連到74LS244輸入,例2,4,6腳,再用輸出14,16,18連到8051. pin9 就沒有變?

    回覆刪除
  39. MISO (8051pin7) 注意是輸出不是輸入

    我是將74244腳位 16,17,18 接到8051的 8,7,6
    232的腳位 12,11,9 接到74244的 2,3,4

    http://sites.google.com/site/hayden0828/blog/20100110227.jpg

    這樣比較好接,也比較整齊。

    回覆刪除
  40. 8051 9pin綠色條線不用接正?

    回覆刪除
  41. 要接正,或者接上本來電路的Reset開關
    像下面這張圖的驅動晶片Pin9一樣的接法

    開關按著就可以燒錄,放開就執行。

    http://4.bp.blogspot.com/_YGCobP2xvzk/SQnQONh85gI/AAAAAAAAATE/zcCZY9-xCI0/s1600-h/002.jpg

    回覆刪除
  42. Hi~ 我是mosquito:D
    在PTT的ASM版看到你的推文,不過為了版面的和諧,
    還是跑來你這邊回好了XD

    也很高興當年我隨便亂寫的東西對於這個社會有小小的貢獻...
    (最起碼,讓你寫了這個更完整的版本出來造福大家XD)

    哪天我要用別的語言重寫的時候再來參考你的source,
    順便引用你的文章:D

    by the way,
    你的點子不錯~省掉一條輸出可以拿來控制RST,
    不過有個問題是兩端要怎麼同步= =?
    還有一招更髒的作法,
    拿PC端的TX來用,因為RS232的輸出,
    沒有辦法拿來當一般控制線對吧?
    當我們送資料給RS232的時候會轉成Serial輸出,
    這個時候就可以用個賤招,
    在完全沒有資料的時候,TX會維持在一個準位不變,
    (沒有記錯的話,要用示波器去看才能確認)
    接著咧~拿TX接到一個雙穩態電路的輸入,
    用輸出來控制RST,這樣就實現啦= =+
    (雙穩態的輸入要Delay超過RS232的資料寬度,
    這樣才能確保輸出的穩定)

    以上給你做個參考:)

    回覆刪除
  43. 您好, 目前正在試作POV LED所以需要用到89S52, 拜讀您的大作, 真是感激不盡, 正好可以DIY一個燒錄器自用, 有個小問題想請教您.
    現在手上只找的到MAXIM MAX232AESE這款IC, 規格書標示MAX232A匹配電容用0.1uF, 而MAX232標示為1.0uF, 但您的電路圖MAX232上卻用10uF(可能您有調適過), 這樣的話...我的MAX232A還是一樣用規格書標示的0.1uF嗎? 或者有其他建議呢?
    初學者, 非電子本行. 請多包涵^^"

    回覆刪除
  44. 綠色西瓜 您好
    感謝支持
    我使用的晶片是HIN232CP
    電容的部份我也是參考其他的網站來作配置
    應該使用1uf的電容就能工作

    MAX232A是屬於較高階的規格
    我的建議是使用規格書上標示的0.1uf可能比較好

    回覆刪除
  45. 最近才有空繼續弄,已經焊接完成,且用您提供的程式燒錄OK!感激不盡,不過弄起來的效果還是怪怪的,大概是我網路上找的資料有些問題。不知您是否曾以89S52來嘗試POV LED?

    回覆刪除
  46. 不如詳細描述一下發生了什麼狀況,程式的流程等等....

    不知道不能幫上忙
    不過可以互相切磋討論看看XD

    回覆刪除
  47. POV LED就是利用視覺暫留的方式,以亮點來呈現圖形或文字,市面上有一些玩具或時鐘就是利用這原理完成的!
    而我的電路圖是採用以下網址的資料:
    http://hi.baidu.com/52_diy/blog/item/2f2737f7a9c2ff24720eecff.html

    IC採用ATMEL 89S52
    K1是復位鍵
    K2是水銀開關,圖中有誤,應連接第12之腳(IT0)
    X'TAL為12MHZ

    程式碼是複製網頁上的,以keil轉換成HEX檔案,再用您設計的燒錄器寫入。
    不過...還是失敗了...殘念!不知您是否曾經弄過類似的東西?或者可以提供一些建議?感謝^^

    回覆刪除
  48. 請問keil C是哪一個版本的?如果是評估版的話會限制燒錄程式的記憶體位置
    而如果又使用到中斷,那就會沒有辦法正常執行程式。

    回覆刪除
  49. 我使用的是Keil C51 Version 8.02版,從下述網址下載來的:
    http://www.laogu.com/ds_2073.htm

    另外,使用的方式是參照這網址操作:
    http://tw.myblog.yahoo.com/likeyoufacejang/article?mid=847&prev=-2&next=-2&page=1

    使用你提供的燒錄程式,燒錄完成後會顯示"將RESET設置為低電位",意思是直接關閉電源移除即可,這樣對嗎?
    還有"而如果又使用到中斷,那就會沒有辦法正常執行程式"是什麼意思呢?
    新手問蠢問題,請多包涵!^^"

    回覆刪除
  50. 這keilC是評估版的,有程式大小2K及燒錄起始點的限制,

    8051外部中斷0沒記錯的話是在向量0x0002的位址,評估版是沒有辦法燒錄在那個位址的,這個要注意

    另外燒錄程式中將"RESET"設定在低電位是指程式已經執行完成,可以開始執行了
    關閉電源移除即可沒錯

    回覆刪除
  51. 原來keilC評估版還有這些限制,今天真是受教了!那我再找看看有無綠化版,屆時再試試,有好消息再跟您說,感謝^^

    回覆刪除
  52. 其他的版本可能就沒有辦法跟您討論了...

    有一種編譯器是針對8051的C程式進行編譯
    叫做SDCC(Small Device C Compiler)
    是免費的編譯程式,不過需要有支援的IDE配合
    設定有些繁雜
    而且跟KeilC的撰寫習慣有一點差別
    可以試試看XD

    回覆刪除
  53. 版大你好~請問一下上面所提供的RS232燒錄器的電路圖所接的電源是幾V的?是否能使用USB的5V來接呢?
    MAX232的datasheet上所寫的VS+是接+8.5V的電壓,若我用USB的5V接是否會有問題?
    另外我想加上兩顆LED分別是電源指示燈,另一是燒錄時的指示燈(燒錄時亮燈,閒置時熄燈)電路上該如何接?

    回覆刪除
  54. 可以使用USB的電源沒有問題

    電源指示燈只要用LED串聯電阻從正接至負極

    燒錄指示燈可以用同樣的方法正及接在P1.7就可以囉

    回覆刪除
  55. 版大你好,我照的你的電路圖製作,可是燒錄程式會一直停在"將RESET至於高電位",將RESET接腳從低電位換到高電位也沒用,不知道是何原因?
    http://img2.pict.com/61/ed/33/4446399/0/dsc0309.jpg

    回覆刪除
  56. 要使用公座的DB9接頭來接喔

    如果是母座的話,腳位需要左右反轉

    回覆刪除
  57. 謝謝版大的回答,我是這樣接的,這是母頭的背面,如果沒接錯的話還有什麼可能因素呢?
    http://img2.pict.com/85/d7/da/4446516/0/dsc0309.jpg

    回覆刪除
  58. M大你好
    我覺得你設計的燒錄器很棒,我想要轉載可以嗎?
    大概是長這樣子http://163.18.1.12/~u9552018/UART_S5X/UART_S5X.htm

    謝謝!

    回覆刪除
  59. M大你好! 請問可以提供HEX編輯、燒錄軟體給我嗎?

    cheer790127@yahoo.com.tw

    拜託 感謝!!

    回覆刪除
  60. 你好~我依照你網頁的電路做完了燒錄器~
    不過照著軟體步驟到了燒錄時都跑出RESET請接到高電位?
    我板子用母座接頭的反轉是什麼意思?聽不太懂
    還有可以給我燒錄程式hex嗎?我要測試用的~
    fe790804@yahoo.com.tw

    回覆刪除
  61. [IMG]http://i.imgur.com/fS4Jy.jpg[/IMG]

    前兩天在公司要燒89S52,剛好看到板大的燒錄器,不過手邊只有PL2303,沒有MAX232可以用。比對了一下線路,把相對應的腳位接起來試用,目前動作都還正常喔!!

    如果可以的話,想改寫一下板大的燒錄軟體,想加點小東西,如果有改好了再請板大指教一下

    回覆刪除
  62. 當然可以修改囉

    到時再切磋一下吧

    回覆刪除
  63. Mahdi
    您好﹗
    看到貴網頁之大作及熱烈討論後,讓我不禁躍躍欲試。
    很慚愧我是五年級前段生,對8051沒有學好,故想請教
    如下
    1).對版主所PO示之燒錄器線路圖,只有DB9、MAX323、
    8051(但並沒有ic 74LS244);可否有完整電路圖,能提供?
    2).請教版主對 Jan 14,2010 10:42 AM,所回應之文。
    是指Pin31、9、40腳,都是接在Vcc同一點嗎?

    以上提問 敬請賜教 實感德便

    祝 順遂

    回覆刪除
  64. 您好

    電路圖參考文章中的圖應該可以使用
    第二個問題是沒錯的都接VCC就可以了

    回覆刪除
  65. 您好

    我是一個大學生拜讀了大大的文章,因為專題的需要用到s2051
    燒錄 是否可以請大大可以分享 s2051燒8051的程式碼.ASM的
    因為小弟看不懂.HEX的內容麻煩您了!! 希望您有留著(保佑)。
    如果可以請MAIL:oversoul60818@gmail.com 小弟拜託了!!

    回覆刪除
    回覆
    1. 我程式的部份是使用C語言來寫的

      所以可能沒有辦法給你組語的部分喔

      刪除
  66. 板大~~妳好!!!
    我想請問說妳的燒錄程式~~我抓取下來時都匯出錯!!!
    請問有新版本嗎??可以提供我抓取嗎?
    謝謝!!

    回覆刪除

Related Posts Plugin for WordPress, Blogger...