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

📄 dataflsh.lst

📁 aduc842原程序代码 ad公司芯片应用笔记
💻 LST
字号:
DATAFLSH                                                                                                      PAGE 1

                       1    ;********************************************************************
                       2    ;
                       3    ; Author        : ADI - Apps            www.analog.com/MicroConverter
                       4    ;
                       5    ; Date          : October 2003
                       6    ;
                       7    ; File          : dataflsh.asm
                       8    ;
                       9    ; Hardware      : ADuC842/ADuC843
                      10    ;
                      11    ; Description   : Demonstrates use of the on-chip read/write 4096 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.  
                      16    ;                 The ADuC842 stores the play sequece in data flash 
                      17    ;                 until another is recorded with a new set of button
                      18    ;                 presses.  To record a new sequence, just wait until
                      19    ;                 the current one finishes playing (LED is off) and
                      20    ;                 enter new sequence via button (INT0).
                      21    ;
                      22    ;********************************************************************
                      23    
                      24    $MOD842                         ; Use 8052&ADuC842 predefined symbols
                      25    
  00B4                26    LED      EQU    P3.4            ; P3.4 drives red LED on eval board
  00B2                27    BUTTON   EQU    P3.2            ; button on eval board drives P3.2
  00D5                28    PREVIOUS EQU    F0              ; flag to hold previous button value
  0001                29    READ     EQU    01h             ; FlashEE command:  'read page'
  0002                30    WRITE    EQU    02h             ; FlashEE command:  'write page'
  0004                31    VERIFY   EQU    04h             ; FlashEE command:  'verify page'
  0005                32    ERASE    EQU    05h             ; FlashEE command:  'erase page'
  0006                33    ERASEALL EQU    06h             ; FlashEE command:  'erase all'
                      34    ;--------------------------------------------------------------------
                      35    ;____________________________________________________________________
                      36                                                      ; BEGINNING OF CODE
----                  37    CSEG
                      38    
0000                  39    ORG 0000h
                      40    
0000                  41    MAIN:
0000 C2B4             42            CLR     LED             ; turn LED off
0002 75C700           43            MOV     EADRH,#0        ; set data FlashEE address to page 0
0005 75C600           44            MOV     EADRL,#0
                      45    
                      46    ; READ FLASH/EE DATA and indicate values via LED on and off times...
                      47    
0008                  48    READFLASH:
0008 75B901           49            MOV     ECON,#READ      ; read current 4byte page of FlashEE
                      50                                    ; into EDATA1,2,3,4
000B E5BF             51            MOV     A,EDATA4
000D B40111           52            CJNE    A,#1,RECORD     ; if EDATA4 is 1, then page contains
                      53                                    ; a valid play sequence 
                      54                                    ;        => Play this sequence
                      55                                    ; otherwise jump to record mode
                      56    
                      57    
                      58    ;--------------------------------------------------------------------
DATAFLSH                                                                                                      PAGE 2

0010                  59    PLAYBACK:
0010 12005A           60            CALL    BLINK           ; flash LED for period determined
                      61                                    ; by FlashEE data just read
0013 E5C6             62            MOV     A,EADRL
0015 B4FF02           63            CJNE    A,#0FFh,INCPAGE1 ; if low address is FFh then increment high address
0018 05C7             64            INC     EADRH
001A                  65    INCPAGE1:
001A 05C6             66            INC     EADRL           ; increment to next FlashEE page addr
001C E5C7             67            MOV     A,EADRH
001E B404E7           68            CJNE    A,#04h,READFLASH
                      69                                    ; if address is less than 160 then jump
                      70                                    ; to read the next page
                      71           ; when PLAYBACK is finished jump to RECORD mode
                      72    
                      73    ;--------------------------------------------------------------------
0021                  74    RECORD:
0021 C2B4             75            CLR     LED
0023 20B2FD           76            JB      BUTTON,$        ; wait for first button press
                      77    
                      78            ; once button is pressed, erase dataflash
0026 75B906           79            MOV     ECON,#ERASEALL  ; clear all data FlashEE memory
0029 75C700           80            MOV     EADRH,#0
002C 75C600           81            MOV     EADRL,#0
                      82    
                      83            ; record time of button press
                      84    
002F                  85    RECORD_NEXT_TIME:
002F 12007A           86            CALL    RECORDTIME
                      87    
0032 8582BC           88            MOV     EDATA1,DPL      ; place DPTR in EDATA1,2,3
0035 8583BD           89            MOV     EDATA2,DPH
0038 8584BE           90            MOV     EDATA3,DPP
003B 75BF01           91            MOV     EDATA4,#1       ; put 1 in EDATA4 as identifier
003E 75B902           92            MOV     ECON,#WRITE     ; write EDATA1-4 into pre-erased
                      93                                    ; page of FlashEE data memory
                      94    
0041 75B904           95            MOV     ECON,#VERIFY    ; verify current page is same as
0044 E5B9             96            MOV     A,ECON          ; EDATA1-4.  If same, ECON=0. 
0046 70D9             97            JNZ     RECORD          ; if verify fails, jump to RECORD
                      98    
0048 E5C6             99            MOV     A,EADRL
004A B4FF02          100            CJNE    A,#0FFh,INCPAGE2 ; if low address is FFh then increment high address
004D 05C7            101            INC     EADRH
004F                 102    INCPAGE2:
004F 05C6            103            INC     EADRL           ; increment to next FlashEE page addr
0051 E5C7            104            MOV     A,EADRH
0053 B404D9          105            CJNE    A,#04h,RECORD_NEXT_TIME
                     106                                    ; record first 160 button presses only
                     107    
                     108            ; when flash/EE data space is full turn off LED and wait 
                     109            ; for a power cycle
0056 C2B4            110            CLR     LED     
0058 80FE            111            JMP     $       
                     112    
                     113    
                     114    ;====================================================================
                     115    ;                             FUNCTIONS
                     116    ;====================================================================
DATAFLSH                                                                                                      PAGE 3

                     117    
                     118    
                     119    ;____________________________________________________________________
                     120                                                            ; SUBROUTINES
005A                 121    BLINK:
                     122            ; Turn LED ON/OFF based on the time in EDATA3/2/1          
005A B2B4            123            CPL     LED
                     124    
005C E4              125            CLR     A
005D F582            126            MOV     DPL,A
005F F583            127            MOV     DPH,A          ; clear DPTR
0061 F584            128            MOV     DPP,A
                     129    
0063 05BC            130            INC     EDATA1          ; EDATA1 -> EDATA3 should be 
0065 05BD            131            INC     EDATA2          ; incremented for the below to work
0067 05BE            132            INC     EDATA3
                     133    
0069                 134    BLINKLOOP:
                     135            ; the record loop takes 11 instruction cycles hence 7 NOPs are
                     136            ; required to make the Playback loop 11 instruction cycles also.
                     137            ; NOTE: the main Playback loop will jump to BLINKLOOP after 
                     138            ; decrementing EDATA1 and hence the time required to decrement
                     139            ; EDATA2 (approx 1/256 time of main loop) and EDATA3 are ignored.
0069 00              140            NOP                                                       ; 1 
006A 00              141            NOP                                                       ; 1
006B 00              142            NOP                                                       ; 1
006C 00              143            NOP                                                       ; 1 
006D 00              144            NOP                                                       ; 1
006E 00              145            NOP                                                       ; 1
006F 00              146            NOP                                                       ; 1
0070 D5BCF6          147            DJNZ    EDATA1, BLINKLOOP                                 ; 4
0073 D5BDF3          148            DJNZ    EDATA2, BLINKLOOP ; EDATA1 overflows back to FFh    
0076 D5BEF0          149            DJNZ    EDATA3, BLINKLOOP ; EDATA2 overflows back to FFh
                     150    
0079 22              151            RET
                     152    
                     153    ;____________________________________________________________________
                     154    
007A                 155    RECORDTIME:
                     156            ; Record how long button is pressed for and store in EDATA3/2/1 
007A E4              157            CLR     A
007B F582            158            MOV     DPL,A
007D F583            159            MOV     DPH,A          ; clear DPTR
007F F584            160            MOV     DPP,A
                     161    
0081 B2B4            162            CPL     LED
                     163    
                     164            ; measure how long the button is either pressed or released 
                     165            ; for. If the button is pressed then the LED is on. If the 
                     166            ; button is released then the LED is off.
0083                 167    RECORDLOOP:
0083 A3              168            INC     DPTR            ; incrementing DPTR..           ;  3
0084 30B404          169            JNB     LED, CHKB                                       ;  4
0087 30B2F9          170            JNB     BUTTON,RECORDLOOP                               ;  4
                     171                                    ; keep recording while button is pressed
008A 22              172            RET                    
008B 20B2F5          173    CHKB:   JB      BUTTON,RECORDLOOP                               ;  4
                     174                                    ; keep recording while button is released
DATAFLSH                                                                                                      PAGE 4

008E 22              175            RET
                     176    
                     177    ; DPP,DPH,DPL now holds a number that represents the length of
                     178    ; time between button edges.  this data will be stored in FlashEE
                     179    ; space for use in controlling LED on and off times in "play" mode.
                     180    
                     181    ;____________________________________________________________________
                     182    
                     183    
                     184    END

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
DATAFLSH                                                                                                      PAGE 5

BLINK. . . . . . . . . . . . . .  C ADDR  005AH  
BLINKLOOP. . . . . . . . . . . .  C ADDR  0069H  
BUTTON . . . . . . . . . . . . .    NUMB  00B2H  
CHKB . . . . . . . . . . . . . .  C ADDR  008BH  
DPH. . . . . . . . . . . . . . .  D ADDR  0083H  PREDEFINED  
DPL. . . . . . . . . . . . . . .  D ADDR  0082H  PREDEFINED  
DPP. . . . . . . . . . . . . . .  D ADDR  0084H  PREDEFINED  
EADRH. . . . . . . . . . . . . .  D ADDR  00C7H  PREDEFINED  
EADRL. . . . . . . . . . . . . .  D ADDR  00C6H  PREDEFINED  
ECON . . . . . . . . . . . . . .  D ADDR  00B9H  PREDEFINED  
EDATA1 . . . . . . . . . . . . .  D ADDR  00BCH  PREDEFINED  
EDATA2 . . . . . . . . . . . . .  D ADDR  00BDH  PREDEFINED  
EDATA3 . . . . . . . . . . . . .  D ADDR  00BEH  PREDEFINED  
EDATA4 . . . . . . . . . . . . .  D ADDR  00BFH  PREDEFINED  
ERASE. . . . . . . . . . . . . .    NUMB  0005H  NOT USED  
ERASEALL . . . . . . . . . . . .    NUMB  0006H  
F0 . . . . . . . . . . . . . . .  B ADDR  00D5H  PREDEFINED  
INCPAGE1 . . . . . . . . . . . .  C ADDR  001AH  
INCPAGE2 . . . . . . . . . . . .  C ADDR  004FH  
LED. . . . . . . . . . . . . . .    NUMB  00B4H  
MAIN . . . . . . . . . . . . . .  C ADDR  0000H  NOT USED  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
PLAYBACK . . . . . . . . . . . .  C ADDR  0010H  NOT USED  
PREVIOUS . . . . . . . . . . . .    NUMB  00D5H  NOT USED  
READ . . . . . . . . . . . . . .    NUMB  0001H  
READFLASH. . . . . . . . . . . .  C ADDR  0008H  
RECORD . . . . . . . . . . . . .  C ADDR  0021H  
RECORDLOOP . . . . . . . . . . .  C ADDR  0083H  
RECORDTIME . . . . . . . . . . .  C ADDR  007AH  
RECORD_NEXT_TIME . . . . . . . .  C ADDR  002FH  
VERIFY . . . . . . . . . . . . .    NUMB  0004H  
WRITE. . . . . . . . . . . . . .    NUMB  0002H  

⌨️ 快捷键说明

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