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

📄 tc1_2.lss

📁 arm的功能测试模块
💻 LSS
📖 第 1 页 / 共 2 页
字号:

TC1_2.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000336  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000006  00800060  00000336  000003ca  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000000c  00800066  00800066  000003d0  2**0
                  ALLOC
  3 .noinit       00000000  00800072  00800072  000003d0  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000003d0  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  000003d0  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 000000e3  00000000  00000000  000003e4  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   000002e2  00000000  00000000  000004c7  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 000000aa  00000000  00000000  000007a9  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   000001d5  00000000  00000000  00000853  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    0000000d  00000000  00000000  00000a28  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 45 00 	jmp	0x8a
  18:	0c 94 45 00 	jmp	0x8a
  1c:	0c 94 45 00 	jmp	0x8a
  20:	0c 94 45 00 	jmp	0x8a
  24:	0c 94 e6 00 	jmp	0x1cc
  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:	e6 e3       	ldi	r30, 0x36	; 54
  68:	f3 e0       	ldi	r31, 0x03	; 3
  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:	a2 37       	cpi	r26, 0x72	; 114
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e
  86:	0c 94 28 01 	jmp	0x250

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

0000008e <USART_Init>:
uchar send_num[6]="98765";

//串口初始化
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( char 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产生方波的子程序1/(1/8*1000000)*255*2)=15686HZ
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=0X71;         //TC2  1分频, 相位修正PWM 模式,向上计数时匹配置位0C0,向下计数匹配
 17c:	81 e7       	ldi	r24, 0x71	; 113
 17e:	80 93 45 00 	sts	0x0045, r24

⌨️ 快捷键说明

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