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

📄 uart1.lss

📁 avr usart sample (interrupt)
💻 LSS
字号:

uart1.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000001fe  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000016  00800060  000001fe  00000292  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000005  00800076  00800076  000002a8  2**0
                  ALLOC
  3 .noinit       00000000  0080007b  0080007b  000002a8  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000002a8  2**0
                  CONTENTS
  5 .stab         000009b4  00000000  00000000  000002a8  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000977  00000000  00000000  00000c5c  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	12 c0       	rjmp	.+36     	; 0x26 <__ctors_end>
   2:	2a c0       	rjmp	.+84     	; 0x58 <__bad_interrupt>
   4:	29 c0       	rjmp	.+82     	; 0x58 <__bad_interrupt>
   6:	28 c0       	rjmp	.+80     	; 0x58 <__bad_interrupt>
   8:	27 c0       	rjmp	.+78     	; 0x58 <__bad_interrupt>
   a:	26 c0       	rjmp	.+76     	; 0x58 <__bad_interrupt>
   c:	25 c0       	rjmp	.+74     	; 0x58 <__bad_interrupt>
   e:	48 c0       	rjmp	.+144    	; 0xa0 <__vector_7>
  10:	23 c0       	rjmp	.+70     	; 0x58 <__bad_interrupt>
  12:	23 c0       	rjmp	.+70     	; 0x5a <__vector_9>
  14:	21 c0       	rjmp	.+66     	; 0x58 <__bad_interrupt>
  16:	20 c0       	rjmp	.+64     	; 0x58 <__bad_interrupt>
  18:	1f c0       	rjmp	.+62     	; 0x58 <__bad_interrupt>
  1a:	1e c0       	rjmp	.+60     	; 0x58 <__bad_interrupt>
  1c:	1d c0       	rjmp	.+58     	; 0x58 <__bad_interrupt>
  1e:	1c c0       	rjmp	.+56     	; 0x58 <__bad_interrupt>
  20:	1b c0       	rjmp	.+54     	; 0x58 <__bad_interrupt>
  22:	1a c0       	rjmp	.+52     	; 0x58 <__bad_interrupt>
  24:	19 c0       	rjmp	.+50     	; 0x58 <__bad_interrupt>

00000026 <__ctors_end>:
  26:	11 24       	eor	r1, r1
  28:	1f be       	out	0x3f, r1	; 63
  2a:	cf ed       	ldi	r28, 0xDF	; 223
  2c:	cd bf       	out	0x3d, r28	; 61

0000002e <__do_copy_data>:
  2e:	10 e0       	ldi	r17, 0x00	; 0
  30:	a0 e6       	ldi	r26, 0x60	; 96
  32:	b0 e0       	ldi	r27, 0x00	; 0
  34:	ee ef       	ldi	r30, 0xFE	; 254
  36:	f1 e0       	ldi	r31, 0x01	; 1
  38:	03 c0       	rjmp	.+6      	; 0x40 <.do_copy_data_start>

0000003a <.do_copy_data_loop>:
  3a:	c8 95       	lpm
  3c:	31 96       	adiw	r30, 0x01	; 1
  3e:	0d 92       	st	X+, r0

00000040 <.do_copy_data_start>:
  40:	a6 37       	cpi	r26, 0x76	; 118
  42:	b1 07       	cpc	r27, r17
  44:	d1 f7       	brne	.-12     	; 0x3a <.do_copy_data_loop>

00000046 <__do_clear_bss>:
  46:	10 e0       	ldi	r17, 0x00	; 0
  48:	a6 e7       	ldi	r26, 0x76	; 118
  4a:	b0 e0       	ldi	r27, 0x00	; 0
  4c:	01 c0       	rjmp	.+2      	; 0x50 <.do_clear_bss_start>

0000004e <.do_clear_bss_loop>:
  4e:	1d 92       	st	X+, r1

00000050 <.do_clear_bss_start>:
  50:	ab 37       	cpi	r26, 0x7B	; 123
  52:	b1 07       	cpc	r27, r17
  54:	e1 f7       	brne	.-8      	; 0x4e <.do_clear_bss_loop>
  56:	6b c0       	rjmp	.+214    	; 0x12e <main>

00000058 <__bad_interrupt>:
  58:	d3 cf       	rjmp	.-90     	; 0x0 <__vectors>

0000005a <__vector_9>:
uint8_t led;
static volatile uint8_t flag;

ISR(UART_TX_vect)
{
  5a:	1f 92       	push	r1
  5c:	0f 92       	push	r0
  5e:	0f b6       	in	r0, 0x3f	; 63
  60:	0f 92       	push	r0
  62:	11 24       	eor	r1, r1
  64:	8f 93       	push	r24
  66:	ef 93       	push	r30
  68:	ff 93       	push	r31
	uart_data_ptr++;
  6a:	e0 91 77 00 	lds	r30, 0x0077
  6e:	f0 91 78 00 	lds	r31, 0x0078
  72:	31 96       	adiw	r30, 0x01	; 1
  74:	f0 93 78 00 	sts	0x0078, r31
  78:	e0 93 77 00 	sts	0x0077, r30
  7c:	31 97       	sbiw	r30, 0x01	; 1

	if(--uart_counter)
  7e:	80 91 7a 00 	lds	r24, 0x007A
  82:	81 50       	subi	r24, 0x01	; 1
  84:	80 93 7a 00 	sts	0x007A, r24
  88:	88 23       	and	r24, r24
  8a:	11 f0       	breq	.+4      	; 0x90 <__vector_9+0x36>
		UDR = *uart_data_ptr;
  8c:	81 81       	ldd	r24, Z+1	; 0x01
  8e:	8c b9       	out	0x0c, r24	; 12
  90:	ff 91       	pop	r31
  92:	ef 91       	pop	r30
  94:	8f 91       	pop	r24
  96:	0f 90       	pop	r0
  98:	0f be       	out	0x3f, r0	; 63
  9a:	0f 90       	pop	r0
  9c:	1f 90       	pop	r1
  9e:	18 95       	reti

000000a0 <__vector_7>:
}

ISR(UART_RX_vect)
{
  a0:	1f 92       	push	r1
  a2:	0f 92       	push	r0
  a4:	0f b6       	in	r0, 0x3f	; 63
  a6:	0f 92       	push	r0
  a8:	11 24       	eor	r1, r1
  aa:	8f 93       	push	r24
	led = UDR;
  ac:	8c b1       	in	r24, 0x0c	; 12
  ae:	80 93 79 00 	sts	0x0079, r24
	PORTB = ~led;
  b2:	80 95       	com	r24
  b4:	88 bb       	out	0x18, r24	; 24
	flag = 1;
  b6:	81 e0       	ldi	r24, 0x01	; 1
  b8:	80 93 76 00 	sts	0x0076, r24
  bc:	8f 91       	pop	r24
  be:	0f 90       	pop	r0
  c0:	0f be       	out	0x3f, r0	; 63
  c2:	0f 90       	pop	r0
  c4:	1f 90       	pop	r1
  c6:	18 95       	reti

000000c8 <uart_send>:
}


void uart_send(uint8_t* buff, uint8_t size)
{
  c8:	f9 2f       	mov	r31, r25
  ca:	e8 2f       	mov	r30, r24
	if(!uart_counter) {
  cc:	80 91 7a 00 	lds	r24, 0x007A
  d0:	88 23       	and	r24, r24
  d2:	41 f4       	brne	.+16     	; 0xe4 <__stack+0x5>
		uart_data_ptr = buff;
  d4:	f0 93 78 00 	sts	0x0078, r31
  d8:	e0 93 77 00 	sts	0x0077, r30
		uart_counter = size;
  dc:	60 93 7a 00 	sts	0x007A, r22
		UDR = *buff;
  e0:	80 81       	ld	r24, Z
  e2:	8c b9       	out	0x0c, r24	; 12
  e4:	08 95       	ret

000000e6 <uart_init>:
	}
}


void uart_init(void)
{
	UCR = _BV(RXCIE) | _BV(TXCIE) | _BV(RXEN) | _BV(TXEN);
  e6:	88 ed       	ldi	r24, 0xD8	; 216
  e8:	8a b9       	out	0x0a, r24	; 10
#ifdef _AVR_IOTN2313_H_
	UBRRH  = (uint8_t)(UART_BAUD_SELECT >> 8);
  ea:	12 b8       	out	0x02, r1	; 2
#endif //attiny2313
	UBRR = (uint8_t)UART_BAUD_SELECT;
  ec:	8c e0       	ldi	r24, 0x0C	; 12
  ee:	89 b9       	out	0x09, r24	; 9
  f0:	08 95       	ret

000000f2 <int2str>:
}

char* int2str(uint8_t num, char* str_val)
{
  f2:	b7 2f       	mov	r27, r23
  f4:	a6 2f       	mov	r26, r22
	uint8_t i;
	uint8_t hi = num >> 4;
  f6:	28 2f       	mov	r18, r24
  f8:	22 95       	swap	r18
  fa:	2f 70       	andi	r18, 0x0F	; 15
	str_val[0] = '0';
  fc:	90 e3       	ldi	r25, 0x30	; 48
  fe:	9c 93       	st	X, r25
	str_val[1] = 'x';
 100:	98 e7       	ldi	r25, 0x78	; 120
 102:	f7 2f       	mov	r31, r23
 104:	e6 2f       	mov	r30, r22
 106:	91 83       	std	Z+1, r25	; 0x01
	str_val[4] = 0;
 108:	14 82       	std	Z+4, r1	; 0x04
 10a:	8f 70       	andi	r24, 0x0F	; 15
 10c:	32 96       	adiw	r30, 0x02	; 2
 10e:	91 e0       	ldi	r25, 0x01	; 1
	for(i=2; i<4; i++) {
		if(hi > 9) str_val[i] = hi + 55;
 110:	2a 30       	cpi	r18, 0x0A	; 10
 112:	40 f0       	brcs	.+16     	; 0x124 <int2str+0x32>
 114:	29 5c       	subi	r18, 0xC9	; 201
		else str_val[i] = hi + 48;
 116:	20 83       	st	Z, r18
		hi = num & 0x0f;
 118:	28 2f       	mov	r18, r24
 11a:	91 50       	subi	r25, 0x01	; 1
 11c:	31 96       	adiw	r30, 0x01	; 1
 11e:	97 ff       	sbrs	r25, 7
 120:	f7 cf       	rjmp	.-18     	; 0x110 <int2str+0x1e>
 122:	02 c0       	rjmp	.+4      	; 0x128 <int2str+0x36>
 124:	20 5d       	subi	r18, 0xD0	; 208
 126:	f7 cf       	rjmp	.-18     	; 0x116 <int2str+0x24>
	}
	return str_val;
}
 128:	8a 2f       	mov	r24, r26
 12a:	9b 2f       	mov	r25, r27
 12c:	08 95       	ret

0000012e <main>:
	
		

int main(void)
{
 12e:	c5 ec       	ldi	r28, 0xC5	; 197
 130:	d0 e0       	ldi	r29, 0x00	; 0
 132:	de bf       	out	0x3e, r29	; 62
 134:	cd bf       	out	0x3d, r28	; 61
	char str_val[5];
	char message[21] = "Recive value:";
 136:	0c 2f       	mov	r16, r28
 138:	1d 2f       	mov	r17, r29
 13a:	0a 5f       	subi	r16, 0xFA	; 250
 13c:	1f 4f       	sbci	r17, 0xFF	; 255
 13e:	20 e6       	ldi	r18, 0x60	; 96
 140:	a2 2e       	mov	r10, r18
 142:	20 e0       	ldi	r18, 0x00	; 0
 144:	b2 2e       	mov	r11, r18
 146:	8e e0       	ldi	r24, 0x0E	; 14
 148:	b1 2f       	mov	r27, r17
 14a:	a0 2f       	mov	r26, r16
 14c:	fb 2d       	mov	r31, r11
 14e:	ea 2d       	mov	r30, r10
 150:	01 90       	ld	r0, Z+
 152:	0d 92       	st	X+, r0
 154:	8a 95       	dec	r24
 156:	e1 f7       	brne	.-8      	; 0x150 <main+0x22>
 158:	87 e0       	ldi	r24, 0x07	; 7
 15a:	fd 2f       	mov	r31, r29
 15c:	ec 2f       	mov	r30, r28
 15e:	74 96       	adiw	r30, 0x14	; 20
 160:	11 92       	st	Z+, r1
 162:	8a 95       	dec	r24
 164:	e9 f7       	brne	.-6      	; 0x160 <main+0x32>
	char* ptr;

	uart_init();
 166:	bf df       	rcall	.-130    	; 0xe6 <uart_init>

	DDRB = 0xff;
 168:	8f ef       	ldi	r24, 0xFF	; 255
 16a:	87 bb       	out	0x17, r24	; 23
	PORTB = 0x00;
 16c:	18 ba       	out	0x18, r1	; 24

	flag = 0;
 16e:	10 92 76 00 	sts	0x0076, r1
	
	sei();
 172:	78 94       	sei

	led = 'o';
 174:	8f e6       	ldi	r24, 0x6F	; 111
 176:	80 93 79 00 	sts	0x0079, r24
 17a:	9e e0       	ldi	r25, 0x0E	; 14
 17c:	99 2e       	mov	r9, r25
 17e:	83 e2       	ldi	r24, 0x23	; 35
 180:	c8 2e       	mov	r12, r24
 182:	83 e2       	ldi	r24, 0x23	; 35
 184:	d8 2e       	mov	r13, r24
 186:	83 e2       	ldi	r24, 0x23	; 35
 188:	e8 2e       	mov	r14, r24
 18a:	f1 2c       	mov	r15, r1

	while(1) {
		if(flag == 1) {
 18c:	80 91 76 00 	lds	r24, 0x0076
 190:	81 30       	cpi	r24, 0x01	; 1
 192:	e1 f7       	brne	.-8      	; 0x18c <main+0x5e>
			strcpy(message, "Recive value:");
 194:	b1 2f       	mov	r27, r17
 196:	a0 2f       	mov	r26, r16
 198:	fb 2d       	mov	r31, r11
 19a:	ea 2d       	mov	r30, r10
 19c:	89 2d       	mov	r24, r9
 19e:	01 90       	ld	r0, Z+
 1a0:	0d 92       	st	X+, r0
 1a2:	8a 95       	dec	r24
 1a4:	e1 f7       	brne	.-8      	; 0x19e <main+0x70>
			int2str(led, str_val);
 1a6:	6c 2f       	mov	r22, r28
 1a8:	7d 2f       	mov	r23, r29
 1aa:	6f 5f       	subi	r22, 0xFF	; 255
 1ac:	7f 4f       	sbci	r23, 0xFF	; 255
 1ae:	80 91 79 00 	lds	r24, 0x0079
 1b2:	9f df       	rcall	.-194    	; 0xf2 <int2str>
			strcat(message, str_val);
 1b4:	6c 2f       	mov	r22, r28
 1b6:	7d 2f       	mov	r23, r29
 1b8:	6f 5f       	subi	r22, 0xFF	; 255
 1ba:	7f 4f       	sbci	r23, 0xFF	; 255
 1bc:	91 2f       	mov	r25, r17
 1be:	80 2f       	mov	r24, r16
 1c0:	11 d0       	rcall	.+34     	; 0x1e4 <strcat>
			strcat(message, "###");
 1c2:	f1 2f       	mov	r31, r17
 1c4:	e0 2f       	mov	r30, r16
 1c6:	01 90       	ld	r0, Z+
 1c8:	00 20       	and	r0, r0
 1ca:	e9 f7       	brne	.-6      	; 0x1c6 <main+0x98>
 1cc:	31 97       	sbiw	r30, 0x01	; 1
 1ce:	c0 82       	st	Z, r12
 1d0:	d1 82       	std	Z+1, r13	; 0x01
 1d2:	e2 82       	std	Z+2, r14	; 0x02
 1d4:	f3 82       	std	Z+3, r15	; 0x03
			uart_send(message, sizeof(message)-1);
 1d6:	64 e1       	ldi	r22, 0x14	; 20
 1d8:	91 2f       	mov	r25, r17
 1da:	80 2f       	mov	r24, r16
 1dc:	75 df       	rcall	.-278    	; 0xc8 <uart_send>

			flag = 0;
 1de:	10 92 76 00 	sts	0x0076, r1
 1e2:	d4 cf       	rjmp	.-88     	; 0x18c <main+0x5e>

000001e4 <strcat>:
 1e4:	e6 2f       	mov	r30, r22
 1e6:	f7 2f       	mov	r31, r23
 1e8:	a8 2f       	mov	r26, r24
 1ea:	b9 2f       	mov	r27, r25
 1ec:	0d 90       	ld	r0, X+
 1ee:	00 20       	and	r0, r0
 1f0:	e9 f7       	brne	.-6      	; 0x1ec <strcat+0x8>
 1f2:	11 97       	sbiw	r26, 0x01	; 1
 1f4:	01 90       	ld	r0, Z+
 1f6:	0d 92       	st	X+, r0
 1f8:	00 20       	and	r0, r0
 1fa:	e1 f7       	brne	.-8      	; 0x1f4 <strcat+0x10>
 1fc:	08 95       	ret

⌨️ 快捷键说明

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