日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
用89S51制作簡易并行編程器ATmega16
用89S51制作簡易并行編程器ATmega16
 更新時間:2008-7-26 19:30:43  點擊數(shù):3
【字體: 字體顏色
;***********************ATmega16(L)簡易并行編程器**********************/
;說明:
;    用于沒有燒寫ATmega16并行編程器的朋友,初用ATmega16的工程師在串行
;編程時寫錯熔絲位,及加密位,造成不能再應用串行編程,構(gòu)成不便,沒并行
;編程將無法再使用,做了一個簡易的并行編程器(很簡單,用萬能板搭焊即可),
;將的芯片加密位及熔絲恢復出廠默認值及恢復串行在線編程功能(ISP)。
;**********************************************************************
;使用說明:
;    本電路有1按鍵(key),執(zhí)行1次將芯片加密位擦除,都要按下按鍵1秒鐘才
;執(zhí)行操作,可將at89S51的P3.1(TXD)連接1只NPN三極管(9014)、2支電阻作為
;P3.1(TXD)輸出5V反相器,連接PC的RS-232接收端(RXD),就可通過在PC執(zhí)行1
;個串口調(diào)試軟件SSCOM V3.0,設(shè)置波特率(2400、8、1、N),查看到之前的加
;密位及熔絲高低字節(jié)內(nèi)容,以及執(zhí)行了加密位擦除之后的加密位及熔絲高低字
;節(jié)內(nèi)容(FF 99 E1)。
;//////////////////////////////////////////////////////////////
;主控at89S51,晶振6M 
;P0口編程數(shù)據(jù)輸入輸出 ,;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 指示運行狀態(tài) (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 字節(jié)選擇1(0:選低字節(jié),1:選高字節(jié))
_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 字節(jié)選擇2(0:選低字節(jié),1:選高字節(jié))
;-----------------------------------------------------
LAMP       BIT    P1.1        ;編程指示燈
_RST_12V   BIT    P1.2        ;復位端12V電壓
KEY        BIT    P1.3        ;執(zhí)行按鍵

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    ;讀之前熔絲字節(jié)及經(jīng)過TXD將內(nèi)容發(fā)送到PC RS-232
    ACALL CHIP_ERASE   ;擦除加密位,存儲器
    ACALL WRITE_FUSE   ;寫熔絲字節(jié)
    ACALL READ_FUSE    ;讀之后熔絲字節(jié)及經(jīng)過TXD將內(nèi)容發(fā)送到PC RS-232
    CLR  _RST_12V
    CLR  LAMP
    ACALL SIO_CR_LF
    AJMP LOOP
;**********************************
;進入并行編程模式子程序
;**********************************
PROG_ST:
    MOV R1,#6
PLS:     
    SETB XTAL1           ;產(chǎn)生6個的XTAL1時鐘脈沖觸發(fā)
    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            ;設(shè)置XA1,XA0="10"允許裝入命令
    CLR  XA0
    CLR BS1
    CLR BS2
    MOV P0,#80H         ;送出芯片擦除命令
    SETB XTAL1
    CLR XTAL1           ;輸入正脈沖將命令裝入芯片
    NOP
    SETB _WR
    CLR _WR
    SETB _WR            ;輸入一個負脈沖,開始執(zhí)行命令擦除芯片
    JB RDY_BSY,$        ;等待RDY/BSY變高,表示擦除完成
    JNB RDY_BSY,$
    ACALL DELAY_106US 
    SETB LAMP           ;指示空閑
    ACALL DELAY_106US 
    RET
;///////////////寫熔絲高低字節(jié)子程序////////////////
WRITE_FUSE:
    CLR LAMP            ;指示正忙
    SETB XA1            ;設(shè)置XA1,XA0="10"允許裝入命令
    CLR  XA0
    CLR BS1
    CLR BS2
    MOV P0,#40H         ;送出寫熔絲命令
    SETB XTAL1
    CLR XTAL1           ;XTAL1輸入正脈沖將命令裝入芯片
    CLR XA1            ;設(shè)置XA1,XA0="01"允許裝入數(shù)據(jù)
    SETB XA0
    NOP
    CLR BS1             ;BS1,BS2="00"表示熔絲低字節(jié)“10”表示高字節(jié)
    CLR BS2
    MOV P0,#0E1H        ;DOBLEVEL=1,BODEN=1,SUT1=1,SUT1=0,SKSEL3=0,
                        ;SKSEL2=0,SKSEL1=0,SKSEL0=1(工廠設(shè)定值)
    SETB XTAL1
    CLR XTAL1            ;XTAL1輸入正脈沖數(shù)據(jù)裝入芯片
    SETB _WR
    CLR _WR
    SETB _WR            ;_WR輸入一個負脈沖,開始執(zhí)行命令
    JB RDY_BSY,$        ;等待RDY/BSY變高,表示完成
    JNB RDY_BSY,$
    ACALL DELAY_106US 
;/*********寫高字節(jié)**********/      
    MOV P0,#99H         ;'99'為出廠設(shè)定值
    SETB XTAL1
    CLR XTAL1           ;XTAL1輸入正脈沖數(shù)據(jù)裝入芯片
    SETB BS1
    SETB _WR
    CLR _WR
    SETB _WR              ;_WR輸入一個負脈沖,開始執(zhí)行命令
    JB RDY_BSY,$        ;等待RDY/BSY變高,表示完成
    JNB RDY_BSY,$
    CLR BS1
    ACALL DELAY_106US         
    SETB LAMP           ;指示空閑
    RET
;/**********讀熔絲及加密位************/
READ_FUSE:
    CLR LAMP           ;指示正忙
    SETB XA1           ;設(shè)置XA1,XA0="10"允許裝入命令    
    CLR XA0
    CLR BS1
    CLR BS2
    MOV P0,#04H          ;送出讀熔絲和鎖定位命令
    CLR XTAL1
    SETB XTAL1
    CLR XTAL1            ;XTAL1輸入正脈沖將命令裝入芯片
    NOP
    CLR _OE
    CLR BS2              ;讀熔絲低字節(jié)
    CLR BS1
    MOV P0,#0FFH
    MOV R7,P0
    SETB BS2             ;讀熔絲高字節(jié)
    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 的內(nèi)容經(jīng) TXD 發(fā)送到 PC 子程序 
;*************************************************************
SIO_TO_PC:
   MOV      A,R5              ;加密鎖定字節(jié)
   SWAP     A
   ACALL    HEX_ASC
   ACALL    SIO_SEND_OUT      ;經(jīng)TXD發(fā)送加密鎖定字節(jié)的高4BIT
   MOV      A,R5
   ACALL    HEX_ASC
   ACALL    SIO_SEND_OUT      ;經(jīng)TXD發(fā)送加密鎖定字節(jié)的低4BIT 

   MOV      A,#' '
   ACALL    SIO_SEND_OUT      ;經(jīng)TXD發(fā)送 空格 
  
   MOV      A,R6              ;熔絲高字節(jié)
   SWAP     A
   ACALL    HEX_ASC
   ACALL    SIO_SEND_OUT      ;經(jīng)TXD發(fā)送熔絲高字節(jié)的高4BIT   
   MOV      A,R6
   ACALL    HEX_ASC
   ACALL    SIO_SEND_OUT      ;經(jīng)TXD發(fā)送熔絲高字節(jié)的低4BIT 

   MOV      A,R7              ;熔絲低字節(jié)
   SWAP     A
   ACALL    HEX_ASC
   ACALL    SIO_SEND_OUT      ;經(jīng)TXD發(fā)送熔絲低字節(jié)的高4BIT         
   MOV      A,R7
   ACALL    HEX_ASC
   ACALL    SIO_SEND_OUT      ;經(jīng)TXD發(fā)送熔絲低字節(jié)的低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       ;設(shè)置波特率為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
  • 上一篇: C語言宏定義技巧(常用宏定義)
  • 下一篇: 下載燒錄快速入門
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1