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

📄 tc1_6.lss

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

TC1_6.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000248  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000082  00800060  00000248  000002dc  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000006  008000e2  008000e2  0000035e  2**0
                  ALLOC
  3 .noinit       00000000  008000e8  008000e8  0000035e  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  0000035e  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  0000035e  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 0000008d  00000000  00000000  00000372  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   0000026e  00000000  00000000  000003ff  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 00000079  00000000  00000000  0000066d  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   0000016f  00000000  00000000  000006e6  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    00000036  00000000  00000000  00000855  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 68 00 	jmp	0xd0
  1c:	0c 94 b5 00 	jmp	0x16a
  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 e4       	ldi	r30, 0x48	; 72
  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:	a2 3e       	cpi	r26, 0xE2	; 226
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	a2 ee       	ldi	r26, 0xE2	; 226
  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:	a8 3e       	cpi	r26, 0xE8	; 232
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e
  86:	0c 94 02 01 	jmp	0x204

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

0000008e <init>:
//unsigned char sin_table[128] ;

//初始化计数器
void init(void)
{
  8e:	cf 93       	push	r28
  90:	df 93       	push	r29
  92:	cd b7       	in	r28, 0x3d	; 61
  94:	de b7       	in	r29, 0x3e	; 62
 TCCR1A|=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);//升序记数时比较匹配将清零OC1A/OC1B,降序记数时比较匹配将置位OC1A/OC1B
  96:	80 91 4f 00 	lds	r24, 0x004F
  9a:	82 6a       	ori	r24, 0xA2	; 162
  9c:	80 93 4f 00 	sts	0x004F, r24
 TCCR1B|=(1<<WGM13)|(1<<CS10);          //10模式,相位修正的PWM模式,TOP值由ICR1决定,时钟不分频
  a0:	80 91 4e 00 	lds	r24, 0x004E
  a4:	81 61       	ori	r24, 0x11	; 17
  a6:	80 93 4e 00 	sts	0x004E, r24
 ICR1=250;                               //置TOP值
  aa:	8a ef       	ldi	r24, 0xFA	; 250
  ac:	90 e0       	ldi	r25, 0x00	; 0
  ae:	90 93 47 00 	sts	0x0047, r25
  b2:	80 93 46 00 	sts	0x0046, r24
 DDRD|=(1<<PD5)|(1<<PD4);              //PD4、PD5设为输出
  b6:	80 91 31 00 	lds	r24, 0x0031
  ba:	80 63       	ori	r24, 0x30	; 48
  bc:	80 93 31 00 	sts	0x0031, r24
 TIMSK|=(1<<OCIE1A)|(1<<OCIE1B);       //允许计数器比较匹配A、B中断
  c0:	80 91 59 00 	lds	r24, 0x0059
  c4:	88 61       	ori	r24, 0x18	; 24
  c6:	80 93 59 00 	sts	0x0059, r24
  ca:	df 91       	pop	r29
  cc:	cf 91       	pop	r28
  ce:	08 95       	ret

000000d0 <__vector_6>:
}

//输出比较A中断服务程序
SIGNAL(SIG_OUTPUT_COMPARE1A)
{
  d0:	1f 92       	push	r1
  d2:	0f 92       	push	r0
  d4:	0f b6       	in	r0, 0x3f	; 63
  d6:	0f 92       	push	r0
  d8:	11 24       	eor	r1, r1
  da:	2f 93       	push	r18
  dc:	3f 93       	push	r19
  de:	4f 93       	push	r20
  e0:	5f 93       	push	r21
  e2:	6f 93       	push	r22
  e4:	7f 93       	push	r23
  e6:	8f 93       	push	r24
  e8:	9f 93       	push	r25
  ea:	af 93       	push	r26
  ec:	bf 93       	push	r27
  ee:	ef 93       	push	r30
  f0:	ff 93       	push	r31
  f2:	cf 93       	push	r28
  f4:	df 93       	push	r29
  f6:	cd b7       	in	r28, 0x3d	; 61
  f8:	de b7       	in	r29, 0x3e	; 62
 i_a+=I_A;                                   //每隔8个取一个数,新样点指针
  fa:	90 91 e2 00 	lds	r25, 0x00E2
  fe:	80 91 60 00 	lds	r24, 0x0060
 102:	89 0f       	add	r24, r25
 104:	80 93 e2 00 	sts	0x00E2, r24
 if (i_a>127)i_a-=128;                      //样点指针调整
 108:	80 91 e2 00 	lds	r24, 0x00E2
 10c:	88 23       	and	r24, r24
 10e:	3c f4       	brge	.+14     	; 0x11e
 110:	80 e8       	ldi	r24, 0x80	; 128
 112:	90 91 e2 00 	lds	r25, 0x00E2
 116:	98 1b       	sub	r25, r24
 118:	89 2f       	mov	r24, r25
 11a:	80 93 e2 00 	sts	0x00E2, r24
 memcpy (ocr_rega,auc_SinParam+i_a,1);      //从EEPROM中取出正弦数据
 11e:	80 91 e2 00 	lds	r24, 0x00E2
 122:	99 27       	eor	r25, r25
 124:	8e 59       	subi	r24, 0x9E	; 158
 126:	9f 4f       	sbci	r25, 0xFF	; 255
 128:	41 e0       	ldi	r20, 0x01	; 1
 12a:	50 e0       	ldi	r21, 0x00	; 0
 12c:	bc 01       	movw	r22, r24
 12e:	84 ee       	ldi	r24, 0xE4	; 228
 130:	90 e0       	ldi	r25, 0x00	; 0
 132:	0e 94 1b 01 	call	0x236
 OCRA=ocr_rega[0];                          //更新OCR1A
 136:	80 91 e4 00 	lds	r24, 0x00E4
 13a:	99 27       	eor	r25, r25
 13c:	90 93 4b 00 	sts	0x004B, r25
 140:	80 93 4a 00 	sts	0x004A, r24
 144:	df 91       	pop	r29
 146:	cf 91       	pop	r28
 148:	ff 91       	pop	r31
 14a:	ef 91       	pop	r30
 14c:	bf 91       	pop	r27
 14e:	af 91       	pop	r26
 150:	9f 91       	pop	r25
 152:	8f 91       	pop	r24
 154:	7f 91       	pop	r23
 156:	6f 91       	pop	r22
 158:	5f 91       	pop	r21
 15a:	4f 91       	pop	r20
 15c:	3f 91       	pop	r19
 15e:	2f 91       	pop	r18
 160:	0f 90       	pop	r0
 162:	0f be       	out	0x3f, r0	; 63
 164:	0f 90       	pop	r0
 166:	1f 90       	pop	r1
 168:	18 95       	reti

0000016a <__vector_7>:
 }
 
 
 //输出比较B中断服务程序
SIGNAL(SIG_OUTPUT_COMPARE1B)
{
 16a:	1f 92       	push	r1
 16c:	0f 92       	push	r0
 16e:	0f b6       	in	r0, 0x3f	; 63
 170:	0f 92       	push	r0
 172:	11 24       	eor	r1, r1
 174:	2f 93       	push	r18
 176:	3f 93       	push	r19
 178:	4f 93       	push	r20
 17a:	5f 93       	push	r21
 17c:	6f 93       	push	r22
 17e:	7f 93       	push	r23
 180:	8f 93       	push	r24
 182:	9f 93       	push	r25
 184:	af 93       	push	r26
 186:	bf 93       	push	r27
 188:	ef 93       	push	r30
 18a:	ff 93       	push	r31
 18c:	cf 93       	push	r28
 18e:	df 93       	push	r29
 190:	cd b7       	in	r28, 0x3d	; 61
 192:	de b7       	in	r29, 0x3e	; 62
 i_b+=I_B;                                 //每隔8个取一个数,新样点指针
 194:	90 91 e3 00 	lds	r25, 0x00E3
 198:	80 91 61 00 	lds	r24, 0x0061
 19c:	89 0f       	add	r24, r25
 19e:	80 93 e3 00 	sts	0x00E3, r24
 if (i_b>127)i_b-=128;                    //样点指针调整
 1a2:	80 91 e3 00 	lds	r24, 0x00E3
 1a6:	88 23       	and	r24, r24
 1a8:	3c f4       	brge	.+14     	; 0x1b8
 1aa:	80 e8       	ldi	r24, 0x80	; 128
 1ac:	90 91 e3 00 	lds	r25, 0x00E3
 1b0:	98 1b       	sub	r25, r24
 1b2:	89 2f       	mov	r24, r25
 1b4:	80 93 e3 00 	sts	0x00E3, r24
 memcpy(ocr_regb,auc_SinParam+i_b,1);     //从EEPROM中取出正弦数据
 1b8:	80 91 e3 00 	lds	r24, 0x00E3
 1bc:	99 27       	eor	r25, r25
 1be:	8e 59       	subi	r24, 0x9E	; 158
 1c0:	9f 4f       	sbci	r25, 0xFF	; 255
 1c2:	41 e0       	ldi	r20, 0x01	; 1
 1c4:	50 e0       	ldi	r21, 0x00	; 0
 1c6:	bc 01       	movw	r22, r24
 1c8:	86 ee       	ldi	r24, 0xE6	; 230
 1ca:	90 e0       	ldi	r25, 0x00	; 0
 1cc:	0e 94 1b 01 	call	0x236
 OCRB=ocr_regb[0];                        //更新OCR1B
 1d0:	80 91 e6 00 	lds	r24, 0x00E6
 1d4:	99 27       	eor	r25, r25
 1d6:	90 93 49 00 	sts	0x0049, r25
 1da:	80 93 48 00 	sts	0x0048, r24
 1de:	df 91       	pop	r29
 1e0:	cf 91       	pop	r28
 1e2:	ff 91       	pop	r31
 1e4:	ef 91       	pop	r30
 1e6:	bf 91       	pop	r27
 1e8:	af 91       	pop	r26
 1ea:	9f 91       	pop	r25
 1ec:	8f 91       	pop	r24
 1ee:	7f 91       	pop	r23
 1f0:	6f 91       	pop	r22
 1f2:	5f 91       	pop	r21
 1f4:	4f 91       	pop	r20
 1f6:	3f 91       	pop	r19
 1f8:	2f 91       	pop	r18
 1fa:	0f 90       	pop	r0
 1fc:	0f be       	out	0x3f, r0	; 63
 1fe:	0f 90       	pop	r0
 200:	1f 90       	pop	r1
 202:	18 95       	reti

00000204 <main>:
 }



//主程序,主要是初始化和进入休眠模式。因为利用AVR的PWM输出实现波形产生,不占用CPU的计算资源,CPU
//可以工作于休眠模式,有助于实现低功耗的设计
int main(void)
{  
 204:	cf e5       	ldi	r28, 0x5F	; 95
 206:	d4 e0       	ldi	r29, 0x04	; 4
 208:	de bf       	out	0x3e, r29	; 62
 20a:	cd bf       	out	0x3d, r28	; 61
 
  //eeprom_read_block(buf, sin_table, 128);  //
  init();    //调用初始化
 20c:	0e 94 47 00 	call	0x8e
  sei();     //开总中断
 210:	78 94       	sei
  set_sleep_mode(SLEEP_MODE_IDLE);  //设置休眠模式为空闲模式
 212:	8f e4       	ldi	r24, 0x4F	; 79
 214:	90 91 55 00 	lds	r25, 0x0055
 218:	89 23       	and	r24, r25
 21a:	80 93 55 00 	sts	0x0055, r24
  while(1)
  {
   sleep_mode();                    //进入休眠状态
 21e:	80 91 55 00 	lds	r24, 0x0055
 222:	80 64       	ori	r24, 0x40	; 64
 224:	80 93 55 00 	sts	0x0055, r24
 228:	88 95       	sleep
 22a:	80 91 55 00 	lds	r24, 0x0055
 22e:	8f 7b       	andi	r24, 0xBF	; 191
 230:	80 93 55 00 	sts	0x0055, r24
 234:	f4 cf       	rjmp	.-24     	; 0x21e

00000236 <memcpy>:
 236:	fb 01       	movw	r30, r22
 238:	dc 01       	movw	r26, r24
 23a:	02 c0       	rjmp	.+4      	; 0x240

0000023c <.memcpy_loop>:
 23c:	01 90       	ld	r0, Z+
 23e:	0d 92       	st	X+, r0

00000240 <.memcpy_start>:
 240:	41 50       	subi	r20, 0x01	; 1
 242:	50 40       	sbci	r21, 0x00	; 0
 244:	d8 f7       	brcc	.-10     	; 0x23c
 246:	08 95       	ret

⌨️ 快捷键说明

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