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

📄 main.lss

📁 ATmaga128 串口通信程序 (可实现收发数据和字符串)
💻 LSS
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000150  00000000  00000000  00000054  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .debug_aranges 00000020  00000000  00000000  000001a4  2**0
                  CONTENTS, READONLY, DEBUGGING
  2 .debug_pubnames 0000005f  00000000  00000000  000001c4  2**0
                  CONTENTS, READONLY, DEBUGGING
  3 .debug_info   00000153  00000000  00000000  00000223  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_abbrev 0000010d  00000000  00000000  00000376  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_line   00000159  00000000  00000000  00000483  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_frame  00000060  00000000  00000000  000005dc  2**2
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_str    000000a9  00000000  00000000  0000063c  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_loc    0000003b  00000000  00000000  000006e5  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

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

0000008c <__ctors_end>:
  8c:	11 24       	eor	r1, r1
  8e:	1f be       	out	0x3f, r1	; 63
  90:	cf ef       	ldi	r28, 0xFF	; 255
  92:	d0 e1       	ldi	r29, 0x10	; 16
  94:	de bf       	out	0x3e, r29	; 62
  96:	cd bf       	out	0x3d, r28	; 61

00000098 <__do_copy_data>:
  98:	11 e0       	ldi	r17, 0x01	; 1
  9a:	a0 e0       	ldi	r26, 0x00	; 0
  9c:	b1 e0       	ldi	r27, 0x01	; 1
  9e:	e0 e5       	ldi	r30, 0x50	; 80
  a0:	f1 e0       	ldi	r31, 0x01	; 1
  a2:	00 e0       	ldi	r16, 0x00	; 0
  a4:	0b bf       	out	0x3b, r16	; 59
  a6:	02 c0       	rjmp	.+4      	; 0xac <__do_copy_data+0x14>
  a8:	07 90       	elpm	r0, Z+
  aa:	0d 92       	st	X+, r0
  ac:	a0 30       	cpi	r26, 0x00	; 0
  ae:	b1 07       	cpc	r27, r17
  b0:	d9 f7       	brne	.-10     	; 0xa8 <__do_copy_data+0x10>

000000b2 <__do_clear_bss>:
  b2:	11 e0       	ldi	r17, 0x01	; 1
  b4:	a0 e0       	ldi	r26, 0x00	; 0
  b6:	b1 e0       	ldi	r27, 0x01	; 1
  b8:	01 c0       	rjmp	.+2      	; 0xbc <.do_clear_bss_start>

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

000000bc <.do_clear_bss_start>:
  bc:	a0 30       	cpi	r26, 0x00	; 0
  be:	b1 07       	cpc	r27, r17
  c0:	e1 f7       	brne	.-8      	; 0xba <.do_clear_bss_loop>
  c2:	0e 94 86 00 	call	0x10c	; 0x10c <main>
  c6:	0c 94 a6 00 	jmp	0x14c	; 0x14c <_exit>

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

000000ce <init_usart>:
//功    能: 串口0初始化函数
//参    数: 无
//返回值  : 无
/*------------------------------------*/
void init_usart(void)
{	
  ce:	10 92 90 00 	sts	0x0090, r1

	UBRR0H = (F_CPU /BAUD/16-1)/256;
	UBRR0L = (F_CPU /BAUD/16-1)%256;
  d2:	87 e4       	ldi	r24, 0x47	; 71
  d4:	89 b9       	out	0x09, r24	; 9
//	UCSR0A |= (1 << RXC0);
	UCSR0B |= (1 << RXEN0 )|(1 << TXEN0)|(1 << RXCIE0);
  d6:	8a b1       	in	r24, 0x0a	; 10
  d8:	88 69       	ori	r24, 0x98	; 152
  da:	8a b9       	out	0x0a, r24	; 10
	UCSR0C |= (1 << UCSZ01 )|(1 <<UCSZ00);//设置UCSZ0,8位字符长度
  dc:	e5 e9       	ldi	r30, 0x95	; 149
  de:	f0 e0       	ldi	r31, 0x00	; 0
  e0:	80 81       	ld	r24, Z
  e2:	86 60       	ori	r24, 0x06	; 6
  e4:	80 83       	st	Z, r24
	
}
  e6:	08 95       	ret

000000e8 <send_char>:
//功    能: 串口0发送字符串函数
//参    数: *data
//返回值  : 无
/*------------------------------------*/
void send_char(uchar *data)
{
  e8:	fc 01       	movw	r30, r24
  ea:	04 c0       	rjmp	.+8      	; 0xf4 <send_char+0xc>
	while(*data)
	{		
		while(!(UCSR0A&(1<<UDRE0)))//等待发送缓冲区为空
  ec:	5d 9b       	sbis	0x0b, 5	; 11
  ee:	fe cf       	rjmp	.-4      	; 0xec <send_char+0x4>
		{
		} 
		UDR0 = *data; 
  f0:	8c b9       	out	0x0c, r24	; 12
		data ++;
  f2:	31 96       	adiw	r30, 0x01	; 1
//参    数: *data
//返回值  : 无
/*------------------------------------*/
void send_char(uchar *data)
{
	while(*data)
  f4:	80 81       	ld	r24, Z
  f6:	88 23       	and	r24, r24
  f8:	c9 f7       	brne	.-14     	; 0xec <send_char+0x4>
		{
		} 
		UDR0 = *data; 
		data ++;
	}
}
  fa:	08 95       	ret

000000fc <send_char_hex>:
//功    能: 串口0发送十六进制数字函数
//参    数: hex
//返回值  : 无
/*------------------------------------*/
void send_char_hex(uchar hex)
{
  fc:	5d 9b       	sbis	0x0b, 5	; 11
  fe:	fe cf       	rjmp	.-4      	; 0xfc <send_char_hex>
	while(!(UCSR0A&(1<<UDRE0)))//等待发送缓冲区为空
	{
	} 
	UDR0 = hex; 		
 100:	8c b9       	out	0x0c, r24	; 12
}
 102:	08 95       	ret

00000104 <receive_char_hex>:
//功    能: 串口0接收十六进制数字函数
//参    数: 无
//返回值  : recv_data
/*------------------------------------*/
uchar receive_char_hex(void)
 {  
 104:	5f 9b       	sbis	0x0b, 7	; 11
 106:	fe cf       	rjmp	.-4      	; 0x104 <receive_char_hex>
	while(!(UCSR0A&(1<<RXC0)))//等待接收标志位置位
	{
	}
	return UDR0;
 108:	8c b1       	in	r24, 0x0c	; 12
 }
 10a:	08 95       	ret

0000010c <main>:
}
*/
//------------------------------------
//------------------------------------
int main(void)
{
 10c:	80 91 61 00 	lds	r24, 0x0061
 110:	80 6f       	ori	r24, 0xF0	; 240
 112:	80 93 61 00 	sts	0x0061, r24
	uchar i;
	LED_INIT();
	
	cli();       //关全局中断
 116:	f8 94       	cli
//返回值  : 无
/*------------------------------------*/
void init_usart(void)
{	

	UBRR0H = (F_CPU /BAUD/16-1)/256;
 118:	10 92 90 00 	sts	0x0090, r1
	UBRR0L = (F_CPU /BAUD/16-1)%256;
 11c:	87 e4       	ldi	r24, 0x47	; 71
 11e:	89 b9       	out	0x09, r24	; 9
//	UCSR0A |= (1 << RXC0);
	UCSR0B |= (1 << RXEN0 )|(1 << TXEN0)|(1 << RXCIE0);
 120:	8a b1       	in	r24, 0x0a	; 10
 122:	88 69       	ori	r24, 0x98	; 152
 124:	8a b9       	out	0x0a, r24	; 10
	UCSR0C |= (1 << UCSZ01 )|(1 <<UCSZ00);//设置UCSZ0,8位字符长度
 126:	80 91 95 00 	lds	r24, 0x0095
 12a:	86 60       	ori	r24, 0x06	; 6
 12c:	80 93 95 00 	sts	0x0095, r24
	uchar i;
	LED_INIT();
	
	cli();       //关全局中断
	init_usart();//USART初始化
	sei();		 //开全局中断
 130:	78 94       	sei
//参    数: 无
//返回值  : recv_data
/*------------------------------------*/
uchar receive_char_hex(void)
 {  
	while(!(UCSR0A&(1<<RXC0)))//等待接收标志位置位
 132:	5f 9b       	sbis	0x0b, 7	; 11
 134:	fe cf       	rjmp	.-4      	; 0x132 <main+0x26>
	{
	}
	return UDR0;
 136:	8c b1       	in	r24, 0x0c	; 12
//参    数: hex
//返回值  : 无
/*------------------------------------*/
void send_char_hex(uchar hex)
{
	while(!(UCSR0A&(1<<UDRE0)))//等待发送缓冲区为空
 138:	5d 9b       	sbis	0x0b, 5	; 11
 13a:	fe cf       	rjmp	.-4      	; 0x138 <main+0x2c>
	{
	} 
	UDR0 = hex; 		
 13c:	8c b9       	out	0x0c, r24	; 12
	i = receive_char_hex();
	send_char_hex(i);

	while(1)
	{
		LED_SET(0x0a);//发送结束指示
 13e:	80 91 62 00 	lds	r24, 0x0062
 142:	8f 70       	andi	r24, 0x0F	; 15
 144:	80 6a       	ori	r24, 0xA0	; 160
 146:	80 93 62 00 	sts	0x0062, r24
 14a:	f9 cf       	rjmp	.-14     	; 0x13e <main+0x32>

0000014c <_exit>:
 14c:	f8 94       	cli

0000014e <__stop_program>:
 14e:	ff cf       	rjmp	.-2      	; 0x14e <__stop_program>

⌨️ 快捷键说明

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