<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Flash單片機自編程技術(shù)介紹

Flash單片機自編程技術(shù)介紹

作者: 時(shí)間:2012-03-13 來(lái)源:網(wǎng)絡(luò ) 收藏

程序2:用同一模塊軟件將一個(gè)字寫(xiě)入存儲器

Fxkey .set 03300h
Fwkey .set 0A500h
…… ;禁止所有中斷
MOV #(Fwkey + WRT), FCTL1 ;允許對
MOV #123h, 0FE1Eh ;一個(gè)字
MOV #Fwkey, FCTL1 ;位復位
XOR #(Fxkey + Lock), FCTL3 ;LOCK位置位
…… ;允許中斷

2.2 通過(guò)RAM程序調用實(shí)現自編程
  
在Flash進(jìn)行擦除和編程期間,CPU只能訪(fǎng)問(wèn)存于片上RAM的程序指令。將Flash中的程序復制進(jìn)堆棧中,如程序3所示。當對Flash進(jìn)行擦寫(xiě)時(shí),CPU就可以從RAM中執行程序。Flash的擦寫(xiě)操作完成后,Flash就可以重新被訪(fǎng)問(wèn),程序指針PC就會(huì )再次指向Flash存儲器,堆棧指針SP也會(huì )恢復。

從RAM中執行程序,可以使CPU在Flash被改寫(xiě)時(shí)依然保持運行。因此,MSP430系列芯片在Flash編程期間仍然可以通過(guò)UART模塊接收數據。不過(guò),在這種模式下是否接收到數據,只能通過(guò)查詢(xún)UART的接收標志位來(lái)進(jìn)行判斷。

程序3:將Flash中的程序指令拷貝進(jìn)堆棧的程序

Flash_ww
DINT ;禁止所有中斷
CLR.B IE1 ;禁止NMI、ACCV和OP中斷
MOV #5A80h, WDTCTL ;關(guān)閉Watchdog
MOV #Flash_ww_end, R13 ;定義拷貝進(jìn)RAM程序的
;結束地址和長(cháng)度
MOV #Flash_ww_length, R15
MOV #0A500h, FCTL3 ;清除LOCK位
Copy
PUSH @R13 ;將程序拷貝進(jìn)RAM
DECD R13
DEC R15
JNZ Copy
MOV SP, R15
MOV #0A54oh, FCTL1 ;WRT = 1
CALL R15 ;調用RAM中的Flash寫(xiě)程序
MOV #0A500h, FCTL1 ;WRT = 0
MOV #0A510h, FCTL3 ;LOCK = 1
ADD #2*Flash_ww_length, SP
RET
Flash_ww_start
MOV R14, 0(R12) ;向Flash寫(xiě)1字節
Wait_bf
BIT #1, FCTL3 ;檢測BUSY位
JNZ Wait_bf
Flash_ww_end
RET
Flash_ww_length EQU(Flash_ww_end ?Flash_ww_start + 2)/2
ENDMOD

3 結 語(yǔ)
  
本文提出的兩種Flash自編程方法各有利弊。當CPU必須對事件作出快速反應時(shí),如通過(guò)UART進(jìn)行的數據通信,采用Flash自編程開(kāi)始時(shí)將Flash中的程序代碼復制進(jìn)RAM再執行的方法。如果對實(shí)時(shí)性要求不高,在Flash自編程過(guò)程中,將CPU置于空閑狀態(tài)的辦法更為簡(jiǎn)單、直接??梢韵嘈?,隨著(zhù)Flash型芯片的廣泛應用和的不斷發(fā)展,Flash的自編程也將會(huì )有新的突破。

本文引用地址:http://dyxdggzs.com/article/171892.htm
上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>