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

📄 dataflsh.lst

📁 于ADuC812的智能无功补偿控制器的研制 一种眼科B型超声诊断议 SL11R单片机外部存储器扩展 单片机复位电路...支持键盘双击事件的C程序设计! 一些源程序 FrankLin C51 库函数的一
💻 LST
字号:
DATAFLSH                                                                                                      PAGE 1

                       1    ;********************************************************************
                       2    ;
                       3    ; Author        : ADI - Apps            www.analog.com/MicroConverter
                       4    ;
                       5    ; Date          : February 2001
                       6    ;
                       7    ; File          : dataflsh.asm
                       8    ;
                       9    ; Hardware      : ADuC814
                      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.  
                      16    ;                 The ADuC814 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    $MOD814                         ; Use 8052&ADuC814 predefined symbols
                      25    
  00B3                26    LED      EQU    P3.3            ; P3.3 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 C2B3             42            CLR     LED             ; turn LED off
0002 75C600           43            MOV     EADRL,#0        ; set data FlashEE address to page 0
                      44    
                      45    ; READ FLASH/EE DATA and indicate values via LED on and off times...
                      46    
0005                  47    READFLASH:
0005 75B901           48            MOV     ECON,#READ      ; read current 4byte page of FlashEE
                      49                                    ; into EDATA1,2,3,4
0008 E5BF             50            MOV     A,EDATA4
000A B4010A           51            CJNE    A,#1,RECORD     ; if EDATA4 is 1, then page contains
                      52                                    ; a valid play sequence 
                      53                                    ;        => Play this sequence
                      54                                    ; otherwise jump to record mode
                      55    
                      56    
                      57    ;--------------------------------------------------------------------
000D                  58    PLAYBACK:
DATAFLSH                                                                                                      PAGE 2

000D 120043           59            CALL    BLINK           ; flash LED for period determined
                      60                                    ; by FlashEE data just read
0010 05C6             61            INC     EADRL           ; increment to next FlashEE page addr
0012 E5C6             62            MOV     A,EADRL
0014 B4A0EE           63            CJNE    A,#0A0h,READFLASH
                      64                                    ; if address is less than 160 then jump
                      65                                    ; to read the next page
                      66           ; when PLAYBACK is finished jump to RECORD mode
                      67    
                      68    ;--------------------------------------------------------------------
0017                  69    RECORD:
0017 C2B3             70            CLR     LED
0019 20B2FD           71            JB      BUTTON,$        ; wait for first button press
                      72    
                      73            ; once button is pressed, erase dataflash
001C 75B906           74            MOV     ECON,#ERASEALL  ; clear all data FlashEE memory
001F 75C600           75            MOV     EADRL,#0
                      76    
                      77            ; record time of button press
                      78    
0022                  79    RECORD_NEXT_TIME:
0022 120059           80            CALL    RECORDTIME
                      81    
0025 8582BC           82            MOV     EDATA1,DPL      ; place DPTR in EDATA1,2,3
0028 8583BD           83            MOV     EDATA2,DPH
002B 75BF01           84            MOV     EDATA4,#1       ; put 1 in EDATA4 as identifier
002E 75B902           85            MOV     ECON,#WRITE     ; write EDATA1-4 into pre-erased
                      86                                    ; page of FlashEE data memory
                      87    
0031 75B904           88            MOV     ECON,#VERIFY    ; verify current page is same as
0034 E5B9             89            MOV     A,ECON          ; EDATA1-4.  If same, ECON=0. 
0036 70DF             90            JNZ     RECORD          ; if verify fails, jump to RECORD
                      91    
0038 05C6             92            INC     EADRL           ; increment to next FlashEE page addr
003A E5C6             93            MOV     A,EADRL
003C B4A0E3           94            CJNE    A,#0A0h,RECORD_NEXT_TIME
                      95                                    ; record first 160 button presses only
                      96    
                      97            ; when flash/EE data space is full turn off LED and wait 
                      98            ; for a power cycle
003F C2B3             99            CLR     LED     
0041 80FE            100            JMP     $       
                     101    
                     102    
                     103    ;====================================================================
                     104    ;                             FUNCTIONS
                     105    ;====================================================================
                     106    
                     107    
                     108    ;____________________________________________________________________
                     109                                                            ; SUBROUTINES
0043                 110    BLINK:
                     111            ; Turn LED ON/OFF based on the time in EDATA2/1          
0043 B2B3            112            CPL     LED
                     113    
0045 E4              114            CLR     A
0046 F582            115            MOV     DPL,A
0048 F583            116            MOV     DPH,A          ; clear DPTR
DATAFLSH                                                                                                      PAGE 3

                     117    
004A 05BC            118            INC     EDATA1          ; EDATA1 -> EDATA3 should be 
004C 05BD            119            INC     EDATA2          ; incremented for the below to work
                     120    
004E                 121    BLINKLOOP:
                     122            ; the record loop takes 6 instruction cycles hence 4 NOPs are
                     123            ; required to make the Playback loop 6 instruction cycles also.
                     124            ; NOTE: the main Playback loop will jump to BLINKLOOP after 
                     125            ; decrementing EDATA1 and hence the time required to decrement
                     126            ; EDATA2 (approx 1/256 time of main loop) ignored.
004E 00              127            NOP                                                       ; 1 
004F 00              128            NOP                                                       ; 1
0050 00              129            NOP                                                       ; 1
0051 00              130            NOP                                                       ; 1
0052 D5BCF9          131            DJNZ    EDATA1, BLINKLOOP                                 ; 2
0055 D5BDF6          132            DJNZ    EDATA2, BLINKLOOP ; EDATA1 overflows back to FFh    
                     133    
0058 22              134            RET
                     135    
                     136    ;____________________________________________________________________
                     137    
0059                 138    RECORDTIME:
                     139            ; Record how long button is pressed for and store in EDATA3/2/1 
0059 E4              140            CLR     A
005A F582            141            MOV     DPL,A
005C F583            142            MOV     DPH,A          ; clear DPTR
                     143    
005E B2B3            144            CPL     LED
                     145    
                     146            ; measure how long the button is either pressed or released 
                     147            ; for. If the button is pressed then the LED is on. If the 
                     148            ; button is released then the LED is off.
0060                 149    RECORDLOOP:
0060 A3              150            INC     DPTR            ; incrementing DPTR..           ;  2
0061 30B304          151            JNB     LED, CHKB                                       ;  2
0064 30B2F9          152            JNB     BUTTON,RECORDLOOP                               ;  2
                     153                                    ; keep recording while button is pressed
0067 22              154            RET                    
0068 20B2F5          155    CHKB:   JB      BUTTON,RECORDLOOP                               ;  2
                     156                                    ; keep recording while button is released
006B 22              157            RET
                     158    
                     159    ; DPH,DPL now holds a number that represents the length of
                     160    ; time between button edges.  this data will be stored in FlashEE
                     161    ; space for use in controlling LED on and off times in "play" mode.
                     162    
                     163    ;____________________________________________________________________
                     164    
                     165    
                     166    END

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

BLINK. . . . . . . . . . . . . .  C ADDR  0043H  
BLINKLOOP. . . . . . . . . . . .  C ADDR  004EH  
BUTTON . . . . . . . . . . . . .    NUMB  00B2H  
CHKB . . . . . . . . . . . . . .  C ADDR  0068H  
DPH. . . . . . . . . . . . . . .  D ADDR  0083H  PREDEFINED  
DPL. . . . . . . . . . . . . . .  D ADDR  0082H  PREDEFINED  
EADRL. . . . . . . . . . . . . .  D ADDR  00C6H  PREDEFINED  
ECON . . . . . . . . . . . . . .  D ADDR  00B9H  PREDEFINED  
EDATA1 . . . . . . . . . . . . .  D ADDR  00BCH  PREDEFINED  
EDATA2 . . . . . . . . . . . . .  D ADDR  00BDH  PREDEFINED  
EDATA4 . . . . . . . . . . . . .  D ADDR  00BFH  PREDEFINED  
ERASE. . . . . . . . . . . . . .    NUMB  0005H  NOT USED  
ERASEALL . . . . . . . . . . . .    NUMB  0006H  
F0 . . . . . . . . . . . . . . .  B ADDR  00D5H  PREDEFINED  
LED. . . . . . . . . . . . . . .    NUMB  00B3H  
MAIN . . . . . . . . . . . . . .  C ADDR  0000H  NOT USED  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
PLAYBACK . . . . . . . . . . . .  C ADDR  000DH  NOT USED  
PREVIOUS . . . . . . . . . . . .    NUMB  00D5H  NOT USED  
READ . . . . . . . . . . . . . .    NUMB  0001H  
READFLASH. . . . . . . . . . . .  C ADDR  0005H  
RECORD . . . . . . . . . . . . .  C ADDR  0017H  
RECORDLOOP . . . . . . . . . . .  C ADDR  0060H  
RECORDTIME . . . . . . . . . . .  C ADDR  0059H  
RECORD_NEXT_TIME . . . . . . . .  C ADDR  0022H  
VERIFY . . . . . . . . . . . . .    NUMB  0004H  
WRITE. . . . . . . . . . . . . .    NUMB  0002H  

⌨️ 快捷键说明

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