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

📄 boot831.lst

📁 大量ADuc831的程序员代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
BOOT831                                                                                                       PAGE 1

                       1    ;********************************************************************
                       2    ;
                       3    ; Author        : ADI - Apps            www.analog.com/MicroConverter
                       4    ;
                       5    ; Date          : April 2002
                       6    ;
                       7    ; File          : Boot831.asm
                       8    ;
                       9    ; Hardware      : ADuC831
                      10    ;
                      11    ; Description   : Example bootloader program that lies in upper
                      12    ;                       6kbytes of the 62kByte code space. This bootloader
                      13    ;                       can be used to download to the bottom 56kBytes. 
                      14    ;
                      15    ;                       NOTE: This program will only work if the option to
                      16    ;                       always run code from E000H after download is
                      17    ;                               selected.
                      18    ;
                      19    ;********************************************************************
                      20    $MOD831
  0006                21    ACK             EQU     06H
  0015                22    NACK            EQU     15H
                      23    
                      24    ;**********************************************************************
                      25    ;                               EXAMPLE USER CODE
                      26    ;**********************************************************************
----                  27    CSEG
0000                  28    ORG     0000H
                      29    
0000 012E             30    AJMP     MAIN
                      31    
                      32    ;____________________________________________________________________
                      33                                                               ; INT0 ISR
0003                  34    ORG     0003H
                      35            ; wait to receive a character from the UART
0003 3098FD           36            JNB     RI, $                           ; wait for reception
0006 C298             37            CLR     RI
0008 E599             38            MOV     A, SBUF
000A B45520           39            CJNE    A, #'U', ERROR
                      40    
                      41            ; plan to upgrade new code => set BOOTEN
000D 75C700           42            MOV     EADRH, #0
0010 75C600           43            MOV     EADRL, #0
0013 75B901           44            MOV     ECON, #1                        ; read page
0016 43BC01           45            ORL     EDATA1, #1                      ; SET LSB
0019 75B905           46            MOV     ECON, #5                        ; ERASE page
001C 75B902           47            MOV     ECON, #2                        ; program page
001F 75B904           48            MOV     ECON, #4                        ; verify page
0022 E5B9             49            MOV     A, ECON
0024 7007             50            JNZ     ERROR
                      51            ; use the watchdog timer to reset part...run from E000H after reset
0026 C2AF             52            CLR     EA                              ; disable interrupts for double
                      53                                                    ; write sequence
0028 D2C0             54            SETB    WDWR
002A 75C082           55            MOV     WDCON, #82h
                      56    
002D                  57    ERROR:  
002D 32               58            RETI
BOOT831                                                                                                       PAGE 2

                      59    
                      60    
                      61    ;____________________________________________________________________
                      62                                                                   ; MAIN
002E                  63    MAIN:   
                      64            ; enable INT0
002E D288             65            SETB    IT0                     ; INT0 edge triggered
0030 D2AF             66            SETB    EA                      ; enable inturrupts
0032 D2A8             67            SETB    EX0                     ; enable INT0
                      68    
                      69            ; configure UART for 115200
0034 759E81           70            MOV     T3CON, #81h
0037 759D20           71            MOV     T3FD, #20h
003A 759852           72            MOV     SCON, #52H
                      73            
                      74            ; THIS SIMPLE BLINK ROUTINE REPRESENTS THE MAIN PROGRAM
003D                  75    BLINK:
003D B2B4             76            CPL     P3.4
003F 120044           77            CALL    DELAY
0042 013D             78            AJMP    BLINK
                      79    
                      80    
                      81    ;____________________________________________________________________
                      82                                                                  ; DELAY
0044                  83    DELAY:
                      84            ; 70ms DELAY
0044 78FF             85            MOV     R0,#255
0046                  86    DLY:
0046 79FF             87            MOV     R1,#255                 ; 255 x 255 x 1.08us
0048 D9FE             88            DJNZ    R1,$
004A D8FA             89            DJNZ    R0,DLY
                      90    
004C 22               91            RET
                      92    ;____________________________________________________________________
                      93    
                      94    
                      95    ;**********************************************************************
                      96    ;                               EXAMPLE BOOTLOAGER CODE
                      97    ;**********************************************************************
----                  98    CSEG
E000                  99    ORG 0E000h
                     100            ; read BOOTEN
E000 75C700          101            MOV     EADRH, #0
E003 75C600          102            MOV     EADRl, #0
E006 75B901          103            MOV     ECON, #1                        ; read page
E009 E5BC            104            MOV     A, EDATA1
E00B 20E00C          105            JB      ACC.0, BOOTLOADER
                     106    
                     107            ; reset EDATA1-4 before running user code
E00E E4              108            CLR     A
E00F F5BC            109            MOV     EDATA1, A
E011 F5BD            110            MOV     EDATA2, A
E013 F5BE            111            MOV     EDATA3, A
E015 F5BF            112            MOV     EDATA4, A
E017 020000          113            LJMP    0000H
                     114    
E01A                 115    BOOTLOADER:
                     116            ; clear the deliberate WDT reset
BOOT831                                                                                                       PAGE 3

E01A D2C0            117            SETB    WDWR
E01C 75C010          118            MOV     WDCON, #10H
                     119    
                     120            ; configure UART for 115200 baud
                     121            
E01F 759E81          122            MOV     T3CON, #81H
E022 759D20          123            MOV     T3FD, #20h
E025 759852          124            MOV     SCON,#52h
                     125    
                     126            ; configure in ULOAD mode
E028 75B9F0          127            MOV     ECON, #0F0h
                     128    
E02B                 129    GETCOMMAND:
E02B 12E0F5          130            CALL    RECBYTE
E02E B44502          131            CJNE    A, #'E', $+5
E031 013F            132            AJMP    ERASECOMMAND
E033 B44402          133            CJNE    A, #'D', $+5
E036 014D            134            AJMP    DOWNLOADCOMMAND
E038 B44F02          135            CJNE    A, #'O', $+5
E03B 019E            136            AJMP    DOWNLOADOKCOMMAND
E03D 2109            137            AJMP    SENDNACK
                     138    
                     139    ;====================================================================
                     140    ;                          ERASE CODE
                     141    ;====================================================================
E03F                 142    ERASECOMMAND:
                     143            ; wait for erase command
                     144            ; <'E'><CS>
E03F 12E0F5          145            CALL    RECBYTE
E042 2445            146            ADD     A,#'E'
E044 6002            147            JZ      ERASEOK
E046 2109            148            AJMP    SENDNACK
                     149    
E048                 150    ERASEOK:
                     151            ; erase 56kbytes of code space
E048 75B906          152            MOV     ECON, #6
                     153    
                     154            ; send ACK
E04B 2105            155            AJMP    SENDACK
                     156    
                     157    ;====================================================================
                     158    ;                          DOWNLOAD CODE
                     159    ;====================================================================
E04D                 160    DOWNLOADCOMMAND:
                     161            ; wait for download command
                     162            ; <'D'><PAGEADD><DATA0->255><CS>
                     163    
E04D 7844            164            MOV     R0, #'D'
                     165            ; get page address
E04F 12E0F5          166            CALL    RECBYTE
E052 F5C7            167            MOV     EADRH, A
E054 75C60D          168            mov     eadrl, #13
E057 28              169            ADD     A, R0
E058 F8              170            MOV     R0, A
                     171    
                     172            ; check for page address >E0h
E059 E5C7            173            MOV     A, EADRH
E05B B4E000          174            CJNE    A, #0E0H, $+3
BOOT831                                                                                                       PAGE 4

E05E 4002            175            JC      ADDRESSOK               ; C=0 for EADRH < E0h
E060 2109            176            AJMP    SENDNACK
                     177    
E062                 178    ADDRESSOK:
E062 900000          179            MOV     DPTR, #0
E065 7900            180            MOV     R1, #0                  ; count
E067 43AF01          181            ORL     CFG831, #1              ; int XRAM
E06A                 182    READDATA:
E06A 11F5            183            ACALL   RECBYTE
E06C F0              184            MOVX    @DPTR, A
E06D A3              185            INC     DPTR
E06E 28              186            ADD     A, R0
E06F F8              187            MOV     R0, A

⌨️ 快捷键说明

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