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

📄 boot832.lst

📁 ADuC831的详细的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
BOOT832                                                                                                       PAGE 1

                       1    ;********************************************************************
                       2    ;
                       3    ; Author        : ADI - Apps            www.analog.com/MicroConverter
                       4    ;
                       5    ; Date          : April 2002
                       6    ;
                       7    ; File          : Boot832.asm
                       8    ;
                       9    ; Hardware      : ADuC832
                      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    $MOD832
  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
BOOT832                                                                                                       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 at fastest freq
0034 75D700           70            MOV     PLLCON, #0      
                      71    
                      72            ; configure UART for 115200
0037 759E82           73            MOV     T3CON, #82h
003A 759D09           74            MOV     T3FD, #09h
003D 759852           75            MOV     SCON, #52H
                      76            
                      77            ; THIS SIMPLE BLINK ROUTINE REPRESENTS THE MAIN PROGRAM
0040                  78    BLINK:
0040 B2B4             79            CPL     P3.4
0042 120047           80            CALL    DELAY
0045 0140             81            AJMP    BLINK
                      82    
                      83    
                      84    ;____________________________________________________________________
                      85                                                                  ; DELAY
0047                  86    DELAY:
                      87            ; 92ms DELAY
0047 78FF             88            MOV     R0,#255
0049                  89    DLY:
0049 79FF             90            MOV     R1,#255                 ; 205 x 255 x 1.43us
004B D9FE             91            DJNZ    R1,$
004D D8FA             92            DJNZ    R0,DLY
                      93    
004F 22               94            RET
                      95    ;____________________________________________________________________
                      96    
                      97    
                      98    ;**********************************************************************
                      99    ;                               EXAMPLE BOOTLOAGER CODE
                     100    ;**********************************************************************
----                 101    CSEG
E000                 102    ORG 0E000h
                     103            ; read BOOTEN
E000 75C700          104            MOV     EADRH, #0
E003 75C600          105            MOV     EADRl, #0
E006 75B901          106            MOV     ECON, #1                        ; read page
E009 E5BC            107            MOV     A, EDATA1
E00B 20E00C          108            JB      ACC.0, BOOTLOADER
                     109    
                     110            ; reset EDATA1-4 before running user code
E00E E4              111            CLR     A
E00F F5BC            112            MOV     EDATA1, A
E011 F5BD            113            MOV     EDATA2, A
E013 F5BE            114            MOV     EDATA3, A
E015 F5BF            115            MOV     EDATA4, A
E017 020000          116            LJMP    0000H
BOOT832                                                                                                       PAGE 3

                     117    
E01A                 118    BOOTLOADER:
                     119            ; clear the deliberate WDT reset
E01A D2C0            120            SETB    WDWR
E01C 75C010          121            MOV     WDCON, #10H
                     122    
                     123            ; configure UART for 115200 baud
E01F 75D700          124            MOV     PLLCON, #0                      ; run core at max speed
E022 759E82          125            MOV     T3CON, #82H
E025 759D09          126            MOV     T3FD, #09h
E028 759852          127            MOV     SCON,#52h
                     128    
                     129            ; configure in ULOAD mode
E02B 75B9F0          130            MOV     ECON, #0F0h
                     131    
E02E                 132    GETCOMMAND:
E02E 12E0FA          133            CALL    RECBYTE
E031 B44502          134            CJNE    A, #'E', $+5
E034 0142            135            AJMP    ERASECOMMAND
E036 B44402          136            CJNE    A, #'D', $+5
E039 0150            137            AJMP    DOWNLOADCOMMAND
E03B B44F02          138            CJNE    A, #'O', $+5
E03E 01A1            139            AJMP    DOWNLOADOKCOMMAND
E040 210E            140            AJMP    SENDNACK
                     141    
                     142    ;====================================================================
                     143    ;                          ERASE CODE
                     144    ;====================================================================
E042                 145    ERASECOMMAND:
                     146            ; wait for erase command
                     147            ; <'E'><CS>
E042 12E0FA          148            CALL    RECBYTE
E045 2445            149            ADD     A,#'E'
E047 6002            150            JZ      ERASEOK
E049 210E            151            AJMP    SENDNACK
                     152    
E04B                 153    ERASEOK:
                     154            ; erase 56kbytes of code space
E04B 75B906          155            MOV     ECON, #6
                     156    
                     157            ; send ACK
E04E 210A            158            AJMP    SENDACK
                     159    
                     160    ;====================================================================
                     161    ;                          DOWNLOAD CODE
                     162    ;====================================================================
E050                 163    DOWNLOADCOMMAND:
                     164            ; wait for download command
                     165            ; <'D'><PAGEADD><DATA0->255><CS>
                     166    
E050 7844            167            MOV     R0, #'D'
                     168            ; get page address
E052 12E0FA          169            CALL    RECBYTE
E055 F5C7            170            MOV     EADRH, A
E057 75C60D          171            mov     eadrl, #13
E05A 28              172            ADD     A, R0
E05B F8              173            MOV     R0, A
                     174    
BOOT832                                                                                                       PAGE 4

                     175            ; check for page address >E0h
E05C E5C7            176            MOV     A, EADRH
E05E B4E000          177            CJNE    A, #0E0H, $+3
E061 4002            178            JC      ADDRESSOK               ; C=0 for EADRH < E0h
E063 210E            179            AJMP    SENDNACK
                     180    
E065                 181    ADDRESSOK:
E065 900000          182            MOV     DPTR, #0
E068 7900            183            MOV     R1, #0                  ; count
E06A 75AF01          184            MOV     CFG832, #1              ; int XRAM
E06D                 185    READDATA:
E06D 11FA            186            ACALL   RECBYTE
E06F F0              187            MOVX    @DPTR, A
E070 A3              188            INC     DPTR
E071 28              189            ADD     A, R0

⌨️ 快捷键说明

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