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

📄 main.lss

📁 串口程序源码
💻 LSS
📖 第 1 页 / 共 2 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000580  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000032  00800060  00000580  00000614  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000039  00800092  00800092  00000646  2**0
                  ALLOC
  3 .debug_aranges 00000020  00000000  00000000  00000646  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_pubnames 000000a7  00000000  00000000  00000666  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_info   00000aa0  00000000  00000000  0000070d  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_abbrev 000001ce  00000000  00000000  000011ad  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_line   000005b7  00000000  00000000  0000137b  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_frame  00000090  00000000  00000000  00001934  2**2
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_str    00000104  00000000  00000000  000019c4  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_loc    0000036b  00000000  00000000  00001ac8  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_ranges 00000048  00000000  00000000  00001e33  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54	; 0x54 <__ctors_end>
   4:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
   8:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
   c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  10:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  14:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  18:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  1c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  20:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  24:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  28:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  2c:	0c 94 57 00 	jmp	0xae	; 0xae <__vector_11>
  30:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  34:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  38:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  3c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  40:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  44:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  48:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  4c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  50:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>

00000054 <__ctors_end>:
  54:	11 24       	eor	r1, r1
  56:	1f be       	out	0x3f, r1	; 63
  58:	cf e5       	ldi	r28, 0x5F	; 95
  5a:	d4 e0       	ldi	r29, 0x04	; 4
  5c:	de bf       	out	0x3e, r29	; 62
  5e:	cd bf       	out	0x3d, r28	; 61

00000060 <__do_copy_data>:
  60:	10 e0       	ldi	r17, 0x00	; 0
  62:	a0 e6       	ldi	r26, 0x60	; 96
  64:	b0 e0       	ldi	r27, 0x00	; 0
  66:	e0 e8       	ldi	r30, 0x80	; 128
  68:	f5 e0       	ldi	r31, 0x05	; 5
  6a:	02 c0       	rjmp	.+4      	; 0x70 <.do_copy_data_start>

0000006c <.do_copy_data_loop>:
  6c:	05 90       	lpm	r0, Z+
  6e:	0d 92       	st	X+, r0

00000070 <.do_copy_data_start>:
  70:	a2 39       	cpi	r26, 0x92	; 146
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c <.do_copy_data_loop>

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	a2 e9       	ldi	r26, 0x92	; 146
  7a:	b0 e0       	ldi	r27, 0x00	; 0
  7c:	01 c0       	rjmp	.+2      	; 0x80 <.do_clear_bss_start>

0000007e <.do_clear_bss_loop>:
  7e:	1d 92       	st	X+, r1

00000080 <.do_clear_bss_start>:
  80:	ab 3c       	cpi	r26, 0xCB	; 203
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0e 94 11 01 	call	0x222	; 0x222 <main>
  8a:	0c 94 be 02 	jmp	0x57c	; 0x57c <_exit>

0000008e <__bad_interrupt>:
  8e:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

00000092 <usart_init>:
	}
}

void usart_init(void)//串口初始化函数
{
	UCSRB|=((1<<RXCIE)|(1<<RXEN)|(1<<TXEN));//异步串口,开接受中断
  92:	8a b1       	in	r24, 0x0a	; 10
  94:	88 69       	ori	r24, 0x98	; 152
  96:	8a b9       	out	0x0a, r24	; 10
	UCSRC|=((1<<URSEL)|(0<<UMSEL)|(1<<UPM1)|(0<<UPM0)
  98:	80 b5       	in	r24, 0x20	; 32
  9a:	86 6a       	ori	r24, 0xA6	; 166
  9c:	80 bd       	out	0x20, r24	; 32
		|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0));//偶校验,1个停止位,8位
	UBRRH|=((0<<URSEL));
  9e:	80 b5       	in	r24, 0x20	; 32
  a0:	80 bd       	out	0x20, r24	; 32
	UBRRL=51;//波特率:9600bps.//8M频率
  a2:	83 e3       	ldi	r24, 0x33	; 51
  a4:	89 b9       	out	0x09, r24	; 9
}
  a6:	08 95       	ret

000000a8 <trans_uart>:
void trans_uart(uchar dat)//串口传送函数
{
	while(!(UCSRA|(1<<UDRE)));//判断数据寄存器是否可用
  a8:	9b b1       	in	r25, 0x0b	; 11
			UDR=dat;
  aa:	8c b9       	out	0x0c, r24	; 12
}
  ac:	08 95       	ret

000000ae <__vector_11>:
SIGNAL(SIG_UART_RECV)
{
  ae:	1f 92       	push	r1
  b0:	0f 92       	push	r0
  b2:	0f b6       	in	r0, 0x3f	; 63
  b4:	0f 92       	push	r0
  b6:	11 24       	eor	r1, r1
  b8:	8f 93       	push	r24
  ba:	9f 93       	push	r25
  bc:	ef 93       	push	r30
  be:	ff 93       	push	r31
	uchar temp=0;
	temp=UDR;
  c0:	9c b1       	in	r25, 0x0c	; 12
	PORTB=temp;
  c2:	98 bb       	out	0x18, r25	; 24
	trs[i]=temp;
  c4:	80 91 ca 00 	lds	r24, 0x00CA
  c8:	e8 2f       	mov	r30, r24
  ca:	f0 e0       	ldi	r31, 0x00	; 0
  cc:	e0 5a       	subi	r30, 0xA0	; 160
  ce:	ff 4f       	sbci	r31, 0xFF	; 255
  d0:	90 83       	st	Z, r25
	i++;
  d2:	8f 5f       	subi	r24, 0xFF	; 255
  d4:	80 93 ca 00 	sts	0x00CA, r24
	if(i==10)
  d8:	8a 30       	cpi	r24, 0x0A	; 10
  da:	11 f4       	brne	.+4      	; 0xe0 <__vector_11+0x32>
		i=0;
  dc:	10 92 ca 00 	sts	0x00CA, r1
	//trans_uart(temp);
	while(!(UCSRA|(1<<UDRE)));//判断数据寄存器是否可用
  e0:	8b b1       	in	r24, 0x0b	; 11
		UDR=temp;
  e2:	9c b9       	out	0x0c, r25	; 12
		q=temp;
  e4:	90 93 92 00 	sts	0x0092, r25
  e8:	10 92 93 00 	sts	0x0093, r1
	//UCSRB|=(1<<TXEN);
}
  ec:	ff 91       	pop	r31
  ee:	ef 91       	pop	r30
  f0:	9f 91       	pop	r25
  f2:	8f 91       	pop	r24
  f4:	0f 90       	pop	r0
  f6:	0f be       	out	0x3f, r0	; 63
  f8:	0f 90       	pop	r0
  fa:	1f 90       	pop	r1
  fc:	18 95       	reti

000000fe <delay>:
void delay(uint x)
{
	uint y=0,z=0;
	for(y=x;y>0;y--)
		for(z=124;z>0;z--);
}
  fe:	08 95       	ret

00000100 <byte_write>:


//*********************写液晶函数(1602)**********************************//
void byte_write(uchar rs,uchar dat)//写液晶函数
{
	if(rs==1)
 100:	81 30       	cpi	r24, 0x01	; 1
 102:	11 f4       	brne	.+4      	; 0x108 <byte_write+0x8>
		PORTC|=(1<<rs_lcd);
 104:	aa 9a       	sbi	0x15, 2	; 21
 106:	01 c0       	rjmp	.+2      	; 0x10a <byte_write+0xa>
	else
		PORTC&=(~(1<<rs_lcd));
 108:	aa 98       	cbi	0x15, 2	; 21
//	rw_lcd=0;
	PORTC&=(~(1<<en_lcd));
 10a:	ab 98       	cbi	0x15, 3	; 21
	PORTB=dat;
 10c:	68 bb       	out	0x18, r22	; 24
	PORTC|=(1<<en_lcd);
 10e:	ab 9a       	sbi	0x15, 3	; 21
	PORTC&=(~(1<<en_lcd));
 110:	ab 98       	cbi	0x15, 3	; 21
//	rw_lcd=1;
	PORTC|=(1<<rs_lcd);
 112:	aa 9a       	sbi	0x15, 2	; 21
}
 114:	08 95       	ret

00000116 <init_lcd>:
	for(y=x;y>0;y--)
		for(z=124;z>0;z--);
}
//*********************液晶初始化函数(1602)**********************************//
void init_lcd(void)
{
 116:	0f 93       	push	r16
 118:	1f 93       	push	r17
	PORTB=0XFF;
 11a:	9f ef       	ldi	r25, 0xFF	; 255
 11c:	98 bb       	out	0x18, r25	; 24
	PORTC|=((1<<en_lcd)|(1<<rs_lcd));//设置为高
 11e:	85 b3       	in	r24, 0x15	; 21
 120:	8c 60       	ori	r24, 0x0C	; 12
 122:	85 bb       	out	0x15, r24	; 21
	DDRC|=((1<<en_lcd)|(1<<rs_lcd));//设置为输出
 124:	84 b3       	in	r24, 0x14	; 20
 126:	8c 60       	ori	r24, 0x0C	; 12
 128:	84 bb       	out	0x14, r24	; 20
	DDRB=0xff;
 12a:	97 bb       	out	0x17, r25	; 23
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 12c:	80 e0       	ldi	r24, 0x00	; 0
 12e:	9c e6       	ldi	r25, 0x6C	; 108
 130:	01 97       	sbiw	r24, 0x01	; 1
 132:	f1 f7       	brne	.-4      	; 0x130 <init_lcd+0x1a>
	_delay_ms(15);
	byte_write(0,0x38);
 134:	80 e0       	ldi	r24, 0x00	; 0
 136:	68 e3       	ldi	r22, 0x38	; 56
 138:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 13c:	00 e0       	ldi	r16, 0x00	; 0
 13e:	14 e2       	ldi	r17, 0x24	; 36
 140:	c8 01       	movw	r24, r16
 142:	01 97       	sbiw	r24, 0x01	; 1
 144:	f1 f7       	brne	.-4      	; 0x142 <init_lcd+0x2c>
	_delay_ms(5);
	byte_write(0,0x38);
 146:	80 e0       	ldi	r24, 0x00	; 0
 148:	68 e3       	ldi	r22, 0x38	; 56
 14a:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 14e:	c8 01       	movw	r24, r16
 150:	01 97       	sbiw	r24, 0x01	; 1
 152:	f1 f7       	brne	.-4      	; 0x150 <init_lcd+0x3a>
	_delay_ms(5);
	byte_write(0,0x38);
 154:	80 e0       	ldi	r24, 0x00	; 0
 156:	68 e3       	ldi	r22, 0x38	; 56
 158:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 15c:	c8 01       	movw	r24, r16
 15e:	01 97       	sbiw	r24, 0x01	; 1
 160:	f1 f7       	brne	.-4      	; 0x15e <init_lcd+0x48>
	_delay_ms(5);

	byte_write(0,0x38);_delay_ms(5);
 162:	80 e0       	ldi	r24, 0x00	; 0
 164:	68 e3       	ldi	r22, 0x38	; 56
 166:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 16a:	c8 01       	movw	r24, r16
 16c:	01 97       	sbiw	r24, 0x01	; 1
 16e:	f1 f7       	brne	.-4      	; 0x16c <init_lcd+0x56>
	byte_write(0,0x0c);_delay_ms(5);
 170:	80 e0       	ldi	r24, 0x00	; 0
 172:	6c e0       	ldi	r22, 0x0C	; 12
 174:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 178:	c8 01       	movw	r24, r16
 17a:	01 97       	sbiw	r24, 0x01	; 1
 17c:	f1 f7       	brne	.-4      	; 0x17a <init_lcd+0x64>
	byte_write(0,0x06);_delay_ms(5);
 17e:	80 e0       	ldi	r24, 0x00	; 0
 180:	66 e0       	ldi	r22, 0x06	; 6
 182:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 186:	c8 01       	movw	r24, r16
 188:	01 97       	sbiw	r24, 0x01	; 1
 18a:	f1 f7       	brne	.-4      	; 0x188 <init_lcd+0x72>
	byte_write(0,0x01);_delay_ms(5);
 18c:	80 e0       	ldi	r24, 0x00	; 0
 18e:	61 e0       	ldi	r22, 0x01	; 1
 190:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 194:	c8 01       	movw	r24, r16
 196:	01 97       	sbiw	r24, 0x01	; 1
 198:	f1 f7       	brne	.-4      	; 0x196 <init_lcd+0x80>

	byte_write(0,0x80);_delay_ms(1);//地址取在0x80
 19a:	80 e0       	ldi	r24, 0x00	; 0
 19c:	60 e8       	ldi	r22, 0x80	; 128
 19e:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 1a2:	03 e3       	ldi	r16, 0x33	; 51
 1a4:	17 e0       	ldi	r17, 0x07	; 7
 1a6:	c8 01       	movw	r24, r16
 1a8:	01 97       	sbiw	r24, 0x01	; 1
 1aa:	f1 f7       	brne	.-4      	; 0x1a8 <init_lcd+0x92>
	byte_write(1,'T');_delay_ms(1);
 1ac:	81 e0       	ldi	r24, 0x01	; 1
 1ae:	64 e5       	ldi	r22, 0x54	; 84
 1b0:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 1b4:	c8 01       	movw	r24, r16
 1b6:	01 97       	sbiw	r24, 0x01	; 1
 1b8:	f1 f7       	brne	.-4      	; 0x1b6 <init_lcd+0xa0>
	byte_write(1,':');_delay_ms(1);
 1ba:	81 e0       	ldi	r24, 0x01	; 1
 1bc:	6a e3       	ldi	r22, 0x3A	; 58
 1be:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 1c2:	c8 01       	movw	r24, r16
 1c4:	01 97       	sbiw	r24, 0x01	; 1
 1c6:	f1 f7       	brne	.-4      	; 0x1c4 <init_lcd+0xae>

	byte_write(0,0xc0);_delay_ms(1);//地址取在0x80
 1c8:	80 e0       	ldi	r24, 0x00	; 0
 1ca:	60 ec       	ldi	r22, 0xC0	; 192
 1cc:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 1d0:	c8 01       	movw	r24, r16
 1d2:	01 97       	sbiw	r24, 0x01	; 1
 1d4:	f1 f7       	brne	.-4      	; 0x1d2 <init_lcd+0xbc>
	byte_write(1,'M');_delay_ms(1);//
 1d6:	81 e0       	ldi	r24, 0x01	; 1
 1d8:	6d e4       	ldi	r22, 0x4D	; 77
 1da:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 1de:	c8 01       	movw	r24, r16
 1e0:	01 97       	sbiw	r24, 0x01	; 1
 1e2:	f1 f7       	brne	.-4      	; 0x1e0 <init_lcd+0xca>
	byte_write(1,':');_delay_ms(1);
 1e4:	81 e0       	ldi	r24, 0x01	; 1
 1e6:	6a e3       	ldi	r22, 0x3A	; 58
 1e8:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 1ec:	c8 01       	movw	r24, r16
 1ee:	01 97       	sbiw	r24, 0x01	; 1
 1f0:	f1 f7       	brne	.-4      	; 0x1ee <init_lcd+0xd8>

	byte_write(0,0xc9);_delay_ms(1);//地址取在0x80
 1f2:	80 e0       	ldi	r24, 0x00	; 0
 1f4:	69 ec       	ldi	r22, 0xC9	; 201
 1f6:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 1fa:	c8 01       	movw	r24, r16
 1fc:	01 97       	sbiw	r24, 0x01	; 1
 1fe:	f1 f7       	brne	.-4      	; 0x1fc <init_lcd+0xe6>
	byte_write(1,'S');_delay_ms(1);//
 200:	81 e0       	ldi	r24, 0x01	; 1
 202:	63 e5       	ldi	r22, 0x53	; 83
 204:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 208:	c8 01       	movw	r24, r16
 20a:	01 97       	sbiw	r24, 0x01	; 1
 20c:	f1 f7       	brne	.-4      	; 0x20a <init_lcd+0xf4>
	byte_write(1,':');_delay_ms(1);
 20e:	81 e0       	ldi	r24, 0x01	; 1
 210:	6a e3       	ldi	r22, 0x3A	; 58
 212:	0e 94 80 00 	call	0x100	; 0x100 <byte_write>
 216:	c8 01       	movw	r24, r16
 218:	01 97       	sbiw	r24, 0x01	; 1
 21a:	f1 f7       	brne	.-4      	; 0x218 <init_lcd+0x102>
}
 21c:	1f 91       	pop	r17
 21e:	0f 91       	pop	r16
 220:	08 95       	ret

00000222 <main>:
uchar i=0;

int main(void)
{
	uchar n=0,pp=0;
	DDRB=0XFF;
 222:	8f ef       	ldi	r24, 0xFF	; 255
 224:	87 bb       	out	0x17, r24	; 23
	PORTB=0XFF;
 226:	88 bb       	out	0x18, r24	; 24
	}
}

void usart_init(void)//串口初始化函数
{
	UCSRB|=((1<<RXCIE)|(1<<RXEN)|(1<<TXEN));//异步串口,开接受中断
 228:	8a b1       	in	r24, 0x0a	; 10
 22a:	88 69       	ori	r24, 0x98	; 152
 22c:	8a b9       	out	0x0a, r24	; 10
	UCSRC|=((1<<URSEL)|(0<<UMSEL)|(1<<UPM1)|(0<<UPM0)
 22e:	80 b5       	in	r24, 0x20	; 32
 230:	86 6a       	ori	r24, 0xA6	; 166
 232:	80 bd       	out	0x20, r24	; 32
		|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0));//偶校验,1个停止位,8位
	UBRRH|=((0<<URSEL));
 234:	80 b5       	in	r24, 0x20	; 32
 236:	80 bd       	out	0x20, r24	; 32
	UBRRL=51;//波特率:9600bps.//8M频率
 238:	83 e3       	ldi	r24, 0x33	; 51
 23a:	89 b9       	out	0x09, r24	; 9
{
	uchar n=0,pp=0;
	DDRB=0XFF;
	PORTB=0XFF;
	usart_init();
	_SEI();
 23c:	78 94       	sei
	init_lcd();
 23e:	0e 94 8b 00 	call	0x116	; 0x116 <init_lcd>
 242:	20 e0       	ldi	r18, 0x00	; 0
 244:	48 eb       	ldi	r20, 0xB8	; 184
 246:	50 e0       	ldi	r21, 0x00	; 0

⌨️ 快捷键说明

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