⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdt4msavesystemdata.s43

📁 射频卡水表源代码 射频卡水表源代码
💻 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 + -