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

📄 main.lst

📁 单片机源代码
💻 LST
字号:
   1               		.file	"main.c"
   2               		.arch atmega8
   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:
  76               		.section	.progmem.data,"a",@progbits
  79               	__c.0:
  80 0000 C7EB CAE4 		.string	"\307\353\312\344\310\353\303\374\301\356\243\254w :\320\264 r: \266\301\n"
  80      C8EB C3FC 
  80      C1EE A3AC 
  80      7720 3AD0 
  80      B420 723A 
  83               	__c.1:
  84 0019 C7EB CAE4 		.string	"\307\353\312\344\310\353\327\326\267\373\264\256:\n"
  84      C8EB D7D6 
  84      B7FB B4AE 
  84      3A0A 00
  87               	__c.2:
  88 0028 B1A3 B4E6 		.string	"\261\243\264\346\315\352\263\311!\n"
  88      CDEA B3C9 
  88      210A 00
  89               		.data
  90               	.LC0:
  91 0000 2563 00   		.string	"%c"
  92               	.LC1:
  93 0003 2573 00   		.string	"%s"
  94               		.text
  96               	.global	main
  98               	main:
   1:main.c        **** /*
   2:main.c        **** 	avr-libc EEPROM 读写测试程序
   3:main.c        **** 	main.c
   4:main.c        **** 	MCU:atmega8
   5:main.c        **** 	
   6:main.c        **** 	芯艺 2004-09-11
   7:main.c        **** */
   8:main.c        **** 
   9:main.c        **** #include <avr/io.h>
  10:main.c        **** #include <avr/pgmspace.h>
  11:main.c        **** #include <avr/eeprom.h>
  12:main.c        **** #include <stdio.h>
  13:main.c        **** 
  14:main.c        **** unsigned char g_aEepDat[] __attribute__((section(".eeprom"))) ;
  15:main.c        **** 
  16:main.c        **** char g_aString[81];
  17:main.c        **** 
  18:main.c        **** void IoInit(void);
  19:main.c        **** 
  20:main.c        **** int main(void)
  21:main.c        **** {
 100               	.LM1:
 101               	/* prologue: frame size=1 */
 102 0000 C0E0      		ldi r28,lo8(__stack - 1)
 103 0002 D0E0      		ldi r29,hi8(__stack - 1)
 104 0004 DEBF      		out __SP_H__,r29
 105 0006 CDBF      		out __SP_L__,r28
 106               	/* prologue end (size=4) */
  22:main.c        **** 	char c;
  23:main.c        **** 	unsigned int i;
  24:main.c        **** 	
  25:main.c        **** 	IoInit();
 108               	.LM2:
 109               	.LBB2:
 110 0008 00D0      		rcall IoInit
  26:main.c        **** 	
  27:main.c        **** 	printf_P(PSTR("请输入命令,w :写 r: 读\n"));
 112               	.LM3:
 113 000a 80E0      		ldi r24,lo8(__c.0)
 114 000c 90E0      		ldi r25,hi8(__c.0)
 115               	.L25:
 116 000e 9F93      		push r25
 117 0010 8F93      		push r24
 118 0012 00D0      		rcall printf_P
  28:main.c        **** 	
  29:main.c        **** 	while(1)
 120               	.LM4:
 121 0014 0F90      		pop __tmp_reg__
 122 0016 0F90      		pop __tmp_reg__
 123               	.L24:
  30:main.c        **** 	{
  31:main.c        **** 		scanf("%c",&c);
 125               	.LM5:
 126 0018 CE01      		movw r24,r28
 127 001a 0196      		adiw r24,1
 128 001c 9F93      		push r25
 129 001e 8F93      		push r24
 130 0020 80E0      		ldi r24,lo8(.LC0)
 131 0022 90E0      		ldi r25,hi8(.LC0)
 132 0024 9F93      		push r25
 133 0026 8F93      		push r24
 134 0028 00D0      		rcall scanf
  32:main.c        **** 		if(c=='r')
 136               	.LM6:
 137 002a 8981      		ldd r24,Y+1
 138 002c 0F90      		pop __tmp_reg__
 139 002e 0F90      		pop __tmp_reg__
 140 0030 0F90      		pop __tmp_reg__
 141 0032 0F90      		pop __tmp_reg__
 142 0034 8237      		cpi r24,lo8(114)
 143 0036 C9F4      		brne .L5
  33:main.c        **** 		{
  34:main.c        **** 			for(i=0;i<E2END;i++)
 145               	.LM7:
 146 0038 EE24      		clr r14
 147 003a FF24      		clr r15
 148 003c 00E0      		ldi r16,lo8(g_aEepDat)
 149 003e 10E0      		ldi r17,hi8(g_aEepDat)
 150               	.L12:
  35:main.c        **** 			{
  36:main.c        **** 				c=eeprom_read_byte(g_aEepDat+i);
 152               	.LM8:
 153 0040 C801      		movw r24,r16
 154 0042 00D0      		rcall eeprom_read_byte
 155 0044 8983      		std Y+1,r24
  37:main.c        **** 				if(c!=0)
 157               	.LM9:
 158 0046 8823      		tst r24
 159 0048 61F0      		breq .L7
  38:main.c        **** 					printf("%c",c);
 161               	.LM10:
 162 004a 9927      		clr r25
 163 004c 00D0      		rcall putchar
 165               	.LM11:
 166 004e 0894      		sec
 167 0050 E11C      		adc r14,__zero_reg__
 168 0052 F11C      		adc r15,__zero_reg__
 169 0054 0F5F      		subi r16,lo8(-(1))
 170 0056 1F4F      		sbci r17,hi8(-(1))
 171 0058 8FEF      		ldi r24,lo8(511)
 172 005a E816      		cp r14,r24
 173 005c 81E0      		ldi r24,hi8(511)
 174 005e F806      		cpc r15,r24
 175 0060 78F3      		brlo .L12
 176               	.L7:
  39:main.c        **** 				else
  40:main.c        **** 					break;
  41:main.c        **** 			}
  42:main.c        **** 			printf("\n");
 178               	.LM12:
 179 0062 8AE0      		ldi r24,lo8(10)
 180 0064 90E0      		ldi r25,hi8(10)
 181 0066 00D0      		rcall putchar
 182 0068 D7CF      		rjmp .L24
 183               	.L5:
  43:main.c        **** 		}
  44:main.c        **** 		else if(c=='w')
 185               	.LM13:
 186 006a 8737      		cpi r24,lo8(119)
 187 006c A9F6      		brne .L24
  45:main.c        **** 		{
  46:main.c        **** 			printf_P(PSTR("请输入字符串:\n"));
 189               	.LM14:
 190               	.LBB3:
 191 006e 80E0      		ldi r24,lo8(__c.1)
 192 0070 90E0      		ldi r25,hi8(__c.1)
 193 0072 9F93      		push r25
 194 0074 8F93      		push r24
 195 0076 00D0      		rcall printf_P
  47:main.c        **** 			scanf("%s",g_aString);
 197               	.LM15:
 198 0078 00E0      		ldi r16,lo8(g_aString)
 199 007a 10E0      		ldi r17,hi8(g_aString)
 200 007c 1F93      		push r17
 201 007e 0F93      		push r16
 202 0080 80E0      		ldi r24,lo8(.LC1)
 203 0082 90E0      		ldi r25,hi8(.LC1)
 204 0084 9F93      		push r25
 205 0086 8F93      		push r24
 206 0088 00D0      		rcall scanf
  48:main.c        **** 			
  49:main.c        **** 			//确定输入字符串长度
  50:main.c        **** 			for(i=0;i<E2END;i++)
 208               	.LM16:
 209 008a EE24      		clr r14
 210 008c FF24      		clr r15
 211 008e 8DB7      		in r24,__SP_L__
 212 0090 9EB7      		in r25,__SP_H__
 213 0092 0696      		adiw r24,6
 214 0094 0FB6      		in __tmp_reg__,__SREG__
 215 0096 F894      		cli
 216 0098 9EBF      		out __SP_H__,r25
 217 009a 0FBE      		out __SREG__,__tmp_reg__
 218 009c 8DBF      		out __SP_L__,r24
 219 009e F801      		movw r30,r16
 220               	.L20:
  51:main.c        **** 			{
  52:main.c        **** 				if(g_aString[i]==0)
 222               	.LM17:
 223 00a0 8191      		ld r24,Z+
 224 00a2 8823      		tst r24
 225 00a4 41F0      		breq .L16
 227               	.LM18:
 228 00a6 0894      		sec
 229 00a8 E11C      		adc r14,__zero_reg__
 230 00aa F11C      		adc r15,__zero_reg__
 231 00ac 9FEF      		ldi r25,lo8(511)
 232 00ae E916      		cp r14,r25
 233 00b0 91E0      		ldi r25,hi8(511)
 234 00b2 F906      		cpc r15,r25
 235 00b4 A8F3      		brlo .L20
 236               	.L16:
  53:main.c        **** 					break;
  54:main.c        **** 			}
  55:main.c        **** 	
  56:main.c        **** 			eeprom_write_block(g_aString,g_aEepDat,++i);
 238               	.LM19:
 239 00b6 0894      		sec
 240 00b8 E11C      		adc r14,__zero_reg__
 241 00ba F11C      		adc r15,__zero_reg__
 242 00bc A701      		movw r20,r14
 243 00be 60E0      		ldi r22,lo8(g_aEepDat)
 244 00c0 70E0      		ldi r23,hi8(g_aEepDat)
 245 00c2 80E0      		ldi r24,lo8(g_aString)
 246 00c4 90E0      		ldi r25,hi8(g_aString)
 247 00c6 00D0      		rcall eeprom_write_block
  57:main.c        **** 			printf_P(PSTR("保存完成!\n"));
 249               	.LM20:
 250 00c8 80E0      		ldi r24,lo8(__c.2)
 251 00ca 90E0      		ldi r25,hi8(__c.2)
 252 00cc A0CF      		rjmp .L25
  58:main.c        **** 		}		
  59:main.c        **** 	}
  60:main.c        **** }
 254               	.LM21:
 255               	.LBE3:
 256               	.LBE2:
 257               	/* epilogue: frame size=1 */
 258               	/* epilogue: noreturn */
 259               	/* epilogue end (size=0) */
 260               	/* function main size 103 (99) */
 266               	.global	g_aEepDat
 267               		.section	.eeprom,"aw",@progbits
 270               	g_aEepDat:
 271 0000 00        		.skip 1,0
 272               		.comm g_aString,81,1
 275               		.text
 277               	Letext:
 278               	/* File "main.c": code  103 = 0x0067 (  99), prologues   4, epilogues   0 */
DEFINED SYMBOLS
                            *ABS*:00000000 main.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:79     .progmem.data:00000000 __c.0
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:83     .progmem.data:00000019 __c.1
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:87     .progmem.data:00000028 __c.2
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:98     .text:00000000 main
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:270    .eeprom:00000000 g_aEepDat
                            *COM*:00000051 g_aString
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:277    .text:000000ce Letext
                            *ABS*:00000000 *ABS*

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
IoInit
printf_P
scanf
eeprom_read_byte
putchar
eeprom_write_block

⌨️ 快捷键说明

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