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

📄 main.lst

📁 实现了avr下对sd卡的读写,支持文件存取,删除的功能
💻 LST
字号:
   1               		.file	"main.c"
   2               		.arch atmega32
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
 102               	.global	port_init
 104               	port_init:
   1:main.c        **** //-------------------------------------------------------------------------
   2:main.c        **** #include	<avr/io.h>
   3:main.c        **** #include 	<stdint.h>
   4:main.c        **** #include 	<avr/interrupt.h>
   5:main.c        **** #include 	<avr/pgmspace.h>
   6:main.c        **** 
   7:main.c        **** #include	"main.h"
   8:main.c        **** #include	"mmc.h"
   9:main.c        **** #include	"FAT16.h"
  10:main.c        **** //-------------------------------------------------------------------------
  11:main.c        **** void port_init(void){
 106               	.LM1:
 107               	/* prologue: frame size=0 */
 108               	/* prologue end (size=0) */
 109               	/* epilogue: frame size=0 */
 110 0000 0895      		ret
 111               	/* epilogue end (size=1) */
 112               	/* function port_init size 1 (0) */
 114               	.Lscope0:
 116               	.global	ioinit
 118               	ioinit:
  12:main.c        **** }
  13:main.c        **** //-------------------------------------------------------------------------
  14:main.c        **** void ioinit(void){
 120               	.LM2:
 121               	/* prologue: frame size=0 */
 122               	/* prologue end (size=0) */
  15:main.c        **** 	cli(); 				//disable all interrupts
 124               	.LM3:
 125               	/* #APP */
 126 0002 F894      		cli
  16:main.c        **** 	port_init();
  17:main.c        **** 	mmcInit();
 128               	.LM4:
 129               	/* #NOAPP */
 130 0004 0E94 0000 		call mmcInit
  18:main.c        **** 	InitFat16();
 132               	.LM5:
 133 0008 0E94 0000 		call InitFat16
  19:main.c        **** 	
  20:main.c        **** 	MCUCR = 0x00;//MCU控制寄存器MCUCR ,控制寄存器包含了电源管理的控制位,休眠模式选择位 2、1 ,Bit 6 – 
 135               	.LM6:
 136 000c 15BE      		out 85-0x20,__zero_reg__
  21:main.c        **** 	GICR  = 0x00;//中断控制寄存器GICR 
 138               	.LM7:
 139 000e 1BBE      		out 91-0x20,__zero_reg__
  22:main.c        **** 	TIMSK = 0x00;////timer interrupt sources 
 141               	.LM8:
 142 0010 19BE      		out 89-0x20,__zero_reg__
  23:main.c        **** 	sei(); 				//re-enable interrupts
 144               	.LM9:
 145               	/* #APP */
 146 0012 7894      		sei
 147               	/* #NOAPP */
 148               	/* epilogue: frame size=0 */
 149 0014 0895      		ret
 150               	/* epilogue end (size=1) */
 151               	/* function ioinit size 12 (11) */
 153               	.Lscope1:
 154               		.data
 155               	.LC0:
 156 0000 5344 5F46 		.string	"SD_FAT16TXT"
 156      4154 3136 
 156      5458 5400 
 157               	.LC1:
 158 000c 4966 2079 		.string	"If you look this content,the file was created success!"
 158      6F75 206C 
 158      6F6F 6B20 
 158      7468 6973 
 158      2063 6F6E 
 159               		.text
 161               	.global	main
 163               	main:
  24:main.c        **** }
  25:main.c        **** //-------------------------------------------------------------------------
  26:main.c        **** int main(void){
 165               	.LM10:
 166               	/* prologue: frame size=65 */
 167 0016 C0E0      		ldi r28,lo8(__stack - 65)
 168 0018 D0E0      		ldi r29,hi8(__stack - 65)
 169 001a DEBF      		out __SP_H__,r29
 170 001c CDBF      		out __SP_L__,r28
 171               	/* prologue end (size=4) */
  27:main.c        **** 	uint8_t ok;
  28:main.c        **** 	uint8_t Name[11]="SD_FAT16TXT";
 173               	.LM11:
 174 001e 6E01      		movw r12,r28
 175 0020 0894      		sec
 176 0022 C11C      		adc r12,__zero_reg__
 177 0024 D11C      		adc r13,__zero_reg__
 178 0026 8BE0      		ldi r24,lo8(11)
 179 0028 E0E0      		ldi r30,lo8(.LC0)
 180 002a F0E0      		ldi r31,hi8(.LC0)
 181 002c D601      		movw r26,r12
 182 002e 0190      		ld __tmp_reg__,Z+
 183 0030 0D92      		st X+,__tmp_reg__
 184 0032 8A95      		dec r24
 185 0034 E1F7      		brne .-8
  29:main.c        **** 	uint8_t buffer[54]=
 187               	.LM12:
 188 0036 8E01      		movw r16,r28
 189 0038 045F      		subi r16,lo8(-(12))
 190 003a 1F4F      		sbci r17,hi8(-(12))
 191 003c 86E3      		ldi r24,lo8(54)
 192 003e E0E0      		ldi r30,lo8(.LC1)
 193 0040 F0E0      		ldi r31,hi8(.LC1)
 194 0042 D801      		movw r26,r16
 195 0044 0190      		ld __tmp_reg__,Z+
 196 0046 0D92      		st X+,__tmp_reg__
 197 0048 8A95      		dec r24
 198 004a E1F7      		brne .-8
  30:main.c        **** 		"If you look this content,the file was created success!";//这个 buffer和BUFFER不是同一个
  31:main.c        **** 	
  32:main.c        **** 	ioinit();
 200               	.LM13:
 201 004c 0E94 0000 		call ioinit
  33:main.c        **** 	
  34:main.c        **** 	ok=CreateFile(Name,(uint32_t)54);				//建立长度为54的空文件,然后在去 找到这个文件名的 位置写上去
 203               	.LM14:
 204 0050 46E3      		ldi r20,lo8(54)
 205 0052 50E0      		ldi r21,hi8(54)
 206 0054 60E0      		ldi r22,hlo8(54)
 207 0056 70E0      		ldi r23,hhi8(54)
 208 0058 C601      		movw r24,r12
 209 005a 0E94 0000 		call CreateFile
  35:main.c        **** 	if(ok==SD_FAIL)return 1;						//文件已存在,退出
 211               	.LM15:
 212 005e 8130      		cpi r24,lo8(1)
 213 0060 61F0      		breq .L3
  36:main.c        **** 	
  37:main.c        **** 	WriteFile(Name,(uint32_t)0,(uint32_t)54,buffer);	//将buffer写入文件,这里的从头写到尾
 215               	.LM16:
 216 0062 7801      		movw r14,r16
 217 0064 06E3      		ldi r16,lo8(54)
 218 0066 10E0      		ldi r17,hi8(54)
 219 0068 20E0      		ldi r18,hlo8(54)
 220 006a 30E0      		ldi r19,hhi8(54)
 221 006c 40E0      		ldi r20,lo8(0)
 222 006e 50E0      		ldi r21,hi8(0)
 223 0070 60E0      		ldi r22,hlo8(0)
 224 0072 70E0      		ldi r23,hhi8(0)
 225 0074 C601      		movw r24,r12
 226 0076 0E94 0000 		call WriteFile
 227               	.L3:
  38:main.c        **** 	/*
  39:main.c        **** 	for(i=0;i<54;i++)buffer[i]=0;
  40:main.c        **** 	ReadFile(Name,(uint32_t)0,(uint32_t)54,buffer);	//将文件读入buffer
  41:main.c        **** 	
  42:main.c        **** 	EreaseFile(Name);								//删除文件
  43:main.c        **** 	*/
  44:main.c        **** 	return 1;
  45:main.c        **** }
 229               	.LM17:
 230 007a 81E0      		ldi r24,lo8(1)
 231 007c 90E0      		ldi r25,hi8(1)
 232               	/* epilogue: frame size=65 */
 233 007e 0C94 0000 		jmp exit
 234               	/* epilogue end (size=2) */
 235               	/* function main size 54 (48) */
 241               	.Lscope2:
 242               		.text
 244               	Letext:
 245               	/* File "main.c": code   67 = 0x0043 (  59), prologues   4, epilogues   4 */
DEFINED SYMBOLS
                            *ABS*:00000000 main.c
C:\Users\summer\AppData\Local\Temp/ccCueaaa.s:3      *ABS*:0000003f __SREG__
C:\Users\summer\AppData\Local\Temp/ccCueaaa.s:4      *ABS*:0000003e __SP_H__
C:\Users\summer\AppData\Local\Temp/ccCueaaa.s:5      *ABS*:0000003d __SP_L__
C:\Users\summer\AppData\Local\Temp/ccCueaaa.s:6      *ABS*:00000000 __tmp_reg__
C:\Users\summer\AppData\Local\Temp/ccCueaaa.s:7      *ABS*:00000001 __zero_reg__
C:\Users\summer\AppData\Local\Temp/ccCueaaa.s:104    .text:00000000 port_init
C:\Users\summer\AppData\Local\Temp/ccCueaaa.s:118    .text:00000002 ioinit
C:\Users\summer\AppData\Local\Temp/ccCueaaa.s:163    .text:00000016 main
C:\Users\summer\AppData\Local\Temp/ccCueaaa.s:244    .text:00000082 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
mmcInit
InitFat16
__stack
CreateFile
WriteFile
exit

⌨️ 快捷键说明

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