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

📄 flash.a51

📁 AT89C51CC02RSR232引导程序C51源代码
💻 A51
字号:
;*A**************************************************************************
; NAME:             flash.a51
;----------------------------------------------------------------------------
; CREATED_BY:       F. FOSSE
; COMPANY:          ATMEL-WM
; CREATION_DATE:    28/04/2001
; AUTHOR:           $author: $
; REVISION:         $version: $
; DATE:             $date: $
;----------------------------------------------------------------------------
; PURPOSE:          This file contains the FLASH memory routines
;
;----------------------------------------------------------------------------
; NOTES:            
;
;****************************************************************************
; CHANGES:
;
;****************************************************************************


$TITLE      (*** Flash Drivers ***)

FLASH_MODULE        SEGMENT     CODE 


;_____ I N C L U D E S ____________________________________________________
$include (register.inc)


;_____ M A C R O S ________________________________________________________


;_____ D E F I N I T I O N ________________________________________________

 
;_____ D E C L A R A T I O N ______________________________________________

PUBLIC      fm_read_xrow, fm_program_xrow, fm_program_xrow_byte
PUBLIC      fm_read_user_byte, fm_program_user, fm_program_user_byte
PUBLIC      fm_read_hardware_byte, fm_program_fuse


RSEG        FLASH_MODULE


;*F***************************************************************************
; NAME:     fm_read_xrow
;-----------------------------------------------------------------------------
; PARAMS:   DPL:    address to read (0 to 128)
;
; RETURN:   ACC:    data read
;
;-----------------------------------------------------------------------------
; PURPOSE:  return one byte of the XROW
; 
;*****************************************************************************
fm_read_xrow:
    clr     A
    mov     DPH,A
    mov     FCON,#SEL_XROW_MOVC         ; map XROW in code space
    movc    A,@A+DPTR                   ; read address
    mov     FCON,#DESELECT_CL           ; reset FCON
    ret



;*F***************************************************************************
; NAME:     fm_program_xrow_byte / fm_program_xrow
;-----------------------------------------------------------------------------
; PARAMS:   ACC:    data to write
;           DPL:    address to write 0 to PAGE_SIZE-1
;
; RETURN:
;
;-----------------------------------------------------------------------------
; PURPOSE:  fm_program_xrow_byte:   program one data byte in XROW
;           fm_program_xrow:        launch programming of CL in XROW
; 
;*****************************************************************************
fm_program_xrow_byte:
    mov     DPH,#00h
    mov     FCON,#SEL_XROW_CL               ; map column latch in XRAM space
    movx    @DPTR,A
fm_program_xrow:
    mov     FCON,#(FPL_S0 OR FMOD_XROW_MSK) ; launch xrow programming
    mov     FCON,#(FPL_S1 OR FMOD_XROW_MSK)
    ajmp    fm_program_busy


;*F***************************************************************************
; NAME:     fm_read_user_byte
;-----------------------------------------------------------------------------
; PARAMS:   DPTR:   address to read
;
; RETURN:   ACC:    data byte read
;
;-----------------------------------------------------------------------------
; PURPOSE:  return USER byte
; 
;*****************************************************************************
fm_read_user_byte:
    mov     FCON,#SEL_USER_MOVC             ; map USER in CODE space
    clr     A
    movc    A,@A+DPTR
    mov     FCON,#DESELECT_CL               ; reset FCON
    ret


;*F***************************************************************************
; NAME:     fm_program_user_byte
;-----------------------------------------------------------------------------
; PARAMS:   ACC:    data to program
;           DPTR:   address to program
;
; RETURN:
;
;-----------------------------------------------------------------------------
; PURPOSE:  launch programming of one byte in USER
; 
;*****************************************************************************
fm_program_user_byte:
    orl     FCON,#FPS_MSK           ; map column latch in XRAM space
    movx    @DPTR,A                 ; data to program
;    ajmp    fm_program_user         ; must be ajmp for API call
;   ! must be followed by the fm_program_user routine

;*F***************************************************************************
; NAME:     fm_program_user
;-----------------------------------------------------------------------------
; PARAMS:
;
; RETURN:
;
;-----------------------------------------------------------------------------
; PURPOSE:  launch programming of CL in USER
; 
;*****************************************************************************
fm_program_user:
    mov     FCON,#(FPL_S0 OR FMOD_USER_MSK) ; launch USER programming
    mov     FCON,#(FPL_S1 OR FMOD_USER_MSK)

fm_program_busy:
    mov     A,FCON
    jb      ACC.0,fm_program_busy
    mov     FCON,#DESELECT_CL               ; reset FCON
    ret


;*F***************************************************************************
; NAME:     fm_read_hardware_byte
;-----------------------------------------------------------------------------
; PARAMS:
;
; RETURN:   ACC:    hardware byte content
;
;-----------------------------------------------------------------------------
; PURPOSE:  read hardware byte
; 
;*****************************************************************************
fm_read_hardware_byte:
    mov     DPTR,#0000H
    mov     FCON,#SEL_FUSE_MOVC ; map hardware byte in CODE space
    clr     A
    movc    A,@A+DPTR           ; read hardware byte
    mov     FCON,#DESELECT_CL   ; reset FCON
    ret


;*F***************************************************************************
; NAME:     fm_program_fuse
;-----------------------------------------------------------------------------
; PARAMS:   ACC:    data to program
;
; RETURN:
;
;-----------------------------------------------------------------------------
; PURPOSE:  program hardware byte
; 
;*****************************************************************************
fm_program_fuse:
    mov     FCON,#SEL_FUSE_CL               ; map hardware byte in XRAM space
    mov     DPTR,#0000h
    movx    @DPTR,A
    mov     FCON,#(FPL_S0 OR FMOD_FUSE_MSK) ; launch fuse programming
    mov     FCON,#(FPL_S1 OR FMOD_FUSE_MSK)
    ajmp    fm_program_busy


END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -