|
|
|
| 51单片机 -> 分类清单 -> 用89S51制作简易并行编程器ATmega16(救活ATmega16) | 跳转至: | 未登录 |
| ↓↓ 用89S51制作简易并行编程器ATmega16(救活ATmega16) | 回复数:67,点击数:33297 |
|
抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了47个回复。你需要 点击此处 才能查看全部内容。 对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。 如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。 ↓↓↓↓↓↓↓↓↓↓↓↓ |
|
【楼主位】 andy 红日 积分:864 派别: 等级:------ 来自: |
;***********************ATmega16(L)简易并行编程器**********************/
;说明: ; 用于没有烧写ATmega16并行编程器的朋友,初用ATmega16的工程师在串行 ;编程时写错熔丝位,及加密位,造成不能再应用串行编程,构成不便,没并行 ;编程将无法再使用,做了一个简易的并行编程器(很简单,用万能板搭焊即可), ;将的芯片加密位及熔丝恢复出厂默认值及恢复串行在线编程功能(ISP)。 ;********************************************************************** ;使用说明: ; 本电路有1按键(key),执行1次将芯片加密位擦除,都要按下按键1秒钟才 ;执行操作,可将at89S51的P3.1(TXD)连接1只NPN三极管(9014)、2支电阻作为 ;P3.1(TXD)输出5V反相器,连接PC的RS-232接收端(RXD),就可通过在PC执行1 ;个串口调试软件SSCOM V3.0,设置波特率(2400、8、1、N),查看到之前的加 ;密位及熔丝高低字节内容,以及执行了加密位擦除之后的加密位及熔丝高低字 ;节内容(FF 99 E1)。 ;////////////////////////////////////////////////////////////// ;主控at89S51,晶振6M ;P0口编程数据输入输出 ,;P2编程控制 ;/*******************AT89C51与ATmega16(L)各脚连接********************/ ;P0.0~7 <-->PB.0~PB.7 ;P0.0~7 要连接4.7K x 8 上拉电阻到VCC (要注意:没有上拉电阻本电路是不能工作) ;******************************************************************** ;P2.0-PD7(PAGEL) ;P2.1-PD6(XA1) ;P2.2-PD5(XA0) ;P2.3-PD4(BS1) ;P2.4-PD3(_WR) ;P2.5-PD2(_OE) ;P2.6-PD1(RDY/BSY) ;P2.7-(XTAL1) ;P1.0-PA0(BS2) ;----------------------------------------- ;P1.1---LED 指示运行状态 (p1.1=0时 LED 亮) ;P1.2---控制reset脚的12v电压(p1.2=1时输出12v,0时没有电压输出) ;P1.3---连接1个按键(key)的1接点,按键另1接点连接到GND ;//////////////////////////////////////////////////////////////////// ;若不用不清楚请参考datesheet; ;制作成功后你就狂烧熔丝和加密位吧!!!!!!!!!!!!!!!!!! PAGEL BIT P2.0 ;PD7 flash和E2PROM页装入 XA1 BIT P2.1 ;PD6 XTAL编程动作位1 XA0 BIT P2.2 ;PD5 XTAL编程动作位0 BS1 BIT P2.3 ;PD4 字节选择1(0:选低字节,1:选高字节) _WR BIT P2.4 ;PD3 写脉冲 _OE BIT P2.5 ;PD2 输出允许(低有效) RDY_BSY BIT P2.6 ;PD1 0:器件正在编程,1:器件就绪等待命令 XTAL1 BIT P2.7 ;晶振输入端 ;----------------------------------------------------- BS2 BIT P1.0 ;PA0 字节选择2(0:选低字节,1:选高字节) ;----------------------------------------------------- LAMP BIT P1.1 ;编程指示灯 _RST_12V BIT P1.2 ;复位端12V电压 KEY BIT P1.3 ;执行按键 CR EQU 0DH ;CARRIAGE RETURN LF EQU 0AH ;LINE FEED ;**************************************************************************** ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV SP,#70H MOV P0,#0FFH ;初始化P0,P1,P2 MOV P1,#11111000B ;P1.7~4=1,KEY=1,_RST_12V=0,LED=0V.BS2=0 MOV P2,#01110000B ;XTAL1=0,RDY_BSY=1,_OE=1,_WR =1,(BS1,XA0,XA1,PAGEL=0) ACALL INT_SIO ;初始化SIO LOOP: CPL LAMP ACALL DELAY_1S JB KEY,LOOP JNB KEY,$ SETB LAMP ACALL PROG_ST ;进入并行编程模式 ACALL READ_FUSE ;读之前熔丝字节及经过TXD将内容发送到PC RS-232 ACALL CHIP_ERASE ;擦除加密位,存储器 ACALL WRITE_FUSE ;写熔丝字节 ACALL READ_FUSE ;读之后熔丝字节及经过TXD将内容发送到PC RS-232 CLR _RST_12V CLR LAMP ACALL SIO_CR_LF AJMP LOOP ;********************************** ;进入并行编程模式子程序 ;********************************** PROG_ST: MOV R1,#6 PLS: SETB XTAL1 ;产生6个的XTAL1时钟脉冲触发 CLR XTAL1 DJNZ R1,PLS ANL P2,#01110000B ;PAGEL,XTAL1,XA1,XA0,BS1==0 NOP ;延时大于100ns SETB _RST_12V ;RST加12v电压 NOP ;延时大于100ns RET ;********************************** ;擦除加密位、存储器子程序 ;*********************************** CHIP_ERASE: CLR LAMP ;指示正忙 SETB XA1 ;设置XA1,XA0="10"允许装入命令 CLR XA0 CLR BS1 CLR BS2 MOV P0,#80H ;送出芯片擦除命令 SETB XTAL1 CLR XTAL1 ;输入正脉冲将命令装入芯片 NOP SETB _WR CLR _WR SETB _WR ;输入一个负脉冲,开始执行命令擦除芯片 JB RDY_BSY,$ ;等待RDY/BSY变高,表示擦除完成 JNB RDY_BSY,$ ACALL DELAY_106US SETB LAMP ;指示空闲 ACALL DELAY_106US RET ;///////////////写熔丝高低字节子程序//////////////// WRITE_FUSE: CLR LAMP ;指示正忙 SETB XA1 ;设置XA1,XA0="10"允许装入命令 CLR XA0 CLR BS1 CLR BS2 MOV P0,#40H ;送出写熔丝命令 SETB XTAL1 CLR XTAL1 ;XTAL1输入正脉冲将命令装入芯片 CLR XA1 ;设置XA1,XA0="01"允许装入数据 SETB XA0 NOP CLR BS1 ;BS1,BS2="00"表示熔丝低字节“10”表示高字节 CLR BS2 MOV P0,#0E1H ;DOBLEVEL=1,BODEN=1,SUT1=1,SUT1=0,SKSEL3=0, ;SKSEL2=0,SKSEL1=0,SKSEL0=1(工厂设定值) SETB XTAL1 CLR XTAL1 ;XTAL1输入正脉冲数据装入芯片 SETB _WR CLR _WR SETB _WR ;_WR输入一个负脉冲,开始执行命令 JB RDY_BSY,$ ;等待RDY/BSY变高,表示完成 JNB RDY_BSY,$ ACALL DELAY_106US ;/*********写高字节**********/ MOV P0,#99H ;'99'为出厂设定值 SETB XTAL1 CLR XTAL1 ;XTAL1输入正脉冲数据装入芯片 SETB BS1 SETB _WR CLR _WR SETB _WR ;_WR输入一个负脉冲,开始执行命令 JB RDY_BSY,$ ;等待RDY/BSY变高,表示完成 JNB RDY_BSY,$ CLR BS1 ACALL DELAY_106US SETB LAMP ;指示空闲 RET ;/**********读熔丝及加密位************/ READ_FUSE: CLR LAMP ;指示正忙 SETB XA1 ;设置XA1,XA0="10"允许装入命令 CLR XA0 CLR BS1 CLR BS2 MOV P0,#04H ;送出读熔丝和锁定位命令 CLR XTAL1 SETB XTAL1 CLR XTAL1 ;XTAL1输入正脉冲将命令装入芯片 NOP CLR _OE CLR BS2 ;读熔丝低字节 CLR BS1 MOV P0,#0FFH MOV R7,P0 SETB BS2 ;读熔丝高字节 SETB BS1 MOV R6,P0 CLR BS2 ;读加密位 MOV R5,P0 SETB _OE SETB LAMP ACALL SIO_TO_PC RET ;------------------ DELAY_1S: MOV R7,#1 DELAY11: MOV R6,#0FFH DELAY12: MOV R5,#0FFH DJNZ R5,$ DJNZ R6,DELAY12 DJNZ R7,DELAY11 RET ;------------------- DELAY_106US: MOV R5,#18H DJNZ R5,$ RET ;************************************************************ ;将R5 R6 R7 的内容经 TXD 发送到 PC 子程序 ;************************************************************* SIO_TO_PC: MOV A,R5 ;加密锁定字节 SWAP A ACALL HEX_ASC ACALL SIO_SEND_OUT ;经TXD发送加密锁定字节的高4BIT MOV A,R5 ACALL HEX_ASC ACALL SIO_SEND_OUT ;经TXD发送加密锁定字节的低4BIT MOV A,#' ' ACALL SIO_SEND_OUT ;经TXD发送 空格 MOV A,R6 ;熔丝高字节 SWAP A ACALL HEX_ASC ACALL SIO_SEND_OUT ;经TXD发送熔丝高字节的高4BIT MOV A,R6 ACALL HEX_ASC ACALL SIO_SEND_OUT ;经TXD发送熔丝高字节的低4BIT MOV A,R7 ;熔丝低字节 SWAP A ACALL HEX_ASC ACALL SIO_SEND_OUT ;经TXD发送熔丝低字节的高4BIT MOV A,R7 ACALL HEX_ASC ACALL SIO_SEND_OUT ;经TXD发送熔丝低字节的低4BIT MOV A,#CR ACALL SIO_SEND_OUT MOV A,#LF ACALL SIO_SEND_OUT RET ;***************************************** ;初始化SIO 波特率 2400 (晶振6MHz) ;***************************************** INT_SIO: ORL PCON,#10000000B ;SMOD=1 T1 MOV TMOD,#00100000B MOV TH1,#256-13 ;设置波特率为2400 MOV TL1,#256-13 ;6.MHZ石英/12/16/13=2400 SETB TR1 ;启动定时器T1 TR1=1 ORL SCON,#01000000B ;SET SIO MODE 1 ;****************************************** SIO_CR_LF: MOV A,#CR ACALL SIO_SEND_OUT MOV A,#LF ACALL SIO_SEND_OUT RET ;***************************************** ;* SEND ONE DATA SUBROUTINE * ;* USE A FOR SEND DATA * ;***************************************** SIO_SEND_OUT: MOV SBUF,A JNB TI,$ CLR TI RET ;***************************************** ;* INVERT HEX TO ASCII SUBROUTINE * ;* INPUT HEX LOW 4BIT TO A * ;* OUTPUT ASCII FORM A * ;***************************************** HEX_ASC: ANL A,#00001111B INC A MOVC A,@A+PC RET DB '0123456789ABCDEF' END |
||
|
|
|
|
【1楼】 armok 阿莫 积分:48830 派别: 等级:------ 来自:ourDEV.cn 站长 |
要用到89S51?
有没有AVR芯片及C组成的并行编程器的资料? 如果有,做一个也不错啊。 |
||
|
__________________________ There's something good in this world. And it's worth fighting for …… |
|||
|
|
|
|
【2楼】 andy 红日 积分:864 派别: 等级:------ 来自: |
可以用ATmega8写C组成的并行编程器对应ATmega8/16,要自己动手写。 | ||
|
|
|
|
【3楼】 hyping 积分:37 派别: 等级:------ 来自: |
有电路图否 | ||
|
|
|
|
【4楼】 andy 红日 积分:864 派别: 等级:------ 来自: |
用这个电路,AVR全系列芯片都可以并行编程,只要将MEGA16的18条编程线和STK500_M8监控连接就可以了,查看MEGA16中文PDF手册249页。
点击此处打开armok0110742.pdf 点击此处下载armok0110722.rar AVR全系列芯片并行编程实物图 http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=66222&bbs_page_no=1&sub_kind_id=1260&bbs_id=1000 -----此内容被andy于2004-11-27,19:38:19编辑过 |
||
|
|
|
|
【5楼】 andy 红日 积分:864 派别: 等级:------ 来自: |
不同的avr编程线图
|
||
|
|
|
|
【6楼】 paley 积分:84 派别: 等级:------ 来自:四川 |
我本来打算等几天用PCB板子做一个并行的MEGA16的开发板的,现在看到你这个,好羡慕!!!!!!!!!!!
我有了自己动手焊接的冲动 |
||
|
|
|
|
【7楼】 wqhe AVR后学者 积分:472 派别: 等级:------ 来自:佛山顺德 |
andy 红日:
能把电路图贴上吗?我有10片M16L锁了。 |
||
|
|
|
|
【8楼】 fanqie 积分:6 派别: 等级:------ 来自: |
我有好几片12被锁了,能提供一些资料吗?十分感谢 | ||
|
|
|
|
【9楼】 armok 阿莫 积分:48830 派别: 等级:------ 来自:ourDEV.cn 站长 |
这个方法就能搞好啊:http://www.ourdev.cn/guide_restore_the_fuse.html | ||
|
__________________________ There's something good in this world. And it's worth fighting for …… |
|||
|
|
|
|
【10楼】 fanqie 积分:6 派别: 等级:------ 来自: |
你说的方法是指加有源晶振的方法,还是用炜煌烧写器? | ||
|
|
|
|
↑↑↑↑↑↑↑↑↑↑↑↑ 抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了47个回复。你需要 点击此处 才能查看全部内容。 对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。 如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。 ↓↓↓↓↓↓↓↓↓↓↓↓ |
|
【58楼】 sqdym 积分:16 派别: 等级:------ 来自: |
之前看过,救活了我一个m8,很好。 | ||
|
|
|
|
【59楼】 meteorlang 积分:5 派别: 等级:------ 来自: |
mark一个 | ||
|
|
|
|
【60楼】 zenglong 积分:7 派别: 等级:------ 来自: |
看下 | ||
|
|
|
|
【61楼】 XMLK 积分:198 派别: 等级:------ 来自: |
MARK
|
||
|
|
|
|
【62楼】 xiaolei0428 Thunder 积分:1970 派别: 等级:------ 来自:江苏境内 |
标记一下,以后需要的时候看 | ||
|
__________________________ 低调是我的本性 您可以叫我Thunder |
|||
|
|
|
|
【63楼】 wsxqazx 李度言 积分:62 派别: 等级:------ 来自: |
不错!学习学习!!
|
||
|
|
|
|
【64楼】 tingfenghu 积分:200 派别: 等级:------ 来自: |
mark
|
||
|
|
|
|
【65楼】 yxchyt 积分:63 派别: 等级:------ 来自: |
又有得玩了 | ||
|
|
|
|
【66楼】 number007cool 积分:286 派别: 等级:------ 来自: |
mark | ||
|
|
|
|
【67楼】 roderickbao 积分:11 派别: 等级:------ 来自: |
mark | ||
|
|
|
|
↑↑↑↑↑↑↑↑↑↑↑↑ 抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了47个回复。你需要 点击此处 才能查看全部内容。 对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。 如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。 |
| ↑↑  快速回复帖子主题:用89S51制作简易并行编程器ATmega16(救活ATmega16) |
| 你尚未登录,不能回复以上帖子。 |
| 51单片机 -> 分类清单 -> 用89S51制作简易并行编程器ATmega16(救活ATmega16) | 跳转至: | 未登录 |
| 任何建议或投诉,欢迎随时与我们联系。 ourDEV.cn 我们的电子开发网,友好交流气氛,乐于开源共享,“这里远比混乱的现实世界美好”。 | ||||
| 网站负责人: | 阿莫(armok),手机:13433056000,电邮:armok ourdev.cn(请将空格改成@) | |||
| 地址与电话: |
东莞市东城八一路同沙工业园内,0769-22298000,传真请按4 阿莫邮购门市与雕刻机展示厅:东莞市莞城区莞太路和生文具礼品批发市场A2018,A2035 杨小姐 13711915767 雕刻机的技术咨询、订单查询、生产进度,可查询:13600266008吴先生(雕刻机设计人员kaif_w) |
|||
| 声明: |
本网站由东莞科士通(Infostone)科技有限公司属下的阿莫电子邮购部提供独家赞助。 有正式的工商注册与网站备案。详情可到东莞工商局查询。 本网站(ourDEV.cn)原名称为ourAVR.com(我们的AVR),自2007-09-01起从专业的AVR网转成综合电子网站。 本网站系统由armok Using Oracle + Java/JSP + WebLogic + Linux 2001/12/20 -- 2007/09/13 本BBS所有代码均为原创,版权归 armok 所有。本网站自:2004-10-03,16:31:17 起开始运行。 |
|||
| 法律顾问: | 本网站尊重知识产权,自2007年08月15日起,魏龙律师担任ourDEV.cn(原ourAVR.com)常年法律顾问。 | |||