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

📄 iotxd.lss

📁 模拟串口的通讯程序
💻 LSS
字号:

iotxd.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000000  00800100  0000027e  00000312  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         0000027e  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          00000000  00800100  0000027e  00000312  2**0
                  ALLOC
  3 .noinit       00000000  00800100  00800100  00000312  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000312  2**0
                  CONTENTS
  5 .stab         000005c4  00000000  00000000  00000314  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      000005f1  00000000  00000000  000008d8  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 63 00 	jmp	0xc6
  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:	ee e7       	ldi	r30, 0x7E	; 126
  a0:	f2 e0       	ldi	r31, 0x02	; 2
  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:	a0 30       	cpi	r26, 0x00	; 0
  ae:	b1 07       	cpc	r27, r17
  b0:	d9 f7       	brne	.-10     	; 0xa8

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

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
  c2:	0c 94 d6 00 	jmp	0x1ac

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

000000ca <delay_ms>:
#define TXD_H sbi(PORTE,6)
#define TXD_L cbi(PORTE,6)
#define TXD   sbi(DDRE,6)
void delay_ms(uint16_t ms) 
{ 
  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:	24 97       	sbiw	r28, 0x04	; 4
  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
   uint16_t  i;   
   for(i=0;i<ms;i++ ) 
  e2:	1b 82       	std	Y+3, r1	; 0x03
  e4:	1c 82       	std	Y+4, r1	; 0x04
  e6:	2b 81       	ldd	r18, Y+3	; 0x03
  e8:	3c 81       	ldd	r19, Y+4	; 0x04
  ea:	89 81       	ldd	r24, Y+1	; 0x01
  ec:	9a 81       	ldd	r25, Y+2	; 0x02
  ee:	28 17       	cp	r18, r24
  f0:	39 07       	cpc	r19, r25
  f2:	08 f0       	brcs	.+2      	; 0xf6
  f4:	0a c0       	rjmp	.+20     	; 0x10a
    { 
      _delay_loop_2((uint16_t)(250*14.7456));   //16-bit count, 4 cycles/loop  
  f6:	86 e6       	ldi	r24, 0x66	; 102
  f8:	9e e0       	ldi	r25, 0x0E	; 14
  fa:	0e 94 24 01 	call	0x248
  fe:	8b 81       	ldd	r24, Y+3	; 0x03
 100:	9c 81       	ldd	r25, Y+4	; 0x04
 102:	01 96       	adiw	r24, 0x01	; 1
 104:	8b 83       	std	Y+3, r24	; 0x03
 106:	9c 83       	std	Y+4, r25	; 0x04
 108:	ee cf       	rjmp	.-36     	; 0xe6
    }                                               //8MHz/8000=1ms 8000/4=2000=1ms    
}
 10a:	24 96       	adiw	r28, 0x04	; 4
 10c:	0f b6       	in	r0, 0x3f	; 63
 10e:	f8 94       	cli
 110:	de bf       	out	0x3e, r29	; 62
 112:	0f be       	out	0x3f, r0	; 63
 114:	cd bf       	out	0x3d, r28	; 61
 116:	df 91       	pop	r29
 118:	cf 91       	pop	r28
 11a:	08 95       	ret

0000011c <io_uart_TXD>:
void io_uart_TXD(uint8_t data)
{
 11c:	cf 93       	push	r28
 11e:	df 93       	push	r29
 120:	cd b7       	in	r28, 0x3d	; 61
 122:	de b7       	in	r29, 0x3e	; 62
 124:	22 97       	sbiw	r28, 0x02	; 2
 126:	0f b6       	in	r0, 0x3f	; 63
 128:	f8 94       	cli
 12a:	de bf       	out	0x3e, r29	; 62
 12c:	0f be       	out	0x3f, r0	; 63
 12e:	cd bf       	out	0x3d, r28	; 61
 130:	89 83       	std	Y+1, r24	; 0x01
	uint8_t i=0;
 132:	1a 82       	std	Y+2, r1	; 0x02
	//TXD;
	TXD_L;
 134:	80 91 23 00 	lds	r24, 0x0023
 138:	8f 7b       	andi	r24, 0xBF	; 191
 13a:	80 93 23 00 	sts	0x0023, r24
	_delay_loop_2(371);
 13e:	83 e7       	ldi	r24, 0x73	; 115
 140:	91 e0       	ldi	r25, 0x01	; 1
 142:	0e 94 24 01 	call	0x248
	for(i=0;i<8;i++)
 146:	1a 82       	std	Y+2, r1	; 0x02
 148:	8a 81       	ldd	r24, Y+2	; 0x02
 14a:	88 30       	cpi	r24, 0x08	; 8
 14c:	08 f0       	brcs	.+2      	; 0x150
 14e:	1c c0       	rjmp	.+56     	; 0x188
	{
		if(data&0x01)
 150:	89 81       	ldd	r24, Y+1	; 0x01
 152:	99 27       	eor	r25, r25
 154:	81 70       	andi	r24, 0x01	; 1
 156:	90 70       	andi	r25, 0x00	; 0
 158:	00 97       	sbiw	r24, 0x00	; 0
 15a:	31 f0       	breq	.+12     	; 0x168
			TXD_H;
 15c:	80 91 23 00 	lds	r24, 0x0023
 160:	80 64       	ori	r24, 0x40	; 64
 162:	80 93 23 00 	sts	0x0023, r24
 166:	05 c0       	rjmp	.+10     	; 0x172
		else
			TXD_L;
 168:	80 91 23 00 	lds	r24, 0x0023
 16c:	8f 7b       	andi	r24, 0xBF	; 191
 16e:	80 93 23 00 	sts	0x0023, r24
		_delay_loop_2(371);
 172:	83 e7       	ldi	r24, 0x73	; 115
 174:	91 e0       	ldi	r25, 0x01	; 1
 176:	0e 94 24 01 	call	0x248
		data=data>>1;
 17a:	89 81       	ldd	r24, Y+1	; 0x01
 17c:	86 95       	lsr	r24
 17e:	89 83       	std	Y+1, r24	; 0x01
 180:	8a 81       	ldd	r24, Y+2	; 0x02
 182:	8f 5f       	subi	r24, 0xFF	; 255
 184:	8a 83       	std	Y+2, r24	; 0x02
 186:	e0 cf       	rjmp	.-64     	; 0x148
	}
	TXD_H;
 188:	80 91 23 00 	lds	r24, 0x0023
 18c:	80 64       	ori	r24, 0x40	; 64
 18e:	80 93 23 00 	sts	0x0023, r24
	_delay_loop_2(371);
 192:	83 e7       	ldi	r24, 0x73	; 115
 194:	91 e0       	ldi	r25, 0x01	; 1
 196:	0e 94 24 01 	call	0x248
}
 19a:	22 96       	adiw	r28, 0x02	; 2
 19c:	0f b6       	in	r0, 0x3f	; 63
 19e:	f8 94       	cli
 1a0:	de bf       	out	0x3e, r29	; 62
 1a2:	0f be       	out	0x3f, r0	; 63
 1a4:	cd bf       	out	0x3d, r28	; 61
 1a6:	df 91       	pop	r29
 1a8:	cf 91       	pop	r28
 1aa:	08 95       	ret

000001ac <main>:
int main(void)
{
 1ac:	ca ef       	ldi	r28, 0xFA	; 250
 1ae:	d0 e1       	ldi	r29, 0x10	; 16
 1b0:	de bf       	out	0x3e, r29	; 62
 1b2:	cd bf       	out	0x3d, r28	; 61
	uint8_t i;
	uint16_t TIME_COUNT;
	uint8_t time_high,time_low;
	TXD;
 1b4:	80 91 22 00 	lds	r24, 0x0022
 1b8:	80 64       	ori	r24, 0x40	; 64
 1ba:	80 93 22 00 	sts	0x0022, r24
	TXD_H;
 1be:	80 91 23 00 	lds	r24, 0x0023
 1c2:	80 64       	ori	r24, 0x40	; 64
 1c4:	80 93 23 00 	sts	0x0023, r24
	/*delay_ms(3000);
	
	//变量定义
//选择快速PWM模式
	TCCR1B|=(1<<WGM12)|(1<<WGM13);
	TCCR1A|=3<<WGM10;

	//预分频1
	TCCR1B&=0xF8;//11111 000
	TCCR1B|=0x01;//00000 011
	OCR1A=0xfff0;
	//OCR1A=0x2880;
	_delay_loop_2(371);
	//将预分频置0,终止定时器
	TCCR1B&=0xF8;//1111 1000
	TIME_COUNT=TCNT1;
	time_high=TIME_COUNT/256;
	time_low=TIME_COUNT%256;
	//while(1);
	delay_ms(1000);
	io_uart_TXD(0x53);
	delay_ms(1000);
	io_uart_TXD(0x54);
	delay_ms(1000);
	io_uart_TXD(0x55);
	delay_ms(1000);
	io_uart_TXD(time_high);
	delay_ms(1000);
	io_uart_TXD(time_low);
	delay_ms(1000);*/
	io_uart_TXD(0x51);
 1c8:	81 e5       	ldi	r24, 0x51	; 81
 1ca:	0e 94 8e 00 	call	0x11c
	io_uart_TXD(0x52);
 1ce:	82 e5       	ldi	r24, 0x52	; 82
 1d0:	0e 94 8e 00 	call	0x11c
	io_uart_TXD(0x33);
 1d4:	83 e3       	ldi	r24, 0x33	; 51
 1d6:	0e 94 8e 00 	call	0x11c
	io_uart_TXD(0x54);
 1da:	84 e5       	ldi	r24, 0x54	; 84
 1dc:	0e 94 8e 00 	call	0x11c
	io_uart_TXD(0x55);
 1e0:	85 e5       	ldi	r24, 0x55	; 85
 1e2:	0e 94 8e 00 	call	0x11c
	io_uart_TXD(0x34);
 1e6:	84 e3       	ldi	r24, 0x34	; 52
 1e8:	0e 94 8e 00 	call	0x11c
	io_uart_TXD(0x35);
 1ec:	85 e3       	ldi	r24, 0x35	; 53
 1ee:	0e 94 8e 00 	call	0x11c
	io_uart_TXD(0x56);
 1f2:	86 e5       	ldi	r24, 0x56	; 86
 1f4:	0e 94 8e 00 	call	0x11c
	io_uart_TXD(0x37);	
 1f8:	87 e3       	ldi	r24, 0x37	; 55
 1fa:	0e 94 8e 00 	call	0x11c
	for(i=0;;i++)
 1fe:	19 82       	std	Y+1, r1	; 0x01
	{
		io_uart_TXD(i);
 200:	89 81       	ldd	r24, Y+1	; 0x01
 202:	0e 94 8e 00 	call	0x11c
		if(i==0xff)
 206:	89 81       	ldd	r24, Y+1	; 0x01
 208:	8f 3f       	cpi	r24, 0xFF	; 255
 20a:	09 f4       	brne	.+2      	; 0x20e
		break;
 20c:	04 c0       	rjmp	.+8      	; 0x216
 20e:	89 81       	ldd	r24, Y+1	; 0x01
 210:	8f 5f       	subi	r24, 0xFF	; 255
 212:	89 83       	std	Y+1, r24	; 0x01
 214:	f5 cf       	rjmp	.-22     	; 0x200
		//delay_ms(1000);
	}
	for(i=0;;i++)
 216:	19 82       	std	Y+1, r1	; 0x01
	{
		io_uart_TXD(i);
 218:	89 81       	ldd	r24, Y+1	; 0x01
 21a:	0e 94 8e 00 	call	0x11c
		if(i==0xff)
 21e:	89 81       	ldd	r24, Y+1	; 0x01
 220:	8f 3f       	cpi	r24, 0xFF	; 255
 222:	09 f4       	brne	.+2      	; 0x226
		break;
 224:	04 c0       	rjmp	.+8      	; 0x22e
 226:	89 81       	ldd	r24, Y+1	; 0x01
 228:	8f 5f       	subi	r24, 0xFF	; 255
 22a:	89 83       	std	Y+1, r24	; 0x01
 22c:	f5 cf       	rjmp	.-22     	; 0x218
		//delay_ms(1000);
	}
	for(i=0;;i++)
 22e:	19 82       	std	Y+1, r1	; 0x01
	{
		io_uart_TXD(i);
 230:	89 81       	ldd	r24, Y+1	; 0x01
 232:	0e 94 8e 00 	call	0x11c
		if(i==0xff)
 236:	89 81       	ldd	r24, Y+1	; 0x01
 238:	8f 3f       	cpi	r24, 0xFF	; 255
 23a:	09 f4       	brne	.+2      	; 0x23e
		break;
 23c:	04 c0       	rjmp	.+8      	; 0x246
 23e:	89 81       	ldd	r24, Y+1	; 0x01
 240:	8f 5f       	subi	r24, 0xFF	; 255
 242:	89 83       	std	Y+1, r24	; 0x01
 244:	f5 cf       	rjmp	.-22     	; 0x230
		//delay_ms(1000);
	}
	while(1);
 246:	ff cf       	rjmp	.-2      	; 0x246

00000248 <_delay_loop_2>:

/* 16-bit count, 4 cycles/loop */
static __inline__ void
_delay_loop_2(uint16_t __count)
{
 248:	cf 93       	push	r28
 24a:	df 93       	push	r29
 24c:	cd b7       	in	r28, 0x3d	; 61
 24e:	de b7       	in	r29, 0x3e	; 62
 250:	22 97       	sbiw	r28, 0x02	; 2
 252:	0f b6       	in	r0, 0x3f	; 63
 254:	f8 94       	cli
 256:	de bf       	out	0x3e, r29	; 62
 258:	0f be       	out	0x3f, r0	; 63
 25a:	cd bf       	out	0x3d, r28	; 61
 25c:	89 83       	std	Y+1, r24	; 0x01
 25e:	9a 83       	std	Y+2, r25	; 0x02
	asm volatile (
 260:	89 81       	ldd	r24, Y+1	; 0x01
 262:	9a 81       	ldd	r25, Y+2	; 0x02
 264:	01 97       	sbiw	r24, 0x01	; 1
 266:	f1 f7       	brne	.-4      	; 0x264
 268:	89 83       	std	Y+1, r24	; 0x01
 26a:	9a 83       	std	Y+2, r25	; 0x02
		"1: sbiw %0,1" "\n\t"
		"brne 1b"
		: "=w" (__count)
		: "0" (__count)
	);
}
 26c:	22 96       	adiw	r28, 0x02	; 2
 26e:	0f b6       	in	r0, 0x3f	; 63
 270:	f8 94       	cli
 272:	de bf       	out	0x3e, r29	; 62
 274:	0f be       	out	0x3f, r0	; 63
 276:	cd bf       	out	0x3d, r28	; 61
 278:	df 91       	pop	r29
 27a:	cf 91       	pop	r28
 27c:	08 95       	ret

⌨️ 快捷键说明

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