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

📄 flashee.lst

📁 aduc812精典源代码下载,适合初学者
💻 LST
📖 第 1 页 / 共 2 页
字号:
FLASHEE                                                                                                       PAGE 1

                       1    ;********************************************************************
                       2    ;
                       3    ; Author        : ADI - Apps            www.analog.com/MicroConverter
                       4    ;
                       5    ; Date          : 28 May 1999
                       6    ;
                       7    ; File          : FlashEE.asm
                       8    ;
                       9    ; Hardware      : ADuC812
                      10    ;
                      11    ; Description   : Demonstrates use of the on-chip read/write 640 byte
                      12    ;                 FlashEE data memory space.  Stores a sequence of
                      13    ;                 button presses (INT0 button on eval board) in data
                      14    ;                 FlashEE space.  Replays sequence on LED when board
                      15    ;                 is reset or power cycled.  Will store the sequence
                      16    ;                 until another is recorded with a new set of button
                      17    ;                 presses.  To record a new sequence, just wait until
                      18    ;                 the current one finishes playing (LED is off) and
                      19    ;                 enter new sequence via button (INT0).
                      20    ;
                      21    ; NOTE:         : DO NOT write to FlashEE addresses above page 159!
                      22    ; -----           The 640 bytes are stored in pages 0 thru 159 (9Fh)
                      23    ;                 as four bytes per page.  Writing to pages above
                      24    ;                 those documented can permanently lock you out of
                      25    ;                 the chip.  See ADuC812 data sheet and errata sheet
                      26    ;                 for details (www.analog.com/microconverter).
                      27    ;
                      28    ;********************************************************************
                      29    
                      30    $MOD812                         ; Use 8052&ADuC812 predefined symbols
                      31    
  00B4                32    LED      EQU    P3.4            ; P3.4 drives red LED on eval board
  00B2                33    BUTTON   EQU    P3.2            ; button on eval board drives P3.2
  00D5                34    PREVIOUS EQU    F0              ; flag to hold previous button value
  0001                35    READ     EQU    01h             ; FlashEE command:  'read page'
  0002                36    WRITE    EQU    02h             ; FlashEE command:  'write page'
  0004                37    VERIFY   EQU    04h             ; FlashEE command:  'verify page'
  0005                38    ERASE    EQU    05h             ; FlashEE command:  'erase page'
  0006                39    ERASEALL EQU    06h             ; FlashEE command:  'erase all'
                      40    
                      41    ;____________________________________________________________________
                      42                                                      ; BEGINNING OF CODE
----                  43    CSEG
                      44    
0000                  45    ORG 0000h
                      46    
0000 D2B4             47            SETB    LED             ; turn LED off
0002 740F             48            MOV     A,#15
0004 12009C           49            CALL    DELAY           ; pause 1.5 seconds
                      50    
0007 75C600           51            MOV     EADRL,#0        ; set data FlashEE address to page 0
                      52    
                      53    ; READ FLASH/EE DATA and indicate values via LED on and off times...
                      54    
000A 75B901           55    READPG: MOV     ECON,#READ      ; read current 4byte page of FlashEE
                      56                                    ; into EDATA1,2,3,4
000D 7401             57            MOV     A,#1
000F B5BF0C           58            CJNE    A,EDATA4,EMPTY  ; if EDATA4 is 1, then page contains
FLASHEE                                                                                                       PAGE 2

                      59                                    ; valid data from previous write
                      60                                    ; otherwise, jump to EMPTY
                      61    
0012 12005A           62            CALL    BLINK           ; flash LED for period determined
                      63                                    ; by FlashEE data just read
                      64    
0015 05C6             65            INC     EADRL           ; increment to next FlashEE page addr
0017 E5C6             66            MOV     A,EADRL
0019 B4A000           67            CJNE    A,#0A0h,CMPRR   ; if address is less than 160..
001C 40EC             68    CMPRR:  JC      READPG          ; ..then jump to read the next page
                      69                                    ; (DO NOT write to pages above 159!)
                      70    
                      71    ; WHEN "PLAY" SEQUENCE IS FINIISHED, wait for button press...
                      72    
001E D2B4             73    EMPTY:  SETB     LED
0020 20B2FD           74            JB      BUTTON,$        ; wait for first button press
0023 7401             75            MOV     A,#1
0025 12009C           76            CALL    DELAY           ; pause 100ms
0028 20B2F3           77            JB      BUTTON,EMPTY    ; ensure button wasn't false trigger
                      78    
                      79    ; IF BUTTON PRESSED, then ERASE and go into "RECORD" mode...
                      80    
002B 75B906           81            MOV     ECON,#ERASEALL  ; clear all data FlashEE memory
002E 75C600           82            MOV     EADRL,#0
                      83    
                      84    ; CAPTURE AND RECORD in FLASH/EE space time between button edges...
                      85    
0031 12007E           86    GETNEW: CALL    GETVAL
                      87    
0034 8582BC           88            MOV     EDATA1,DPL      ; place DPTR in EDATA1,2,3
0037 8583BD           89            MOV     EDATA2,DPH
003A 8584BE           90            MOV     EDATA3,DPP
003D 75BF01           91            MOV     EDATA4,#1       ; put 1 in EDATA4 as identifier
0040 75B905           92            MOV     ECON,#ERASE
0043 75B902           93            MOV     ECON,#WRITE     ; write EDATA1-4 into current page of
                      94                                    ; FlashEE data memory
                      95    
0046 75B904           96            MOV     ECON,#VERIFY    ; verify current page is same as..
0049 E5B9             97            MOV     A,ECON          ; ..EDATA1-4.  if same, ECON <- 0
004B 70D1             98            JNZ     EMPTY           ; if verify fails, jump to EMPTY
                      99    
004D 05C6            100            INC     EADRL           ; increment to next FlashEE page addr
004F E5C6            101            MOV     A,EADRL
0051 B4A000          102            CJNE    A,#0A0h,CMPRG   ; if EADRL<A0h..
0054 40DB            103    CMPRG:  JC      GETNEW          ; ..then jump to get the next value
                     104                                    ; (DO NOT write to pages above 159!)
                     105    
                     106    ; WHEN FLASH/EE DATA SPACE IS FULL...
                     107    
0056 D2B4            108            SETB     LED     ; code will end up here only after 160 button
                     109                            ; edges.  no more can be recorded, so code
0058 80FE            110            JMP     $       ; just waits for a reset or power cycle.
                     111    
                     112    ;____________________________________________________________________
                     113                                                            ; SUBROUTINES

⌨️ 快捷键说明

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