📄 startup.asm
字号:
;CodeVisionAVR C Compiler
;(C) 1998-2004 Pavel Haiduc, HP InfoTech s.r.l.
;EXAMPLE STARTUP FILE FOR CodeVisionAVR V1.24.1 OR LATER
.EQU __CLEAR_START=0X60 ;START ADDRESS OF SRAM AREA TO CLEAR
;SET THIS ADDRESS TO 0X100 FOR THE
;ATmega128 OR ATmega64 CHIPS
.EQU __CLEAR_SIZE=256 ;SIZE OF SRAM AREA TO CLEAR IN BYTES
CLI ;DISABLE INTERRUPTS
CLR R30
OUT EECR,R30 ;DISABLE EEPROM ACCESS
;DISABLE THE WATCHDOG
LDI R31,0x18
OUT WDTCR,R31
OUT WDTCR,R30
OUT MCUCR,R30 ;MCUCR=0, NO EXTERNAL SRAM ACCESS
;CLEAR R2-R14
LDI R24,13
LDI R26,2
CLR R27
__CLEAR_REG:
ST X+,R30
DEC R24
BRNE __CLEAR_REG
;CLEAR SRAM
LDI R24,LOW(__CLEAR_SIZE)
LDI R25,HIGH(__CLEAR_SIZE)
LDI R26,LOW(__CLEAR_START)
LDI R27,HIGH(__CLEAR_START)
__CLEAR_SRAM:
ST X+,R30
SBIW R24,1
BRNE __CLEAR_SRAM
;GLOBAL VARIABLES INITIALIZATION
LDI R30,LOW(__GLOBAL_INI_TBL*2)
LDI R31,HIGH(__GLOBAL_INI_TBL*2)
__GLOBAL_INI_NEXT:
LPM
ADIW R30,1
MOV R24,R0
LPM
ADIW R30,1
MOV R25,R0
SBIW R24,0
BREQ __GLOBAL_INI_END
LPM
ADIW R30,1
MOV R26,R0
LPM
ADIW R30,1
MOV R27,R0
LPM
ADIW R30,1
MOV R1,R0
LPM
ADIW R30,1
MOV R22,R30
MOV R23,R31
MOV R31,R0
MOV R30,R1
__GLOBAL_INI_LOOP:
LPM
ADIW R30,1
ST X+,R0
SBIW R24,1
BRNE __GLOBAL_INI_LOOP
MOV R30,R22
MOV R31,R23
RJMP __GLOBAL_INI_NEXT
__GLOBAL_INI_END:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -