用89S51制作简易并行编程器ATmega16(救活ATmega16) (www.ourdev.cn)
你尚未登录 |登录 |快速注册 |退出 首页 酷贴 搜索 在线 本网站由阿莫电子邮购独家赞助
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
 
2004-10-20,20:07:10
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【1楼】 armok 阿莫

积分:48830
派别:
等级:------
来自:ourDEV.cn 站长
要用到89S51? 

有没有AVR芯片及C组成的并行编程器的资料? 如果有,做一个也不错啊。
__________________________
There's something good in this world. And it's worth fighting for ……
2004-10-20,20:30:28
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【2楼】 andy 红日

积分:864
派别:
等级:------
来自:
可以用ATmega8写C组成的并行编程器对应ATmega8/16,要自己动手写。
 
2004-10-20,20:41:53
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【3楼】 hyping
积分:37
派别:
等级:------
来自:
有电路图否
 
2004-11-27,17:04:20
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【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编辑过
 
2004-11-27,19:10:05
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【5楼】 andy 红日

积分:864
派别:
等级:------
来自:
不同的avr编程线图


 
2004-11-27,23:50:48
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【6楼】 paley
积分:84
派别:
等级:------
来自:四川
我本来打算等几天用PCB板子做一个并行的MEGA16的开发板的,现在看到你这个,好羡慕!!!!!!!!!!!
我有了自己动手焊接的冲动
 
2004-11-28,20:50:03
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【7楼】 wqhe AVR后学者
积分:472
派别:
等级:------
来自:佛山顺德
andy 红日:
         能把电路图贴上吗?我有10片M16L锁了。
 
2004-11-29,22:07:54
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【8楼】 fanqie
积分:6
派别:
等级:------
来自:
我有好几片12被锁了,能提供一些资料吗?十分感谢
 
2004-12-13,15:25:09
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【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 ……
2004-12-13,15:28:50
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【10楼】 fanqie
积分:6
派别:
等级:------
来自:
你说的方法是指加有源晶振的方法,还是用炜煌烧写器?
 
2004-12-13,20:23:45
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
↑↑↑↑↑↑↑↑↑↑↑↑
抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了47个回复。你需要 点击此处 才能查看全部内容。
对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。
如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。
↓↓↓↓↓↓↓↓↓↓↓↓
【58楼】 sqdym
积分:16
派别:
等级:------
来自:
之前看过,救活了我一个m8,很好。
 
2010-01-11,21:55:08
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【59楼】 meteorlang
积分:5
派别:
等级:------
来自:
mark一个
 
2010-01-11,23:51:43
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【60楼】 zenglong
积分:7
派别:
等级:------
来自:
看下
 
2010-02-04,15:25:15
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【61楼】 XMLK
积分:198
派别:
等级:------
来自:
MARK
 
2010-02-05,23:16:17
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【62楼】 xiaolei0428 Thunder

积分:1970
派别:
等级:------
来自:江苏境内
标记一下,以后需要的时候看
__________________________
低调是我的本性
您可以叫我Thunder
2010-02-21,17:26:27
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【63楼】 wsxqazx 李度言

积分:62
派别:
等级:------
来自:
不错!学习学习!!
 
2010-02-21,19:21:37
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【64楼】 tingfenghu
积分:200
派别:
等级:------
来自:
mark
 
2010-02-22,08:53:02
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【65楼】 yxchyt
积分:63
派别:
等级:------
来自:
又有得玩了
 
2010-03-09,11:29:03
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【66楼】 number007cool

积分:286
派别:
等级:------
来自:
mark
 
2010-05-22,11:58:08
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
【67楼】 roderickbao
积分:11
派别:
等级:------
来自:
mark
 
2010-06-03,15:42:00
资料 邮件 回复 引用回复   ↑↑   ↓↓ 编辑 删除
↑↑↑↑↑↑↑↑↑↑↑↑
抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各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)常年法律顾问。

本网站已经通过了东莞市公安局安全认证许可,请大家遵守国家法律法规。粤ICP备09047143号