📄 wdt4msavesystemdata.s43
字号:
#include "WDT4MDefination.h"
//extern DLY100ms
//************************* Initialize All the system *************************//
PUBLIC SaveSystemData
PUBLIC SaveSystemData1
PUBLIC SaveSystemData2
RSEG CODE
//************************* Initialize All the system *************************//
SaveSystemData1
MOV #SystemDataFlashA,&FlashAddr
CALL #WriteFlash
RET
//************************* Initialize All the system *************************//
SaveSystemData2
MOV #SystemDataFlashB,&FlashAddr
CALL #WriteFlash
RET
//************************* Initialize All the system *************************//
SaveSystemData
bit #NEWRFG
jz SSDRTN
bic #NEWRFG
MOV &LcdL,&OldLcdL
MOV #SystemDataFlashA,&FlashAddr
CALL #WriteFlash
MOV #SystemDataFlashB,&FlashAddr
CALL #WriteFlash
SSDRTN
RET
//************************* Initialize All the system *************************//
WriteFlash
DINT ; Disable interrupts
cmp #0AAAAH,&DataOK
jne WriteFlashRTN
MOV #20H,BX
SaveLoop
MOV #WDTPW+WDTHOLD,&WDTCTL ; Disable WDT
L1 BIT #BUSY,&FCTL3 ; Test BUSY
JNZ L1 ; Loop while busy
MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2
MOV #FWKEY,&FCTL3 ; Clear LOCK
MOV #FWKEY+ERASE,&FCTL1 ; Enable erase
MOV &FlashAddr,AX
CLR 0(AX) ; Dummy write, erase S1
L2 BIT #BUSY,&FCTL3 ; Test BUSY
JNZ L2 ; Loop while busy
MOV #FWKEY+WRT,&FCTL1 ; Enable write
MOV #SystemDataLength,CX
MOV &FlashAddr,DX
MOV #SystemDataRAM,AX
WriteFlashNXT1
MOV.B @AX,0(DX)
MOV.b @AX+,EX
MOV.b @DX+,FX
cmp.b EX,FX
JEQ WriteFlashNXT2
MOV #FWKEY,&FCTL1 ; Done. Clear WRT
MOV #FWKEY+LOCK,&FCTL3 ; Set LOCK... ; Re-enable WDT?
dec BX
cmp.b #00H,BX
jne SaveLoop
mov #0FFFFH,&DataOK
BIS #DataWrongFG
jmp WriteFlashRTN
WriteFlashNXT2
DEC CX
JNZ WriteFlashNXT1
WriteFlashRTN
EINT ; Enable interrupts
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -