您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机用89S51制作简易并行编程器ATmega16 正文
用89S51制作简易并行编程器ATmega16

用89S51制作简易并行编程器ATmega16

点击数:7628 次   录入时间:03-04 11:56:46   整理:http://www.55dianzi.com   AVR单片机
;***********************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           ;输入正脉冲将命令装入芯片

[1] [2] [3]  下一页


本文关键字:制作  AVR单片机单片机-工控设备 - AVR单片机

上一篇:AVR应用经验

《用89S51制作简易并行编程器ATmega16》相关文章>>>