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

📄 main.lst

📁 avr单片机的一些实际应用源码
💻 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:
  75               	.global	usart_putchar
  77               	usart_putchar:
   1:main.c        **** /*
   2:main.c        **** 	avr-libc 标准 i/o 流测试程序
   3:main.c        **** 	main.c
   4:main.c        **** 	MCU:atmega8
   5:main.c        **** 	
   6:main.c        **** 	芯艺 2004-09-09
   7:main.c        **** */
   8:main.c        **** 
   9:main.c        **** #include <avr/io.h>
  10:main.c        **** #include <avr/pgmspace.h>
  11:main.c        **** #include <stdio.h>
  12:main.c        **** 
  13:main.c        **** char g_aString[81];
  14:main.c        **** 
  15:main.c        **** //
  16:main.c        **** int usart_putchar(char c)
  17:main.c        **** {
  79               	.LM1:
  80               	/* prologue: frame size=0 */
  81 0000 CF93      		push r28
  82               	/* prologue end (size=1) */
  83 0002 C82F      		mov r28,r24
  18:main.c        **** 	if(c=='\n')
  85               	.LM2:
  86 0004 8A30      		cpi r24,lo8(10)
  87 0006 11F4      		brne .L4
  19:main.c        **** 		usart_putchar('\r');
  89               	.LM3:
  90 0008 8DE0      		ldi r24,lo8(13)
  91 000a FADF      		rcall usart_putchar
  92               	.L4:
  20:main.c        **** 	loop_until_bit_is_set(UCSRA,UDRE);
  94               	.LM4:
  95 000c 5D9B      		sbis 43-0x20,5
  96 000e FECF      		rjmp .L4
  21:main.c        **** 	UDR=c;
  98               	.LM5:
  99 0010 CCB9      		out 44-0x20,r28
  22:main.c        **** 	return 0;
  23:main.c        **** }
 101               	.LM6:
 102 0012 80E0      		ldi r24,lo8(0)
 103 0014 90E0      		ldi r25,hi8(0)
 104               	/* epilogue: frame size=0 */
 105 0016 CF91      		pop r28
 106 0018 0895      		ret
 107               	/* epilogue end (size=2) */
 108               	/* function usart_putchar size 13 (10) */
 111               	.global	usart_getchar
 113               	usart_getchar:
  24:main.c        **** //
  25:main.c        **** int usart_getchar(void)
  26:main.c        **** {
 115               	.LM7:
 116               	/* prologue: frame size=0 */
 117               	/* prologue end (size=0) */
 118               	.L8:
  27:main.c        **** 	loop_until_bit_is_set(UCSRA,RXC);
 120               	.LM8:
 121 001a 5F9B      		sbis 43-0x20,7
 122 001c FECF      		rjmp .L8
  28:main.c        **** 	return UDR;
 124               	.LM9:
 125 001e 8CB1      		in r24,44-0x20
  29:main.c        **** }
 127               	.LM10:
 128 0020 9927      		clr r25
 129               	/* epilogue: frame size=0 */
 130 0022 0895      		ret
 131               	/* epilogue end (size=1) */
 132               	/* function usart_getchar size 5 (4) */
 135               	.global	IoInit
 137               	IoInit:
  30:main.c        **** 
  31:main.c        **** void IoInit(void)
  32:main.c        **** {
 139               	.LM11:
 140               	/* prologue: frame size=0 */
 141               	/* prologue end (size=0) */
  33:main.c        **** 	//UART初始化
  34:main.c        **** 	UCSRB=_BV(RXEN)|_BV(TXEN);/*(1<<RXCIE)|(1<<TXCIE)|*/
 143               	.LM12:
 144 0024 88E1      		ldi r24,lo8(24)
 145 0026 8AB9      		out 42-0x20,r24
  35:main.c        **** 	UBRRL=25;	//9600 baud 6MHz:38  4MHz:25	
 147               	.LM13:
 148 0028 89E1      		ldi r24,lo8(25)
 149 002a 89B9      		out 41-0x20,r24
  36:main.c        **** 	
  37:main.c        **** 	//i/o流UART连接
  38:main.c        **** 	fdevopen(usart_putchar,usart_getchar,0);	
 151               	.LM14:
 152 002c 40E0      		ldi r20,lo8(0)
 153 002e 50E0      		ldi r21,hi8(0)
 154 0030 60E0      		ldi r22,lo8(pm(usart_getchar))
 155 0032 70E0      		ldi r23,hi8(pm(usart_getchar))
 156 0034 80E0      		ldi r24,lo8(pm(usart_putchar))
 157 0036 90E0      		ldi r25,hi8(pm(usart_putchar))
 158 0038 00D0      		rcall fdevopen
 159               	/* epilogue: frame size=0 */
 160 003a 0895      		ret
 161               	/* epilogue end (size=1) */
 162               	/* function IoInit size 12 (11) */
 164               		.section	.progmem.data,"a",@progbits
 167               	__c.0:
 168 0000 B2E2 CAD4 		.string	"\262\342\312\3243[\312\344\310\353\312\375\327\326]:\n"
 168      335B CAE4 
 168      C8EB CAFD 
 168      D7D6 5D3A 
 168      0A00 
 171               	__c.1:
 172 0012 2564 00   		.string	"%d"
 175               	__c.2:
 176 0015 C4FA B5C4 		.string	"\304\372\265\304\312\344\310\353\316\252:%d\n"
 176      CAE4 C8EB 
 176      CEAA 3A25 
 176      640A 00
 177               		.data
 178               	.LC0:
 179 0000 B2E2 CAD4 		.string	"\262\342\312\3241[\312\344\310\353\312\375\327\326]:\n"
 179      315B CAE4 
 179      C8EB CAFD 
 179      D7D6 5D3A 
 179      0A00 
 180               	.LC1:
 181 0012 2564 00   		.string	"%d"
 182               	.LC2:
 183 0015 C4FA B5C4 		.string	"\304\372\265\304\312\344\310\353\316\252:%d\n"
 183      CAE4 C8EB 
 183      CEAA 3A25 
 183      640A 00
 184               	.LC3:
 185 0024 B2E2 CAD4 		.string	"\262\342\312\3242[\312\344\310\353\322\273\327\326\267\373\264\256]:"
 185      325B CAE4 
 185      C8EB D2BB 
 185      D7D6 B7FB 
 185      B4AE 5D3A 
 186               	.LC4:
 187 0039 2573 00   		.string	"%s"
 188               	.LC5:
 189 003c C4FA B5C4 		.string	"\304\372\265\304\312\344\310\353\316\252:%s\n"
 189      CAE4 C8EB 
 189      CEAA 3A25 
 189      730A 00
 190               		.text
 192               	.global	main
 194               	main:
  39:main.c        **** }
  40:main.c        **** 
  41:main.c        **** int main(void)
  42:main.c        **** {
 196               	.LM15:
 197               	/* prologue: frame size=2 */
 198 003c C0E0      		ldi r28,lo8(__stack - 2)
 199 003e D0E0      		ldi r29,hi8(__stack - 2)
 200 0040 DEBF      		out __SP_H__,r29
 201 0042 CDBF      		out __SP_L__,r28
 202               	/* prologue end (size=4) */
  43:main.c        **** 	int tmp;
  44:main.c        **** 	
  45:main.c        **** 	IoInit();
 204               	.LM16:
 205 0044 EFDF      		rcall IoInit
 206               	.L13:
  46:main.c        **** 	
  47:main.c        **** 	while(1)
  48:main.c        **** 	{
  49:main.c        **** 		tmp=0xffff;//如果没有这条语句,vfprintf/vfscanf工作不正常,可能是vfprintf/vfscanf的bug.
 208               	.LM17:
 209 0046 8FEF      		ldi r24,lo8(-1)
 210 0048 9FEF      		ldi r25,hi8(-1)
 211 004a 8983      		std Y+1,r24
 212 004c 9A83      		std Y+2,r25
  50:main.c        **** 
  51:main.c        **** 		//测试1
  52:main.c        **** 		vfprintf(stdout,"测试1[输入数字]:\n",0);
 214               	.LM18:
 215 004e 40E0      		ldi r20,lo8(0)
 216 0050 50E0      		ldi r21,hi8(0)
 217 0052 60E0      		ldi r22,lo8(.LC0)
 218 0054 70E0      		ldi r23,hi8(.LC0)
 219 0056 8091 0000 		lds r24,__iob+2
 220 005a 9091 0000 		lds r25,(__iob+2)+1
 221 005e 00D0      		rcall vfprintf
  53:main.c        **** 		vfscanf(stdin,"%d",&tmp);
 223               	.LM19:
 224 0060 AE01      		movw r20,r28
 225 0062 4F5F      		subi r20,lo8(-(1))
 226 0064 5F4F      		sbci r21,hi8(-(1))
 227 0066 60E0      		ldi r22,lo8(.LC1)
 228 0068 70E0      		ldi r23,hi8(.LC1)
 229 006a 8091 0000 		lds r24,__iob
 230 006e 9091 0000 		lds r25,(__iob)+1
 231 0072 00D0      		rcall vfscanf
  54:main.c        **** 		vfprintf(stdout,"您的输入为:%d\n",tmp);
 233               	.LM20:
 234 0074 4981      		ldd r20,Y+1
 235 0076 5A81      		ldd r21,Y+2
 236 0078 60E0      		ldi r22,lo8(.LC2)
 237 007a 70E0      		ldi r23,hi8(.LC2)
 238 007c 8091 0000 		lds r24,__iob+2
 239 0080 9091 0000 		lds r25,(__iob+2)+1
 240 0084 00D0      		rcall vfprintf
  55:main.c        **** 
  56:main.c        **** 		//测试2
  57:main.c        **** 		printf("测试2[输入一字符串]:\n");
 242               	.LM21:
 243 0086 80E0      		ldi r24,lo8(.LC3)
 244 0088 90E0      		ldi r25,hi8(.LC3)
 245 008a 00D0      		rcall puts
  58:main.c        **** 		scanf("%s",g_aString);
 247               	.LM22:
 248 008c 00E0      		ldi r16,lo8(g_aString)
 249 008e 10E0      		ldi r17,hi8(g_aString)
 250 0090 1F93      		push r17
 251 0092 0F93      		push r16
 252 0094 80E0      		ldi r24,lo8(.LC4)
 253 0096 90E0      		ldi r25,hi8(.LC4)
 254 0098 9F93      		push r25
 255 009a 8F93      		push r24
 256 009c 00D0      		rcall scanf
  59:main.c        **** 		printf("您的输入为:%s\n",g_aString);
 258               	.LM23:
 259 009e 1F93      		push r17
 260 00a0 0F93      		push r16
 261 00a2 80E0      		ldi r24,lo8(.LC5)
 262 00a4 90E0      		ldi r25,hi8(.LC5)
 263 00a6 9F93      		push r25
 264 00a8 8F93      		push r24
 265 00aa 00D0      		rcall printf
  60:main.c        **** 		
  61:main.c        **** 		//测试3
  62:main.c        **** 		printf_P(PSTR("测试3[输入数字]:\n"));
 267               	.LM24:
 268 00ac 8DB7      		in r24,__SP_L__
 269 00ae 9EB7      		in r25,__SP_H__
 270 00b0 0896      		adiw r24,8
 271 00b2 0FB6      		in __tmp_reg__,__SREG__
 272 00b4 F894      		cli
 273 00b6 9EBF      		out __SP_H__,r25
 274 00b8 0FBE      		out __SREG__,__tmp_reg__
 275 00ba 8DBF      		out __SP_L__,r24
 276 00bc 80E0      		ldi r24,lo8(__c.0)
 277 00be 90E0      		ldi r25,hi8(__c.0)
 278 00c0 9F93      		push r25
 279 00c2 8F93      		push r24
 280 00c4 00D0      		rcall printf_P
  63:main.c        **** 		scanf_P(PSTR("%d"),&tmp);
 282               	.LM25:
 283 00c6 0F90      		pop __tmp_reg__
 284 00c8 0F90      		pop __tmp_reg__
 285 00ca CE01      		movw r24,r28
 286 00cc 0196      		adiw r24,1
 287 00ce 9F93      		push r25
 288 00d0 8F93      		push r24
 289 00d2 80E0      		ldi r24,lo8(__c.1)
 290 00d4 90E0      		ldi r25,hi8(__c.1)
 291 00d6 9F93      		push r25
 292 00d8 8F93      		push r24
 293 00da 00D0      		rcall scanf_P
  64:main.c        **** 		printf_P(PSTR("您的输入为:%d\n"),tmp);
 295               	.LM26:
 296 00dc 0F90      		pop __tmp_reg__
 297 00de 0F90      		pop __tmp_reg__
 298 00e0 0F90      		pop __tmp_reg__
 299 00e2 0F90      		pop __tmp_reg__
 300 00e4 8981      		ldd r24,Y+1
 301 00e6 9A81      		ldd r25,Y+2
 302 00e8 9F93      		push r25
 303 00ea 8F93      		push r24
 304 00ec 80E0      		ldi r24,lo8(__c.2)
 305 00ee 90E0      		ldi r25,hi8(__c.2)
 306 00f0 9F93      		push r25
 307 00f2 8F93      		push r24
 308 00f4 00D0      		rcall printf_P
 309 00f6 0F90      		pop __tmp_reg__
 310 00f8 0F90      		pop __tmp_reg__
 311 00fa 0F90      		pop __tmp_reg__
 312 00fc 0F90      		pop __tmp_reg__
 313 00fe A3CF      		rjmp .L13
 314               	/* epilogue: frame size=2 */
 315               	/* epilogue: noreturn */
 316               	/* epilogue end (size=0) */
 317               	/* function main size 98 (94) */
 320               		.comm g_aString,81,1
 322               		.text
 324               	Letext:
 325               	/* File "main.c": code  128 = 0x0080 ( 119), prologues   5, epilogues   4 */
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__
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccodaaaa.s:77     .text:00000000 usart_putchar
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccodaaaa.s:113    .text:0000001a usart_getchar
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccodaaaa.s:137    .text:00000024 IoInit
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccodaaaa.s:167    .progmem.data:00000000 __c.0
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccodaaaa.s:171    .progmem.data:00000012 __c.1
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccodaaaa.s:175    .progmem.data:00000015 __c.2
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccodaaaa.s:194    .text:0000003c main
                            *COM*:00000051 g_aString
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccodaaaa.s:324    .text:00000100 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
fdevopen
__stack
__iob
vfprintf
vfscanf
puts
scanf
printf
printf_P
scanf_P

⌨️ 快捷键说明

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