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

📄 tc1_1_0.lss

📁 arm的功能测试模块
💻 LSS
字号:

TC1_1_0.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000002e8  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000006  00800060  000002e8  0000037c  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000005  00800066  00800066  00000382  2**0
                  ALLOC
  3 .noinit       00000000  0080006b  0080006b  00000382  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000382  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  00000382  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 0000009e  00000000  00000000  00000396  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   00000253  00000000  00000000  00000434  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 000000aa  00000000  00000000  00000687  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   000001b9  00000000  00000000  00000731  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    0000000d  00000000  00000000  000008ea  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54
   4:	0c 94 45 00 	jmp	0x8a
   8:	0c 94 45 00 	jmp	0x8a
   c:	0c 94 45 00 	jmp	0x8a
  10:	0c 94 45 00 	jmp	0x8a
  14:	0c 94 d9 00 	jmp	0x1b2
  18:	0c 94 45 00 	jmp	0x8a
  1c:	0c 94 45 00 	jmp	0x8a
  20:	0c 94 45 00 	jmp	0x8a
  24:	0c 94 45 00 	jmp	0x8a
  28:	0c 94 45 00 	jmp	0x8a
  2c:	0c 94 45 00 	jmp	0x8a
  30:	0c 94 45 00 	jmp	0x8a
  34:	0c 94 45 00 	jmp	0x8a
  38:	0c 94 45 00 	jmp	0x8a
  3c:	0c 94 45 00 	jmp	0x8a
  40:	0c 94 45 00 	jmp	0x8a
  44:	0c 94 45 00 	jmp	0x8a
  48:	0c 94 45 00 	jmp	0x8a
  4c:	0c 94 45 00 	jmp	0x8a
  50:	0c 94 45 00 	jmp	0x8a

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:	e8 ee       	ldi	r30, 0xE8	; 232
  68:	f2 e0       	ldi	r31, 0x02	; 2
  6a:	02 c0       	rjmp	.+4      	; 0x70

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

00000070 <.do_copy_data_start>:
  70:	a6 36       	cpi	r26, 0x66	; 102
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	a6 e6       	ldi	r26, 0x66	; 102
  7a:	b0 e0       	ldi	r27, 0x00	; 0
  7c:	01 c0       	rjmp	.+2      	; 0x80

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

00000080 <.do_clear_bss_start>:
  80:	ab 36       	cpi	r26, 0x6B	; 107
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e
  86:	0c 94 0d 01 	jmp	0x21a

0000008a <__bad_interrupt>:
  8a:	0c 94 00 00 	jmp	0x0

0000008e <USART_Init>:
 }*/
  
//串口初始化
void USART_Init(void)
{ UCSRB=(1<<TXEN);   //使能发送
  8e:	cf 93       	push	r28
  90:	df 93       	push	r29
  92:	cd b7       	in	r28, 0x3d	; 61
  94:	de b7       	in	r29, 0x3e	; 62
  96:	88 e0       	ldi	r24, 0x08	; 8
  98:	80 93 2a 00 	sts	0x002A, r24
  UBRRL=0X2F;      //设置波特率为9600bit/s 注意点:因为我用的是外部7.3728MHZ所以UBRR为47,而不是51
  9c:	8f e2       	ldi	r24, 0x2F	; 47
  9e:	80 93 29 00 	sts	0x0029, r24
  UBRRH=0X00;
  a2:	10 92 40 00 	sts	0x0040, r1
  UCSRC= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //1位停止位,8位数据位
  a6:	86 e8       	ldi	r24, 0x86	; 134
  a8:	80 93 40 00 	sts	0x0040, r24
  ac:	df 91       	pop	r29
  ae:	cf 91       	pop	r28
  b0:	08 95       	ret

000000b2 <USART_putchar>:
  }
  

   
//put函数命名为USART_putchar,功能是向串口发送单个字符
 int  USART_putchar(uchar c)
{ if (c=='\n')
  b2:	cf 93       	push	r28
  b4:	df 93       	push	r29
  b6:	cd b7       	in	r28, 0x3d	; 61
  b8:	de b7       	in	r29, 0x3e	; 62
  ba:	21 97       	sbiw	r28, 0x01	; 1
  bc:	0f b6       	in	r0, 0x3f	; 63
  be:	f8 94       	cli
  c0:	de bf       	out	0x3e, r29	; 62
  c2:	0f be       	out	0x3f, r0	; 63
  c4:	cd bf       	out	0x3d, r28	; 61
  c6:	89 83       	std	Y+1, r24	; 0x01
  c8:	89 81       	ldd	r24, Y+1	; 0x01
  ca:	8a 30       	cpi	r24, 0x0A	; 10
  cc:	19 f4       	brne	.+6      	; 0xd4
      USART_putchar('\r');
  ce:	8d e0       	ldi	r24, 0x0D	; 13
  d0:	0e 94 59 00 	call	0xb2
   loop_until_bit_is_set(UCSRA,UDRE);
  d4:	80 91 2b 00 	lds	r24, 0x002B
  d8:	99 27       	eor	r25, r25
  da:	96 95       	lsr	r25
  dc:	87 95       	ror	r24
  de:	92 95       	swap	r25
  e0:	82 95       	swap	r24
  e2:	8f 70       	andi	r24, 0x0F	; 15
  e4:	89 27       	eor	r24, r25
  e6:	9f 70       	andi	r25, 0x0F	; 15
  e8:	89 27       	eor	r24, r25
  ea:	81 70       	andi	r24, 0x01	; 1
  ec:	90 70       	andi	r25, 0x00	; 0
  ee:	00 97       	sbiw	r24, 0x00	; 0
  f0:	09 f4       	brne	.+2      	; 0xf4
  f2:	f0 cf       	rjmp	.-32     	; 0xd4
   UDR=c;
  f4:	89 81       	ldd	r24, Y+1	; 0x01
  f6:	80 93 2c 00 	sts	0x002C, r24
   return 0;
  fa:	80 e0       	ldi	r24, 0x00	; 0
  fc:	90 e0       	ldi	r25, 0x00	; 0
  fe:	21 96       	adiw	r28, 0x01	; 1
 100:	0f b6       	in	r0, 0x3f	; 63
 102:	f8 94       	cli
 104:	de bf       	out	0x3e, r29	; 62
 106:	0f be       	out	0x3f, r0	; 63
 108:	cd bf       	out	0x3d, r28	; 61
 10a:	df 91       	pop	r29
 10c:	cf 91       	pop	r28
 10e:	08 95       	ret

00000110 <USART_puts>:
   } 
	

	
//不含回车换行的字符串输出函数 	 
int USART_puts(char *s)
	{
 110:	cf 93       	push	r28
 112:	df 93       	push	r29
 114:	cd b7       	in	r28, 0x3d	; 61
 116:	de b7       	in	r29, 0x3e	; 62
 118:	22 97       	sbiw	r28, 0x02	; 2
 11a:	0f b6       	in	r0, 0x3f	; 63
 11c:	f8 94       	cli
 11e:	de bf       	out	0x3e, r29	; 62
 120:	0f be       	out	0x3f, r0	; 63
 122:	cd bf       	out	0x3d, r28	; 61
 124:	89 83       	std	Y+1, r24	; 0x01
 126:	9a 83       	std	Y+2, r25	; 0x02
	while (*s)
 128:	e9 81       	ldd	r30, Y+1	; 0x01
 12a:	fa 81       	ldd	r31, Y+2	; 0x02
 12c:	80 81       	ld	r24, Z
 12e:	88 23       	and	r24, r24
 130:	59 f0       	breq	.+22     	; 0x148
		{
		USART_putchar(*s);
 132:	e9 81       	ldd	r30, Y+1	; 0x01
 134:	fa 81       	ldd	r31, Y+2	; 0x02
 136:	80 81       	ld	r24, Z
 138:	0e 94 59 00 	call	0xb2
		s++;
 13c:	89 81       	ldd	r24, Y+1	; 0x01
 13e:	9a 81       	ldd	r25, Y+2	; 0x02
 140:	01 96       	adiw	r24, 0x01	; 1
 142:	89 83       	std	Y+1, r24	; 0x01
 144:	9a 83       	std	Y+2, r25	; 0x02
 146:	f0 cf       	rjmp	.-32     	; 0x128
		}	
    USART_putchar(0x0a);//回车换行
 148:	8a e0       	ldi	r24, 0x0A	; 10
 14a:	0e 94 59 00 	call	0xb2
	USART_putchar(0x0d);
 14e:	8d e0       	ldi	r24, 0x0D	; 13
 150:	0e 94 59 00 	call	0xb2
	return 1;
 154:	81 e0       	ldi	r24, 0x01	; 1
 156:	90 e0       	ldi	r25, 0x00	; 0
 158:	22 96       	adiw	r28, 0x02	; 2
 15a:	0f b6       	in	r0, 0x3f	; 63
 15c:	f8 94       	cli
 15e:	de bf       	out	0x3e, r29	; 62
 160:	0f be       	out	0x3f, r0	; 63
 162:	cd bf       	out	0x3d, r28	; 61
 164:	df 91       	pop	r29
 166:	cf 91       	pop	r28
 168:	08 95       	ret

0000016a <t2pwm2>:
	}
 
  
   
/*//二进制转换为十进制函数
void b16td5(uint n)
{
for ( i_w=0;n>=10000; )
 {n=n-10000;
  i_w=i_w+1;}
 for (i_q=0;n>=1000; )
  {n=n-1000;
   i_q=i_q+1;}
 for ( i_b=0;n>=100; )
  {n=n-100;
   i_b=i_b+1;}
 for (i_sh=0;n>=10; )
  {n=n-10;
   i_sh=i_sh+1;}
 i_g=n;
 }*/

//T/C2产生8160us周期方波的子程序1/(8*1000000/128)*255*2=8160us
void t2pwm2(void)
{DDRD|=(1<<PD7);    //PD7(oc2)引脚定义为输出
 16a:	cf 93       	push	r28
 16c:	df 93       	push	r29
 16e:	cd b7       	in	r28, 0x3d	; 61
 170:	de b7       	in	r29, 0x3e	; 62
 172:	80 91 31 00 	lds	r24, 0x0031
 176:	80 68       	ori	r24, 0x80	; 128
 178:	80 93 31 00 	sts	0x0031, r24
 TCCR2=0X75;         //T2  128分频, 相位修正PWM 模式,向上计数时匹配置位0C0,向下计数匹配
 17c:	85 e7       	ldi	r24, 0x75	; 117
 17e:	80 93 45 00 	sts	0x0045, r24
                     //时清除OC0(反向PWM) 
 OCR2=0X80;    
 182:	80 e8       	ldi	r24, 0x80	; 128
 184:	80 93 43 00 	sts	0x0043, r24
 188:	df 91       	pop	r29
 18a:	cf 91       	pop	r28
 18c:	08 95       	ret

0000018e <init_timer1>:
 }
 
 
 //T/C1上升沿捕获,8分频,初始化
 void init_timer1(void)
 {
 18e:	cf 93       	push	r28
 190:	df 93       	push	r29
 192:	cd b7       	in	r28, 0x3d	; 61
 194:	de b7       	in	r29, 0x3e	; 62
  DDRD&=~(1<<PD6);
 196:	80 91 31 00 	lds	r24, 0x0031
 19a:	8f 7b       	andi	r24, 0xBF	; 191
 19c:	80 93 31 00 	sts	0x0031, r24
  TIMSK=0X20;     //允许TIME1的输入捕获
 1a0:	80 e2       	ldi	r24, 0x20	; 32
 1a2:	80 93 59 00 	sts	0x0059, r24
  TCCR1B=0XC2;    //上升沿捕获,8分频
 1a6:	82 ec       	ldi	r24, 0xC2	; 194
 1a8:	80 93 4e 00 	sts	0x004E, r24
 1ac:	df 91       	pop	r29
 1ae:	cf 91       	pop	r28
 1b0:	08 95       	ret

000001b2 <__vector_5>:
 // TIFR=0XFF;      //写1清中断标志
  }
  
 //输入捕获中断服务程序
 SIGNAL (SIG_INPUT_CAPTURE1)
 {temp2=ICR1-temp1;
 1b2:	1f 92       	push	r1
 1b4:	0f 92       	push	r0
 1b6:	0f b6       	in	r0, 0x3f	; 63
 1b8:	0f 92       	push	r0
 1ba:	11 24       	eor	r1, r1
 1bc:	2f 93       	push	r18
 1be:	3f 93       	push	r19
 1c0:	8f 93       	push	r24
 1c2:	9f 93       	push	r25
 1c4:	cf 93       	push	r28
 1c6:	df 93       	push	r29
 1c8:	cd b7       	in	r28, 0x3d	; 61
 1ca:	de b7       	in	r29, 0x3e	; 62
 1cc:	20 91 46 00 	lds	r18, 0x0046
 1d0:	30 91 47 00 	lds	r19, 0x0047
 1d4:	80 91 68 00 	lds	r24, 0x0068
 1d8:	90 91 69 00 	lds	r25, 0x0069
 1dc:	28 1b       	sub	r18, r24
 1de:	39 0b       	sbc	r19, r25
 1e0:	c9 01       	movw	r24, r18
 1e2:	90 93 67 00 	sts	0x0067, r25
 1e6:	80 93 66 00 	sts	0x0066, r24
  temp1=temp2;
 1ea:	80 91 66 00 	lds	r24, 0x0066
 1ee:	90 91 67 00 	lds	r25, 0x0067
 1f2:	90 93 69 00 	sts	0x0069, r25
 1f6:	80 93 68 00 	sts	0x0068, r24
  num++;
 1fa:	80 91 6a 00 	lds	r24, 0x006A
 1fe:	8f 5f       	subi	r24, 0xFF	; 255
 200:	80 93 6a 00 	sts	0x006A, r24
 204:	df 91       	pop	r29
 206:	cf 91       	pop	r28
 208:	9f 91       	pop	r25
 20a:	8f 91       	pop	r24
 20c:	3f 91       	pop	r19
 20e:	2f 91       	pop	r18
 210:	0f 90       	pop	r0
 212:	0f be       	out	0x3f, r0	; 63
 214:	0f 90       	pop	r0
 216:	1f 90       	pop	r1
 218:	18 95       	reti

0000021a <main>:
   }
 
 
int main(void)
{
 21a:	cf e5       	ldi	r28, 0x5F	; 95
 21c:	d4 e0       	ldi	r29, 0x04	; 4
 21e:	de bf       	out	0x3e, r29	; 62
 220:	cd bf       	out	0x3d, r28	; 61
 //DDRB=0XFF;       //定义B口为输出
 //DDRD=0XBF;       // 定义D口除了PD6为输入,其他都为输出
 //PORTC=0xFF;			
 //DDRC=0xFF;				//PC口设为输出高电平,灯灭
 temp1=0x0000;
 222:	10 92 69 00 	sts	0x0069, r1
 226:	10 92 68 00 	sts	0x0068, r1
 num=0;
 22a:	10 92 6a 00 	sts	0x006A, r1
 USART_Init();
 22e:	0e 94 47 00 	call	0x8e
 init_timer1();
 232:	0e 94 c7 00 	call	0x18e
 t2pwm2();
 236:	0e 94 b5 00 	call	0x16a
 sei();
 23a:	78 94       	sei
 while(1)
 {
   if(num>0 && (num%2==0) )
 23c:	80 91 6a 00 	lds	r24, 0x006A
 240:	88 23       	and	r24, r24
 242:	e1 f3       	breq	.-8      	; 0x23c
 244:	80 91 6a 00 	lds	r24, 0x006A
 248:	81 70       	andi	r24, 0x01	; 1
 24a:	88 23       	and	r24, r24
 24c:	b9 f7       	brne	.-18     	; 0x23c
  {
    //b16td5(temp2);
	utoa(temp2,send_num,10);
 24e:	4a e0       	ldi	r20, 0x0A	; 10
 250:	50 e0       	ldi	r21, 0x00	; 0
 252:	60 e6       	ldi	r22, 0x60	; 96
 254:	70 e0       	ldi	r23, 0x00	; 0
 256:	80 91 66 00 	lds	r24, 0x0066
 25a:	90 91 67 00 	lds	r25, 0x0067
 25e:	0e 94 36 01 	call	0x26c
    /*send_num[0]=i_w;
	send_num[1]=i_q;
	send_num[2]=i_b;
	send_num[3]=i_sh;
	send_num[4]=i_g; 
	//send_num[5]= {i_g,i_sh,i_b,i_q,i_w};
	PORTC&=~(1<<PC5);*/
     USART_puts(send_num);
 262:	80 e6       	ldi	r24, 0x60	; 96
 264:	90 e0       	ldi	r25, 0x00	; 0
 266:	0e 94 88 00 	call	0x110
 26a:	e8 cf       	rjmp	.-48     	; 0x23c

0000026c <utoa>:
 26c:	e6 2f       	mov	r30, r22
 26e:	f7 2f       	mov	r31, r23
 270:	2e 2f       	mov	r18, r30
 272:	3f 2f       	mov	r19, r31
 274:	42 30       	cpi	r20, 0x02	; 2
 276:	7c f0       	brlt	.+30     	; 0x296
 278:	45 32       	cpi	r20, 0x25	; 37
 27a:	6c f4       	brge	.+26     	; 0x296

0000027c <divide_loop>:
 27c:	64 2f       	mov	r22, r20
 27e:	77 27       	eor	r23, r23
 280:	0e 94 60 01 	call	0x2c0
 284:	80 5d       	subi	r24, 0xD0	; 208
 286:	8a 33       	cpi	r24, 0x3A	; 58
 288:	0c f0       	brlt	.+2      	; 0x28c
 28a:	89 5d       	subi	r24, 0xD9	; 217

0000028c <L_10>:
 28c:	81 93       	st	Z+, r24
 28e:	86 2f       	mov	r24, r22
 290:	97 2f       	mov	r25, r23
 292:	00 97       	sbiw	r24, 0x00	; 0
 294:	99 f7       	brne	.-26     	; 0x27c

00000296 <terminate>:
 296:	93 2f       	mov	r25, r19
 298:	82 2f       	mov	r24, r18
 29a:	10 82       	st	Z, r1
 29c:	0c 94 50 01 	jmp	0x2a0

000002a0 <strrev>:
 2a0:	dc 01       	movw	r26, r24
 2a2:	fc 01       	movw	r30, r24

000002a4 <.strrev_eos>:
 2a4:	01 90       	ld	r0, Z+
 2a6:	00 20       	and	r0, r0
 2a8:	e9 f7       	brne	.-6      	; 0x2a4
 2aa:	32 97       	sbiw	r30, 0x02	; 2

000002ac <.strrev_loop>:
 2ac:	ae 17       	cp	r26, r30
 2ae:	bf 07       	cpc	r27, r31
 2b0:	30 f4       	brcc	.+12     	; 0x2be
 2b2:	7c 91       	ld	r23, X
 2b4:	60 81       	ld	r22, Z
 2b6:	70 83       	st	Z, r23
 2b8:	31 97       	sbiw	r30, 0x01	; 1
 2ba:	6d 93       	st	X+, r22
 2bc:	f7 cf       	rjmp	.-18     	; 0x2ac

000002be <.strrev_done>:
 2be:	08 95       	ret

000002c0 <__udivmodhi4>:
 2c0:	aa 1b       	sub	r26, r26
 2c2:	bb 1b       	sub	r27, r27
 2c4:	51 e1       	ldi	r21, 0x11	; 17
 2c6:	07 c0       	rjmp	.+14     	; 0x2d6

000002c8 <__udivmodhi4_loop>:
 2c8:	aa 1f       	adc	r26, r26
 2ca:	bb 1f       	adc	r27, r27
 2cc:	a6 17       	cp	r26, r22
 2ce:	b7 07       	cpc	r27, r23
 2d0:	10 f0       	brcs	.+4      	; 0x2d6
 2d2:	a6 1b       	sub	r26, r22
 2d4:	b7 0b       	sbc	r27, r23

000002d6 <__udivmodhi4_ep>:
 2d6:	88 1f       	adc	r24, r24
 2d8:	99 1f       	adc	r25, r25
 2da:	5a 95       	dec	r21
 2dc:	a9 f7       	brne	.-22     	; 0x2c8
 2de:	80 95       	com	r24
 2e0:	90 95       	com	r25
 2e2:	bc 01       	movw	r22, r24
 2e4:	cd 01       	movw	r24, r26
 2e6:	08 95       	ret

⌨️ 快捷键说明

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