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

📄 shiyan5.lss

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

shiyan5.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000012  00800100  0000044a  000004de  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         0000044a  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          00000017  00800112  00800112  000004f0  2**0
                  ALLOC
  3 .noinit       00000000  00800129  00800129  000004f0  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000004f0  2**0
                  CONTENTS
  5 .stab         000008b8  00000000  00000000  000004f0  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000a0e  00000000  00000000  00000da8  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

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

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:	ea e4       	ldi	r30, 0x4A	; 74
  a0:	f4 e0       	ldi	r31, 0x04	; 4
  a2:	00 e0       	ldi	r16, 0x00	; 0
  a4:	0b bf       	out	0x3b, r16	; 59
  a6:	02 c0       	rjmp	.+4      	; 0xac

000000a8 <.__do_copy_data_loop>:
  a8:	07 90       	elpm	r0, Z+
  aa:	0d 92       	st	X+, r0

000000ac <.__do_copy_data_start>:
  ac:	a2 31       	cpi	r26, 0x12	; 18
  ae:	b1 07       	cpc	r27, r17
  b0:	d9 f7       	brne	.-10     	; 0xa8

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

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

000000bc <.do_clear_bss_start>:
  bc:	a9 32       	cpi	r26, 0x29	; 41
  be:	b1 07       	cpc	r27, r17
  c0:	e1 f7       	brne	.-8      	; 0xba
  c2:	0c 94 e7 01 	jmp	0x3ce

000000c6 <__bad_interrupt>:
  c6:	0c 94 00 00 	jmp	0x0

000000ca <delay_us>:
int ii=0;
//                      ":"  地址 命令 寄存器地址 寄存器数量 校验 回车 换行
//******************************延时子程序*****************************************
void delay_us(uint16_t u)  //延时2us左右,delay(240)=100us;  
{  
  ca:	cf 93       	push	r28
  cc:	df 93       	push	r29
  ce:	cd b7       	in	r28, 0x3d	; 61
  d0:	de b7       	in	r29, 0x3e	; 62
  d2:	22 97       	sbiw	r28, 0x02	; 2
  d4:	0f b6       	in	r0, 0x3f	; 63
  d6:	f8 94       	cli
  d8:	de bf       	out	0x3e, r29	; 62
  da:	0f be       	out	0x3f, r0	; 63
  dc:	cd bf       	out	0x3d, r28	; 61
  de:	89 83       	std	Y+1, r24	; 0x01
  e0:	9a 83       	std	Y+2, r25	; 0x02
  while(u)  
  e2:	89 81       	ldd	r24, Y+1	; 0x01
  e4:	9a 81       	ldd	r25, Y+2	; 0x02
  e6:	00 97       	sbiw	r24, 0x00	; 0
  e8:	09 f4       	brne	.+2      	; 0xec
  ea:	06 c0       	rjmp	.+12     	; 0xf8
    {  
       u--;  
  ec:	89 81       	ldd	r24, Y+1	; 0x01
  ee:	9a 81       	ldd	r25, Y+2	; 0x02
  f0:	01 97       	sbiw	r24, 0x01	; 1
  f2:	89 83       	std	Y+1, r24	; 0x01
  f4:	9a 83       	std	Y+2, r25	; 0x02
  f6:	f5 cf       	rjmp	.-22     	; 0xe2
    }  
}  
  f8:	22 96       	adiw	r28, 0x02	; 2
  fa:	0f b6       	in	r0, 0x3f	; 63
  fc:	f8 94       	cli
  fe:	de bf       	out	0x3e, r29	; 62
 100:	0f be       	out	0x3f, r0	; 63
 102:	cd bf       	out	0x3d, r28	; 61
 104:	df 91       	pop	r29
 106:	cf 91       	pop	r28
 108:	08 95       	ret

0000010a <delay_ms>:

// 延时nms
void delay_ms(uint16_t m)   
{
 10a:	cf 93       	push	r28
 10c:	df 93       	push	r29
 10e:	cd b7       	in	r28, 0x3d	; 61
 110:	de b7       	in	r29, 0x3e	; 62
 112:	24 97       	sbiw	r28, 0x04	; 4
 114:	0f b6       	in	r0, 0x3f	; 63
 116:	f8 94       	cli
 118:	de bf       	out	0x3e, r29	; 62
 11a:	0f be       	out	0x3f, r0	; 63
 11c:	cd bf       	out	0x3d, r28	; 61
 11e:	89 83       	std	Y+1, r24	; 0x01
 120:	9a 83       	std	Y+2, r25	; 0x02
	uint16_t i;
	for(i=0;i<m;i++)
 122:	1b 82       	std	Y+3, r1	; 0x03
 124:	1c 82       	std	Y+4, r1	; 0x04
 126:	2b 81       	ldd	r18, Y+3	; 0x03
 128:	3c 81       	ldd	r19, Y+4	; 0x04
 12a:	89 81       	ldd	r24, Y+1	; 0x01
 12c:	9a 81       	ldd	r25, Y+2	; 0x02
 12e:	28 17       	cp	r18, r24
 130:	39 07       	cpc	r19, r25
 132:	08 f0       	brcs	.+2      	; 0x136
 134:	0a c0       	rjmp	.+20     	; 0x14a
	{ 
       delay_us(2400);  //延时1ms
 136:	80 e6       	ldi	r24, 0x60	; 96
 138:	99 e0       	ldi	r25, 0x09	; 9
 13a:	0e 94 65 00 	call	0xca
 13e:	8b 81       	ldd	r24, Y+3	; 0x03
 140:	9c 81       	ldd	r25, Y+4	; 0x04
 142:	01 96       	adiw	r24, 0x01	; 1
 144:	8b 83       	std	Y+3, r24	; 0x03
 146:	9c 83       	std	Y+4, r25	; 0x04
 148:	ee cf       	rjmp	.-36     	; 0x126
	}
}
 14a:	24 96       	adiw	r28, 0x04	; 4
 14c:	0f b6       	in	r0, 0x3f	; 63
 14e:	f8 94       	cli
 150:	de bf       	out	0x3e, r29	; 62
 152:	0f be       	out	0x3f, r0	; 63
 154:	cd bf       	out	0x3d, r28	; 61
 156:	df 91       	pop	r29
 158:	cf 91       	pop	r28
 15a:	08 95       	ret

0000015c <delay_s>:

//延时ns
void delay_s(uint16_t n)   
{
 15c:	cf 93       	push	r28
 15e:	df 93       	push	r29
 160:	cd b7       	in	r28, 0x3d	; 61
 162:	de b7       	in	r29, 0x3e	; 62
 164:	24 97       	sbiw	r28, 0x04	; 4
 166:	0f b6       	in	r0, 0x3f	; 63
 168:	f8 94       	cli
 16a:	de bf       	out	0x3e, r29	; 62
 16c:	0f be       	out	0x3f, r0	; 63
 16e:	cd bf       	out	0x3d, r28	; 61
 170:	89 83       	std	Y+1, r24	; 0x01
 172:	9a 83       	std	Y+2, r25	; 0x02
	uint16_t j;
	for(j=0;j<n;j++)
 174:	1b 82       	std	Y+3, r1	; 0x03
 176:	1c 82       	std	Y+4, r1	; 0x04
 178:	2b 81       	ldd	r18, Y+3	; 0x03
 17a:	3c 81       	ldd	r19, Y+4	; 0x04
 17c:	89 81       	ldd	r24, Y+1	; 0x01
 17e:	9a 81       	ldd	r25, Y+2	; 0x02
 180:	28 17       	cp	r18, r24
 182:	39 07       	cpc	r19, r25
 184:	08 f0       	brcs	.+2      	; 0x188
 186:	0a c0       	rjmp	.+20     	; 0x19c
	{
		delay_ms(1000);  //延时1s
 188:	88 ee       	ldi	r24, 0xE8	; 232
 18a:	93 e0       	ldi	r25, 0x03	; 3
 18c:	0e 94 85 00 	call	0x10a
 190:	8b 81       	ldd	r24, Y+3	; 0x03
 192:	9c 81       	ldd	r25, Y+4	; 0x04
 194:	01 96       	adiw	r24, 0x01	; 1
 196:	8b 83       	std	Y+3, r24	; 0x03
 198:	9c 83       	std	Y+4, r25	; 0x04
 19a:	ee cf       	rjmp	.-36     	; 0x178
	}
	
}
 19c:	24 96       	adiw	r28, 0x04	; 4
 19e:	0f b6       	in	r0, 0x3f	; 63
 1a0:	f8 94       	cli
 1a2:	de bf       	out	0x3e, r29	; 62
 1a4:	0f be       	out	0x3f, r0	; 63
 1a6:	cd bf       	out	0x3d, r28	; 61
 1a8:	df 91       	pop	r29
 1aa:	cf 91       	pop	r28
 1ac:	08 95       	ret

000001ae <usart1_init>:

void usart1_init(void)
{
 1ae:	cf 93       	push	r28
 1b0:	df 93       	push	r29
 1b2:	cd b7       	in	r28, 0x3d	; 61
 1b4:	de b7       	in	r29, 0x3e	; 62
  UBRR1H=0x00;
 1b6:	10 92 98 00 	sts	0x0098, r1
  UBRR1L=0x19;//设置波特率为2400bit/s,当晶振频率为7.3728M时
 1ba:	89 e1       	ldi	r24, 0x19	; 25
 1bc:	80 93 99 00 	sts	0x0099, r24
  UCSR1A=0X00;
 1c0:	10 92 9b 00 	sts	0x009B, r1
  UCSR1B=(1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1);//接收允许,发送允许,接收中断使能
 1c4:	88 e9       	ldi	r24, 0x98	; 152
 1c6:	80 93 9a 00 	sts	0x009A, r24
  UCSR1C=(1<<UPM11)|(0<<UPM10)|(1<<UCSZ11);//异步传输,7个数据位,1个停止位,偶校验(根据MODBUS ASCII协议)
 1ca:	84 e2       	ldi	r24, 0x24	; 36
 1cc:	80 93 9d 00 	sts	0x009D, r24
  sbi(DDRD,PD4);//CS485为输出,控制max485的发送和接收
 1d0:	80 91 31 00 	lds	r24, 0x0031
 1d4:	80 61       	ori	r24, 0x10	; 16
 1d6:	80 93 31 00 	sts	0x0031, r24
  cbi(PORTD,PD4);//max485接收使能
 1da:	80 91 32 00 	lds	r24, 0x0032
 1de:	8f 7e       	andi	r24, 0xEF	; 239
 1e0:	80 93 32 00 	sts	0x0032, r24
}
 1e4:	df 91       	pop	r29
 1e6:	cf 91       	pop	r28
 1e8:	08 95       	ret

000001ea <sendchar>:
void sendchar(char data)//发送
{  
 1ea:	cf 93       	push	r28
 1ec:	df 93       	push	r29
 1ee:	cd b7       	in	r28, 0x3d	; 61
 1f0:	de b7       	in	r29, 0x3e	; 62
 1f2:	21 97       	sbiw	r28, 0x01	; 1
 1f4:	0f b6       	in	r0, 0x3f	; 63
 1f6:	f8 94       	cli
 1f8:	de bf       	out	0x3e, r29	; 62
 1fa:	0f be       	out	0x3f, r0	; 63
 1fc:	cd bf       	out	0x3d, r28	; 61
 1fe:	89 83       	std	Y+1, r24	; 0x01
     sbi(PORTD,PD4);//控制max485的发送
 200:	80 91 32 00 	lds	r24, 0x0032
 204:	80 61       	ori	r24, 0x10	; 16
 206:	80 93 32 00 	sts	0x0032, r24
	if(!(UCSR1A&(1<<UDRE1)))//等待UDRE被置位,否则对数据寄存器UDR的写操作将被忽略
 20a:	80 91 9b 00 	lds	r24, 0x009B
 20e:	99 27       	eor	r25, r25
 210:	80 72       	andi	r24, 0x20	; 32
 212:	90 70       	andi	r25, 0x00	; 0
 214:	00 97       	sbiw	r24, 0x00	; 0
 216:	29 f4       	brne	.+10     	; 0x222

⌨️ 快捷键说明

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