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

📄 startup400.lst

📁 这是TCP/IP协议组播的实现代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
00A8.2              +1  219     sbit EX1   = IE^2;
00A8.1              +1  220     sbit ET0   = IE^1;
00A8.0              +1  221     sbit EX0   = IE^0;
                    +1  222     
00B8.6              +1  223     sbit PS1   = IP^6;
00B8.5              +1  224     sbit PT2   = IP^5;
00B8.4              +1  225     sbit PS0   = IP^4;
00B8.3              +1  226     sbit PT1   = IP^3;
00B8.2              +1  227     sbit PX1   = IP^2;
00B8.1              +1  228     sbit PT0   = IP^1;
00B8.0              +1  229     sbit PX0   = IP^0;
                    +1  230     
0098.7              +1  231     sbit SM0   = SCON0^7; /* Alternate SM0_FE_0 */
0098.6              +1  232     sbit SM1   = SCON0^6; /* Alternate SM1_0 */
0098.5              +1  233     sbit SM2   = SCON0^5; /* Alternate SM2_0 */
0098.4              +1  234     sbit REN   = SCON0^4; /* Alternate REN_0 */
0098.3              +1  235     sbit TB8   = SCON0^3; /* Alternate TB8_0 */
0098.2              +1  236     sbit RB8   = SCON0^2; /* Alternate RB8_0 */
0098.1              +1  237     sbit TI    = SCON0^1; /* Alternate TI_0  */
0098.0              +1  238     sbit RI    = SCON0^0; /* Alternate RI_0  */
                    +1  239     
00C0.7              +1  240     sbit SM01  = SCON1^7; /* Alternate SM0_FE_1 */
00C0.6              +1  241     sbit SM11  = SCON1^6; /* Alternate SM1_1 */
00C0.5              +1  242     sbit SM21  = SCON1^5; /* Alternate SM2_1 */
00C0.4              +1  243     sbit REN1  = SCON1^4; /* Alternate REN_1 */
00C0.3              +1  244     sbit TB81  = SCON1^3; /* Alternate TB8_1 */
00C0.2              +1  245     sbit RB81  = SCON1^2; /* Alternate RB8_1 */
00C0.1              +1  246     sbit TI1   = SCON1^1; /* Alternate TI_1  */
00C0.0              +1  247     sbit RI1   = SCON1^0; /* Alternate RI_1  */
                    +1  248     
00C8.7              +1  249     sbit TF2   = T2CON^7;
00C8.6              +1  250     sbit EXF2  = T2CON^6;
00C8.5              +1  251     sbit RCLK  = T2CON^5;
00C8.4              +1  252     sbit TCLK  = T2CON^4;
00C8.3              +1  253     sbit EXEN2 = T2CON^3;
00C8.2              +1  254     sbit TR2   = T2CON^2;
00C8.1              +1  255     sbit C_T2  = T2CON^1;
00C8.0              +1  256     sbit CP_RL2= T2CON^0;
AX51 MACRO ASSEMBLER  STARTUP400                                                            11/04/06 11:07:36 PAGE     5

                    +1  257     
00D8.7              +1  258     sbit SMOD_1= WDCON^7;
00D8.6              +1  259     sbit POR   = WDCON^6;
00D8.5              +1  260     sbit EPF1  = WDCON^5;
00D8.4              +1  261     sbit PF1   = WDCON^4;
00D8.3              +1  262     sbit WDIF  = WDCON^3;
00D8.2              +1  263     sbit WTRF  = WDCON^2;
00D8.1              +1  264     sbit EWT   = WDCON^1;
00D8.0              +1  265     sbit RWT   = WDCON^0;
                    +1  266     
                    +1  267     
00E8.7              +1  268     sbit EPMIE = EIE^7;
00E8.6              +1  269     sbit C0IE  = EIE^6;
                    +1  270     
00E8.5              +1  271     sbit EAIE  = EIE^5;
00E8.4              +1  272     sbit EWDI  = EIE^4;
                    +1  273     
00E8.3              +1  274     sbit EWPI  = EIE^3;
                    +1  275     
00E8.2              +1  276     sbit ES2   = EIE^2;
                    +1  277     
00E8.1              +1  278     sbit ET3   = EIE^1;
                    +1  279     
00E8.0              +1  280     sbit EX25  = EIE^0;
                    +1  281     
                    +1  282     
00F8.7              +1  283     sbit EPMIP = EIP^7;
00F8.6              +1  284     sbit C0IP  = EIP^6;
00F8.5              +1  285     sbit EAIP  = EIP^5;
00F8.4              +1  286     sbit PWDI  = EIP^4;
00F8.3              +1  287     sbit PWPI  = EIP^3; /* Alternate PC3 */
00F8.2              +1  288     sbit PS2   = EIP^2; /* Alternate PC2 */
00F8.1              +1  289     sbit PT3   = EIP^1; /* Alternate PC1 */
00F8.0              +1  290     sbit PX2_5 = EIP^0; /* Alternate PC0 */
                    +1  291     
                    +1  292     
                        293     
                        294     EXTERN ECODE(init_romexport)
                        295     
                        296     ;****************************************************************************
                        297     ; 
                        298     ; BEGIN CONFIGURABLE OPTIONS
                        299     ;
                        300     ; Set USE_MONITOR to 0 to configure this program to load into bank 40 (flash on TINIm400
                               )
                        301     ; Set USE_MONITOR to 1 to configure this program to load into bank 20 (RAM on TINIm400)
                        302     ;     where it is suitable for use by the Keil monitor.
                        303     ;
                        304     $set  (USE_MONITOR = 0)
                        305     
                        306     ;
                        307     ; Set XTALMULT to 2 or 4 to use the crystal doubler or quadrupler.
                        308     ; Set XTALMULT to 1 to use the default.  Do not use other
                        309     ; values for XTALMULT.
                        310     ;
                        311     $set  (XTALMULT = 4)
                        312     
                        313     ;
                        314     ; Set the OSCILLATOR_FREQ value to the value of the oscillator you are using.
                        315     ; The TINIm400 uses a 14745600 Hz oscillator.  DO NOT CHANGE THIS VALUE TO
                        316     ; REFLECT THE USE OF THE CRYSTAL MULTIPLIER.
                        317     ;
 01194000               318     OSCILLATOR_FREQ equ 18432000
                        319     ;OSCILLATOR_FREQ equ 14745600
                        320     ;
                        321     ; Set SERIAL0_BAUDRATE to the baud rate you want to get standard output at.
AX51 MACRO ASSEMBLER  STARTUP400                                                            11/04/06 11:07:36 PAGE     6

                        322     ; Default is 115200.
                        323     ;
 0001C200               324     SERIAL0_BAUDRATE equ 115200
                        325     
                        326     
                        327     ;
                        328     ; Set USE_REENTRANT_STACK to 1 to use Keil's reentrant stack (allows 
                        329     ; recursive function calls and for multiple processes to call a single 
                        330     ; function simultaneously).  Set REENTRANT_STACK_TOP to the top of the 
                        331     ; reentrant stack if USE_REENTRANT_STACK is 1.
                        332     ;
                        333     $set  (USE_REENTRANT_STACK = 0)
 FFFF                   334     REENTRANT_STACK_TOP equ 0FFFFh
                        335     
                        336     ;
                        337     ; Set SETMAC to 1 to give the TINI a specific MAC ID as defined by 
                        338     ; the equates MAC_MSB, MAC_5, ..., MAC_LSB.  Set SETMAC to 2 to
                        339     ; set registers r5:r4:r3:r2:r1:r0 to your own MAC ID (see 'User MAC Code'
                        340     ; below).  Use a SETMAC of 0 to find the MAC in a 2502-E48.
                        341     ;
                        342     $set  (SETMAC = 0)
                        343     
 0000                   344     MAC_MSB equ 00h
 0060                   345     MAC_5   equ 60h
 0062                   346     MAC_4   equ 62h
 0063                   347     MAC_3   equ 63h
 0064                   348     MAC_2   equ 64h
 0065                   349     MAC_1   equ 65h
 0067                   350     MAC_LSB equ 67h
                        351     
                        352     ;
                        353     ; Change ERASE_IDATA to erase the internal data memory before the program begins. 
                        354     ;
 0000                   355     ERASE_IDATA     equ     0h      ; the amount of IDATA memory to erase
                        356     
                        357     ;
                        358     ; Change length from 0 to erase starting at address ERASE_XDATA_ADDR for 
                        359     ; ERASE_XDATA_LEN bytes.
                        360     ;
 0000                   361     ERASE_XDATA_ADDR equ    0h      ; the absolute start-address of XDATA memory
 0000                   362     ERASE_XDATA_LEN  equ    0h      ; the length of XDATA memory in bytes. 
                        363     
                        364     ;
                        365     ; END OF CONFIGURABLE OPTIONS
                        366     ;
                        367     ;****************************************************************************
 FFFB                   368     TIMER_RELOAD equ (65536 - ((OSCILLATOR_FREQ) / (32 * SERIAL0_BAUDRATE)))
                        369     
                        370     
                        371     $if  (USE_REENTRANT_STACK <> 0)
                                C_XBP_SEG       SEGMENT DATA AT 070H
                                                RSEG    C_XBP_SEG
                                
                                ?C_XBP:         DSB     2
                                
                                XBPSTACKTOP     equ REENTRANT_STACK_TOP + 1
                                
                                Public ?C_XBP
                                $endif 
                        381     
                        382     
                        383                     name    ?C_STARTUP
                        384                     ;
                        385                     ; Make sure the compiler does not use the OS flags & bits
                        386                     ;
000008                  387                     DSEG at 08h
AX51 MACRO ASSEMBLER  STARTUP400                                                            11/04/06 11:07:36 PAGE     7

000008                  388     regbank123:     ds      24
                        389     
000020                  390                     DSEG AT 20h
000020                  391     wos_flags:      ds      1
                        392     
000027                  393                     DSEG AT 27h
000027                  394     rom_flags:      ds      1
                        395     
000068                  396                     DSEG AT 68h
000068                  397     wos_crit_count: ds      1
                        398     
00006B                  399                     DSEG AT 6Bh
00006B                  400     sched_reload:   ds      2
00006D                  401     curr_pc:        ds      3
                        402     
000072                  403                     DSEG AT 72h
000072                  404     sched:          ds      3
000075                  405     ms_count:       ds      5
                        406     
00007B                  407                     DSEG AT 7Bh
00007B                  408     hb_chandle:     ds      5
                        409     
                        410     
                        411                     extrn code (?C_START)
                        412                     public  ?C_STARTUP
                        413     
                        414     $if  (USE_MONITOR = 0)
060000                  415     ?C_CPURESET?0   segment code at 060000H
                        416     $endif 
                        417     $if  (USE_MONITOR = 1)
                                ?C_CPURESET?0   segment code at 80000H
                                $endif 
                        420     
------                  421                     rseg    ?C_CPURESET?0
060000 8005             422     ?C_STARTUP:     sjmp    past_loader_tag
060002 54494E49         423                     db     'TINI'                              ; Tag for TINI Environment 1.
                               02c
                        424     ;                 db     'secd'                            ; or later (ignored in 1.02b)
060006 06               425                     db      byte2(?C_STARTUP)                  ; Target bank
060007                  426     past_loader_tag:
060007 C2AF             427                     clr     ea                                 ; No interrupts, please
                        428     
                        429                     ;
                        430                     ; Make sure we are in contiguous mode
                        431                     ;
060009 75C7AA           432                     mov     ta, #0xAA                          ; Enable access to ACON
06000C 75C755           433                     mov     ta, #0x55
06000F 439D02           434                     orl     acon, #2                           ; 24 bit mode
060012 02000000   F     435                     ljmp    far sanity_check                   ; Sanity check: Make sure 24 
                               bit mode is on
060016                  436     sanity_check:
060016 75C7AA           437                     mov     ta, #0xAA                          ; Enable access to MCON
060019 75C755           438                     mov     ta, #0x55
06001C 75C6AD           439                     mov     mcon, #0xAD                        ; Relocate RAM, data memory
06001F 75C7AA           440                     mov     ta, #0xAA                          ; Enable access to ACON
060022 75C755           441                     mov     ta, #0x55
060025 439D04           442                     orl     acon, #0x04                        ; Extended stack

⌨️ 快捷键说明

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