作者mosquito520 ( )
看板ASM
标题Re: [问题] 89S51烧录原理
时间Fri Jan 15 01:03:40 2010
: 推 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
1F:推 hayden0828:我也有看到你的BLOG 01/15 02:23
2F:→ hayden0828:当初用你的programmer就很奇怪一直烧不过256Bytes 01/15 02:24
3F:→ hayden0828:BugDe超久的....後来就自己写一个了XD 01/15 02:25
5F:推 wuonline:GOOD!!! 01/15 15:39