當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] ;***********************ATmega16(L)簡易并行編程器**********************/;說明:;用于沒有燒寫ATmega16并行編程器的朋友,初用ATmega16的工程師在串行;編程時寫錯熔絲位,及加密位,造成不能再應(yīng)用

;***********************ATmega16(L)簡易并行編程器**********************/
;說明:
;用于沒有燒寫ATmega16并行編程器的朋友,初用ATmega16的工程師在串行
;編程時寫錯熔絲位,及加密位,造成不能再應(yīng)用串行編程,構(gòu)成不便,沒并行
;編程將無法再使用,做了一個簡易的并行編程器(很簡單,用萬能板搭焊即可),


;將的芯片加密位及熔絲恢復(fù)出廠默認(rèn)值及恢復(fù)串行在線編程功能(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)試軟件SSCOMV3.0,設(shè)置波特率(2400、8、1、N),查看到之前的加
;密位及熔絲高低字節(jié)內(nèi)容,以及執(zhí)行了加密位擦除之后的加密位及熔絲高低字
;節(jié)內(nèi)容(FF99E1)。
;//////////////////////////////////////////////////////////////
;主控at89S51,晶振6M
;P0口編程數(shù)據(jù)輸入輸出,;P2編程控制
;/*******************AT89C51與ATmega16(L)各腳連接********************/
;P0.0~7<-->PB.0~PB.7
;P0.0~7要連接4.7Kx8上拉電阻到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;
;制作成功后你就狂燒熔絲和加密位吧!!!!!!!!!!!!!!!!!!
PAGELBITP2.0;PD7flash和E2PROM頁裝入
XA1BITP2.1;PD6XTAL編程動作位1
XA0BITP2.2;PD5XTAL編程動作位0
BS1BITP2.3;PD4字節(jié)選擇1(0:選低字節(jié),1:選高字節(jié))
_WRBITP2.4;PD3寫脈沖
_OEBITP2.5;PD2輸出允許(低有效)
RDY_BSYBITP2.6;PD10:器件正在編程,1:器件就緒等待命令
XTAL1BITP2.7;晶振輸入端
;-----------------------------------------------------
BS2BITP1.0;PA0字節(jié)選擇2(0:選低字節(jié),1:選高字節(jié))
;-----------------------------------------------------
LAMPBITP1.1;編程指示燈
_RST_12VBITP1.2;復(fù)位端12V電壓
KEYBITP1.3;執(zhí)行按鍵

CREQU0DH;CARRIAGERETURN
LFEQU0AH;LINEFEED
;****************************************************************************

ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVSP,#70H
MOVP0,#0FFH;初始化P0,P1,P2
MOVP1,#11111000B;P1.7~4=1,KEY=1,_RST_12V=0,LED=0V.BS2=0
MOVP2,#01110000B;XTAL1=0,RDY_BSY=1,_OE=1,_WR=1,(BS1,XA0,XA1,PAGEL=0)
ACALLINT_SIO;初始化SIO
LOOP:
CPLLAMP
ACALLDELAY_1S
JBKEY,LOOP
JNBKEY,$
SETBLAMP

ACALLPROG_ST;進(jìn)入并行編程模式
ACALLREAD_FUSE;讀之前熔絲字節(jié)及經(jīng)過TXD將內(nèi)容發(fā)送到PCRS-232
ACALLChip_ERASE;擦除加密位,存儲器
ACALLWRITE_FUSE;寫熔絲字節(jié)
ACALLREAD_FUSE;讀之后熔絲字節(jié)及經(jīng)過TXD將內(nèi)容發(fā)送到PCRS-232
CLR_RST_12V
CLRLAMP
ACALLSIO_CR_LF
AJMPLOOP
;**********************************
;進(jìn)入并行編程模式子程序
;**********************************
PROG_ST:
MOVR1,#6
PLS:
SETBXTAL1;產(chǎn)生6個的XTAL1時鐘脈沖觸發(fā)
CLRXTAL1
DJNZR1,PLS
ANLP2,#01110000B;PAGEL,XTAL1,XA1,XA0,BS1==0
NOP;延時大于100ns
SETB_RST_12V;RST加12v電壓
NOP;延時大于100ns
RET
;**********************************
;擦除加密位、存儲器子程序
;***********************************
CHIP_ERASE:
CLRLAMP;指示正忙
SETBXA1;設(shè)置XA1,XA0="10"允許裝入命令
CLRXA0
CLRBS1
CLRBS2
MOVP0,#80H;送出芯片擦除命令
SETBXTAL1
CLRXTAL1;輸入正脈沖將命令裝入芯片
NOP
SETB_WR
CLR_WR
SETB_WR;輸入一個負(fù)脈沖,開始執(zhí)行命令擦除芯片
JBRDY_BSY,$;等待RDY/BSY變高,表示擦除完成
JNBRDY_BSY,$
ACALLDELAY_106US
SETBLAMP;指示空閑
ACALLDELAY_106US
RET
;///////////////寫熔絲高低字節(jié)子程序////////////////
WRITE_FUSE:
CLRLAMP;指示正忙
SETBXA1;設(shè)置XA1,XA0="10"允許裝入命令
CLRXA0
CLRBS1
CLRBS2
MOVP0,#40H;送出寫熔絲命令
SETBXTAL1
CLRXTAL1;XTAL1輸入正脈沖將命令裝入芯片
CLRXA1;設(shè)置XA1,XA0="01"允許裝入數(shù)據(jù)
SETBXA0
NOP
CLRBS1;BS1,BS2="00"表示熔絲低字節(jié)“10”表示高字節(jié)
CLRBS2
MOVP0,#0E1H;DOBLEVEL=1,BODEN=1,SUT1=1,SUT1=0,SKSEL3=0,
;SKSEL2=0,SKSEL1=0,SKSEL0=1(工廠設(shè)定值)
SETBXTAL1
CLRXTAL1;XTAL1輸入正脈沖數(shù)據(jù)裝入芯片
SETB_WR
CLR_WR
SETB_WR;_WR輸入一個負(fù)脈沖,開始執(zhí)行命令
JBRDY_BSY,$;等待RDY/BSY變高,表示完成
JNBRDY_BSY,$
ACALLDELAY_106US
;/*********寫高字節(jié)**********/
MOVP0,#99H;'99'為出廠設(shè)定值
SETBXTAL1
CLRXTAL1;XTAL1輸入正脈沖數(shù)據(jù)裝入芯片
SETBBS1
SETB_WR
CLR_WR
SETB_WR;_WR輸入一個負(fù)脈沖,開始執(zhí)行命令
JBRDY_BSY,$;等待RDY/BSY變高,表示完成
JNBRDY_BSY,$
CLRBS1
ACALLDELAY_106US
SETBLAMP;指示空閑
RET
;/**********讀熔絲及加密位************/
READ_FUSE:
CLRLAMP;指示正忙
SETBXA1;設(shè)置XA1,XA0="10"允許裝入命令
CLRXA0
CLRBS1
CLRBS2
MOVP0,#04H;送出讀熔絲和鎖定位命令
CLRXTAL1
SETBXTAL1
CLRXTAL1;XTAL1輸入正脈沖將命令裝入芯片
NOP
CLR_OE
CLRBS2;讀熔絲低字節(jié)
CLRBS1
MOVP0,#0FFH
MOVR7,P0
SETBBS2;讀熔絲高字節(jié)
SETBBS1
MOVR6,P0
CLRBS2;讀加密位
MOVR5,P0
SETB_OE
SETBLAMP
ACALLSIO_TO_PC
RET
;------------------
DELAY_1S:
MOVR7,#1
DELAY11:
MOVR6,#0FFH
DELAY12:
MOVR5,#0FFH
DJNZR5,$
DJNZR6,DELAY12
DJNZR7,DELAY11
RET
;-------------------
DELAY_106US:
MOVR5,#18H
DJNZR5,$
RET
;************************************************************
;將R5R6R7的內(nèi)容經(jīng)TXD發(fā)送到PC子程序
;*************************************************************
SIO_TO_PC:
MOVA,R5;加密鎖定字節(jié)
SWAPA
ACALLHEX_ASC
ACALLSIO_SEND_OUT;經(jīng)TXD發(fā)送加密鎖定字節(jié)的高4BIT
MOVA,R5
ACALLHEX_ASC
ACALLSIO_SEND_OUT;經(jīng)TXD發(fā)送加密鎖定字節(jié)的低4BIT

MOVA,#''
ACALLSIO_SEND_OUT;經(jīng)TXD發(fā)送空格

MOVA,R6;熔絲高字節(jié)
SWAPA
ACALLHEX_ASC
ACALLSIO_SEND_OUT;經(jīng)TXD發(fā)送熔絲高字節(jié)的高4BIT
MOVA,R6
ACALLHEX_ASC
ACALLSIO_SEND_OUT;經(jīng)TXD發(fā)送熔絲高字節(jié)的低4BIT

MOVA,R7;熔絲低字節(jié)
SWAPA
ACALLHEX_ASC
ACALLSIO_SEND_OUT;經(jīng)TXD發(fā)送熔絲低字節(jié)的高4BIT
MOVA,R7
ACALLHEX_ASC
ACALLSIO_SEND_OUT;經(jīng)TXD發(fā)送熔絲低字節(jié)的低4BIT
MOVA,#CR
ACALLSIO_SEND_OUT
MOVA,#LF
ACALLSIO_SEND_OUT
RET
;*****************************************
;初始化SIO波特率2400(晶振6MHz)
;*****************************************
INT_SIO:
ORLPCON,#10000000B;SMOD=1T1
MOVTMOD,#00100000B
MOVTH1,#256-13;設(shè)置波特率為2400
MOVTL1,#256-13;6.MHZ石英/12/16/13=2400
SETBTR1;啟動定時器T1TR1=1
ORLSCON,#01000000B;SETSIOMODE1
;******************************************
SIO_CR_LF:
MOVA,#CR
ACALLSIO_SEND_OUT
MOVA,#LF
ACALLSIO_SEND_OUT
RET
;*****************************************
;*SENDONEDATASUBROUTINE*
;*USEAFORSENDDATA*
;*****************************************
SIO_SEND_OUT:
MOVSBUF,A
JNBTI,$
CLRTI
RET
;*****************************************
;*INVERTHEXTOASCIISUBROUTINE*
;*INPUTHEXLOW4BITTOA*
;*OUTPUTASCIIFORMA*
;*****************************************
HEX_ASC:
ANLA,#00001111B
INCA
MOVCA,@A+PC
RET

DB'0123456789ABCDEF'
END

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉