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

📄 uart.lss

📁 avr中mega128的uart程序,还不错的了
💻 LSS
📖 第 1 页 / 共 5 页
字号:

uart.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         0000003e  00800100  0000108e  00001122  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         0000108e  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          0000006a  0080013e  0080013e  00001160  2**0
                  ALLOC
  3 .stab         00000414  00000000  00000000  00001160  2**2
                  CONTENTS, READONLY, DEBUGGING
  4 .stabstr      00000071  00000000  00000000  00001574  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_aranges 00000020  00000000  00000000  000015e5  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 00000034  00000000  00000000  00001605  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   00000386  00000000  00000000  00001639  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 000001ed  00000000  00000000  000019bf  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   0000021e  00000000  00000000  00001bac  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_frame  00000050  00000000  00000000  00001dcc  2**2
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_str    00000137  00000000  00000000  00001e1c  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_loc    00000076  00000000  00000000  00001f53  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:	0c 94 58 00 	jmp	0xb0	; 0xb0 <__ctors_end>
       4:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
       8:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
       c:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      10:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      14:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      18:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      1c:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      20:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      24:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      28:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      2c:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      30:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      34:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      38:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      3c:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      40:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      44:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      48:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      4c:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      50:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      54:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      58:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      5c:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      60:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      64:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      68:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      6c:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      70:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      74:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      78:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      7c:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      80:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      84:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>
      88:	0c 94 77 00 	jmp	0xee	; 0xee <__bad_interrupt>

0000008c <__c.1612>:
      8c:	c4 fa b5 c4 ca e4 c8 eb ce aa 3a 25 64 0a 00        ..........:%d..

0000009b <__c.1610>:
      9b:	25 64 00                                            %d.

0000009e <__c.1608>:
      9e:	b2 e2 ca d4 32 5b ca e4 c8 eb ca fd d7 d6 5d 3a     ....2[........]:
      ae:	0a 00                                               ..

000000b0 <__ctors_end>:
      b0:	11 24       	eor	r1, r1
      b2:	1f be       	out	0x3f, r1	; 63
      b4:	cf ef       	ldi	r28, 0xFF	; 255
      b6:	d0 e1       	ldi	r29, 0x10	; 16
      b8:	de bf       	out	0x3e, r29	; 62
      ba:	cd bf       	out	0x3d, r28	; 61

000000bc <__do_copy_data>:
      bc:	11 e0       	ldi	r17, 0x01	; 1
      be:	a0 e0       	ldi	r26, 0x00	; 0
      c0:	b1 e0       	ldi	r27, 0x01	; 1
      c2:	ee e8       	ldi	r30, 0x8E	; 142
      c4:	f0 e1       	ldi	r31, 0x10	; 16
      c6:	00 e0       	ldi	r16, 0x00	; 0
      c8:	0b bf       	out	0x3b, r16	; 59
      ca:	02 c0       	rjmp	.+4      	; 0xd0 <__do_copy_data+0x14>
      cc:	07 90       	elpm	r0, Z+
      ce:	0d 92       	st	X+, r0
      d0:	ae 33       	cpi	r26, 0x3E	; 62
      d2:	b1 07       	cpc	r27, r17
      d4:	d9 f7       	brne	.-10     	; 0xcc <__do_copy_data+0x10>

000000d6 <__do_clear_bss>:
      d6:	11 e0       	ldi	r17, 0x01	; 1
      d8:	ae e3       	ldi	r26, 0x3E	; 62
      da:	b1 e0       	ldi	r27, 0x01	; 1
      dc:	01 c0       	rjmp	.+2      	; 0xe0 <.do_clear_bss_start>

000000de <.do_clear_bss_loop>:
      de:	1d 92       	st	X+, r1

000000e0 <.do_clear_bss_start>:
      e0:	a8 3a       	cpi	r26, 0xA8	; 168
      e2:	b1 07       	cpc	r27, r17
      e4:	e1 f7       	brne	.-8      	; 0xde <.do_clear_bss_loop>
      e6:	0e 94 96 00 	call	0x12c	; 0x12c <main>
      ea:	0c 94 46 08 	jmp	0x108c	; 0x108c <_exit>

000000ee <__bad_interrupt>:
      ee:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

000000f2 <uart_putchar>:

//向UART写一字节
static int 
uart_putchar(char c, FILE *stream)
{
      f2:	1f 93       	push	r17
      f4:	18 2f       	mov	r17, r24
	if(c=='\n')
      f6:	8a 30       	cpi	r24, 0x0A	; 10
      f8:	19 f4       	brne	.+6      	; 0x100 <uart_putchar+0xe>
		uart_putchar('\r', stream);
      fa:	8d e0       	ldi	r24, 0x0D	; 13
      fc:	0e 94 79 00 	call	0xf2	; 0xf2 <uart_putchar>
	loop_until_bit_is_set(UCSR0A,UDRE0);
     100:	5d 9b       	sbis	0x0b, 5	; 11
     102:	fe cf       	rjmp	.-4      	; 0x100 <uart_putchar+0xe>
	UDR0=c;
     104:	1c b9       	out	0x0c, r17	; 12
	return 0;
}
     106:	80 e0       	ldi	r24, 0x00	; 0
     108:	90 e0       	ldi	r25, 0x00	; 0
     10a:	1f 91       	pop	r17
     10c:	08 95       	ret

0000010e <uart_getchar>:

//从UART读一字节
static int 
uart_getchar(FILE *stream)
{
     10e:	5f 9b       	sbis	0x0b, 7	; 11
     110:	fe cf       	rjmp	.-4      	; 0x10e <uart_getchar>
	loop_until_bit_is_set(UCSR0A,RXC0);
	return UDR0;
     112:	8c b1       	in	r24, 0x0c	; 12
}
     114:	99 27       	eor	r25, r25
     116:	08 95       	ret

00000118 <IoInit>:

//初始化i/o
void IoInit(void)
{
     118:	86 e0       	ldi	r24, 0x06	; 6
     11a:	80 93 95 00 	sts	0x0095, r24
	//UART初始化
	UCSR0C=0x06;	
	UBRR0H=0;
     11e:	10 92 90 00 	sts	0x0090, r1
	UBRR0L=47;	//9600 baud
     122:	8f e2       	ldi	r24, 0x2F	; 47
     124:	89 b9       	out	0x09, r24	; 9
	UCSR0B=_BV(RXEN0)|_BV(TXEN0);/*(1<<RXCIE0)|(1<<TXCIE0)|*/
     126:	88 e1       	ldi	r24, 0x18	; 24
     128:	8a b9       	out	0x0a, r24	; 10
     12a:	08 95       	ret

0000012c <main>:
	
	
	//i/o流UART连接
	//fdevopen(usart_putchar,usart_getchar,0);	
}


//测试主程序
int main(void)
{
     12c:	0f 93       	push	r16
     12e:	1f 93       	push	r17
     130:	cf 93       	push	r28
     132:	df 93       	push	r29
     134:	cd b7       	in	r28, 0x3d	; 61
     136:	de b7       	in	r29, 0x3e	; 62
     138:	22 97       	sbiw	r28, 0x02	; 2
     13a:	0f b6       	in	r0, 0x3f	; 63
     13c:	f8 94       	cli
     13e:	de bf       	out	0x3e, r29	; 62
     140:	0f be       	out	0x3f, r0	; 63
     142:	cd bf       	out	0x3d, r28	; 61
     144:	86 e0       	ldi	r24, 0x06	; 6
     146:	80 93 95 00 	sts	0x0095, r24
     14a:	10 92 90 00 	sts	0x0090, r1
     14e:	8f e2       	ldi	r24, 0x2F	; 47
     150:	89 b9       	out	0x09, r24	; 9
     152:	88 e1       	ldi	r24, 0x18	; 24
     154:	8a b9       	out	0x0a, r24	; 10
	int tmp;
	
	IoInit();
	
	stdout = stdin = &mystdio ;	
     156:	80 e3       	ldi	r24, 0x30	; 48
     158:	91 e0       	ldi	r25, 0x01	; 1
     15a:	90 93 a3 01 	sts	0x01A3, r25
     15e:	80 93 a2 01 	sts	0x01A2, r24
     162:	90 93 a5 01 	sts	0x01A5, r25
     166:	80 93 a4 01 	sts	0x01A4, r24
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
     16a:	80 e0       	ldi	r24, 0x00	; 0
     16c:	98 ed       	ldi	r25, 0xD8	; 216
     16e:	01 97       	sbiw	r24, 0x01	; 1
     170:	f1 f7       	brne	.-4      	; 0x16e <main+0x42>
	
	_delay_ms(30);  //延时一下显示就不会出什么错了,可能是没延时,一上电没来得及那么快,输出就有误吧

	while(1)
	{
		//测试1
		printf("测试1[输入一字符串]:\n");
     172:	80 e0       	ldi	r24, 0x00	; 0
     174:	91 e0       	ldi	r25, 0x01	; 1
     176:	0e 94 45 01 	call	0x28a	; 0x28a <puts>
		printf("abcdefg!\n");
     17a:	85 e1       	ldi	r24, 0x15	; 21
     17c:	91 e0       	ldi	r25, 0x01	; 1
     17e:	0e 94 45 01 	call	0x28a	; 0x28a <puts>
		scanf("%s",g_aString);
     182:	0e e3       	ldi	r16, 0x3E	; 62
     184:	11 e0       	ldi	r17, 0x01	; 1
     186:	1f 93       	push	r17
     188:	0f 93       	push	r16
     18a:	8e e1       	ldi	r24, 0x1E	; 30
     18c:	91 e0       	ldi	r25, 0x01	; 1
     18e:	9f 93       	push	r25
     190:	8f 93       	push	r24
     192:	0e 94 78 01 	call	0x2f0	; 0x2f0 <scanf>
		printf("您的输入为:%s\n",g_aString);
     196:	1f 93       	push	r17
     198:	0f 93       	push	r16
     19a:	81 e2       	ldi	r24, 0x21	; 33
     19c:	91 e0       	ldi	r25, 0x01	; 1
     19e:	9f 93       	push	r25
     1a0:	8f 93       	push	r24
     1a2:	0e 94 f6 00 	call	0x1ec	; 0x1ec <printf>

		//测试2:使用FLASH区的字符串
		printf_P(PSTR("测试2[输入数字]:\n"));
     1a6:	8e e9       	ldi	r24, 0x9E	; 158
     1a8:	90 e0       	ldi	r25, 0x00	; 0
     1aa:	9f 93       	push	r25
     1ac:	8f 93       	push	r24
     1ae:	0e 94 16 01 	call	0x22c	; 0x22c <printf_P>
		scanf_P(PSTR("%d"),&tmp);
     1b2:	ce 01       	movw	r24, r28
     1b4:	01 96       	adiw	r24, 0x01	; 1
     1b6:	9f 93       	push	r25
     1b8:	8f 93       	push	r24
     1ba:	8b e9       	ldi	r24, 0x9B	; 155
     1bc:	90 e0       	ldi	r25, 0x00	; 0
     1be:	9f 93       	push	r25
     1c0:	8f 93       	push	r24
     1c2:	0e 94 98 01 	call	0x330	; 0x330 <scanf_P>
		printf_P(PSTR("您的输入为:%d\n"),tmp);
     1c6:	89 81       	ldd	r24, Y+1	; 0x01
     1c8:	9a 81       	ldd	r25, Y+2	; 0x02
     1ca:	9f 93       	push	r25
     1cc:	8f 93       	push	r24
     1ce:	8c e8       	ldi	r24, 0x8C	; 140
     1d0:	90 e0       	ldi	r25, 0x00	; 0
     1d2:	9f 93       	push	r25
     1d4:	8f 93       	push	r24
     1d6:	0e 94 16 01 	call	0x22c	; 0x22c <printf_P>
		
	}
     1da:	8d b7       	in	r24, 0x3d	; 61
     1dc:	9e b7       	in	r25, 0x3e	; 62
     1de:	42 96       	adiw	r24, 0x12	; 18
     1e0:	0f b6       	in	r0, 0x3f	; 63
     1e2:	f8 94       	cli
     1e4:	9e bf       	out	0x3e, r25	; 62
     1e6:	0f be       	out	0x3f, r0	; 63
     1e8:	8d bf       	out	0x3d, r24	; 61
     1ea:	c3 cf       	rjmp	.-122    	; 0x172 <main+0x46>

000001ec <printf>:
     1ec:	cf 93       	push	r28
     1ee:	df 93       	push	r29
     1f0:	cd b7       	in	r28, 0x3d	; 61
     1f2:	de b7       	in	r29, 0x3e	; 62
     1f4:	22 97       	sbiw	r28, 0x02	; 2

⌨️ 快捷键说明

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