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

📄 crtatmegaram.lis

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 LIS
字号:
 0000           ; make sure to assemble w/ -n flag, e.g.
 0000           ; iasavr -n crt...
 0000           
                        .area func_lit(rom)
 0000           __func_lit_start::
                        .area lit(rom)
 0000           __lit_start::
                        .area idata(rom)
 0000           __idata_start::
                        .area text(rom)
 0000           __text_start::
                        .area data(ram)
 0000           __data_start::
                        .area bss(ram)
 0000           __bss_start::
 0000           
                        .text
 0000           __start::			; entry point
 0035           	MCUCR	= 0x35
 0000           
 0000 00E8              ldi             R16,0x80                ; extern RAM enable
 0002 10E0              ldi             R17,FRAM
 0004 10FF              sbrs    R17,0
 0006 0064              ori             R16,0x40                ; wait state
 0008 05BF              out             MCUCR,R16
 0000           	USE_ELPM = 0
 000A C0E0              ldi R28,<ram_end
 000C D0E0              ldi R29,>ram_end
 000E CDBF              out $3D,R28
 0010 DEBF              out $3E,R29
 0012 C050              subi R28,<hwstk_size
 0014 D040              sbci R29,>hwstk_size
 0016           
 0016 0AEA              ldi R16,0xAA    ; sentenial
 0018 0883              std     Y+0,R16         ; put sentenial at bottom of HW stack
 001A           
 001A 0024              clr R0
 001C E0E0              ldi R30,<__bss_start
 001E F0E0              ldi R31,>__bss_start
 0020 10E0              ldi R17,>__bss_end
 0022           
 0022           ; this loop zeros out all the data in the bss area
 0022           ;
 0022           init_loop:
 0022 E030              cpi R30,<__bss_end
 0024 F107              cpc R31,R17
 0026 11F0              breq init_done
 0028 0192              st Z+,R0
 002A FBCF              rjmp init_loop
 002C           init_done:
 002C           
 002C 0083              std Z+0,R16             ; put sentenial at bottom of SW stack
 002E           
 002E           ; copy data from idata to data
 002E           ; idata contains the initialized values of the global variables
 002E           
 002E E0E0              ldi R30,<__idata_start
 0030 F0E0              ldi R31,>__idata_start
 0032 A0E0              ldi R26,<__data_start
 0034 B0E0              ldi R27,>__data_start
 0036 10E0              ldi R17,>__idata_end
 0038           
                  .if USE_ELPM
                        ; set RAMPZ to 1
                        ldi R16,1
                        out 0x3B,R16
                  .endif
 0038           copy_loop:
 0038 E030              cpi R30,<__idata_end
 003A F107              cpc R31,R17
 003C 21F0              breq copy_done
                  .if USE_ELPM
                        elpm    ; load (RAMPZ:Z)
                  .else
 003E C895              lpm     ; load (Z) byte into R0
                  .endif
 0040 3196              adiw R30,1
 0042 0D92              st X+,R0
 0044 F9CF              rjmp copy_loop
 0046           copy_done:
 0046           
 0046           ; call user main routine
 0046 0E940000          call _main
 004A           _exit::
 004A FFCF              rjmp    _exit
 004C           
 004C           ; interrupt vectors. The first entry is the reset vector
 004C           ;
                        .area vector(abs)
                        .org 0
 0000 0C940000          jmp __start

⌨️ 快捷键说明

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