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

📄 init.s

📁 avr上的RTOS
💻 S
字号:
; init.s;; to be included by the crt*.s files;	; initialize stacks	;	; set the hardware stack to ram_end, and the software stack some	; bytes below that	ldi R28,<ram_end	ldi R29,>ram_end	out $3D,R28	out $3E,R29	subi R28,<hwstk_size	sbci R29,>hwstk_size	ldi R16,0xAA	; sentenial	std	Y+0,R16		; put sentenial at bottom of HW stack	clr R0	ldi R30,<__bss_start	ldi R31,>__bss_start	ldi R17,>__bss_end; this loop zeros out all the data in the bss area;init_loop:	cpi R30,<__bss_end	cpc R31,R17	breq init_done	st Z+,R0	rjmp init_loopinit_done:	std Z+0,R16		; put sentenial at bottom of SW stack; copy data from idata to data; idata contains the initialized values of the global variables	ldi R30,<__idata_start	ldi R31,>__idata_start	ldi R26,<__data_start	ldi R27,>__data_start	ldi R17,>__idata_end  .if USE_ELPM	; set RAMPZ to 1	ldi R16,1	out 0x3B,R16  .endifcopy_loop:	cpi R30,<__idata_end	cpc R31,R17	breq copy_done  .if USE_ELPM	elpm	; load (RAMPZ:Z)  .else	lpm 	; load (Z) byte into R0  .endif	adiw R30,1	st X+,R0	rjmp copy_loopcopy_done:

⌨️ 快捷键说明

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