tc0_6.lss

来自「arm的功能测试模块」· LSS 代码 · 共 212 行

LSS
212
字号

TC0_6.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000015c  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  0000015c  000001f0  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000001  00800060  00800060  000001f0  2**0
                  ALLOC
  3 .noinit       00000000  00800061  00800061  000001f0  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000001f0  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  000001f0  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 00000044  00000000  00000000  00000204  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   00000160  00000000  00000000  00000248  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 0000005c  00000000  00000000  000003a8  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   0000012d  00000000  00000000  00000404  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 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 67 00 	jmp	0xce
  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:	ec e5       	ldi	r30, 0x5C	; 92
  68:	f1 e0       	ldi	r31, 0x01	; 1
  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:	a0 36       	cpi	r26, 0x60	; 96
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	a0 e6       	ldi	r26, 0x60	; 96
  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:	a1 36       	cpi	r26, 0x61	; 97
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e
  86:	0c 94 a6 00 	jmp	0x14c

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

0000008e <init_timer0>:
uchar temp;

//对于T/C0的比较匹配输出初始化
void init_timer0(void)
{DDRB|=(1<<PB3);     //PB3(oc0)引脚定义为输出
  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:	80 91 37 00 	lds	r24, 0x0037
  9a:	88 60       	ori	r24, 0x08	; 8
  9c:	80 93 37 00 	sts	0x0037, r24
 TCCR0=0X1c;          //T0 256分频, CTC 模式(WGM01:0 = 2),比较匹配时OC0引脚取反
  a0:	8c e1       	ldi	r24, 0x1C	; 28
  a2:	80 93 53 00 	sts	0x0053, r24
 OCR0=0X7F;           //在CTC 模式(WGM01:0 = 2) 下OCR0 寄存器用于调节计数器的分辨率。当计数器的数值
  a6:	8f e7       	ldi	r24, 0x7F	; 127
  a8:	80 93 5c 00 	sts	0x005C, r24
                      // TCNT0等于OCR0时计数器清零。OCR0定义了计数器的TOP值,亦即计数器的分辨率。
 temp=OCR0;
  ac:	80 91 5c 00 	lds	r24, 0x005C
  b0:	80 93 60 00 	sts	0x0060, r24
 TIFR|=(1<<OCF0);    //对输出比较匹配标志写1清零
  b4:	80 91 58 00 	lds	r24, 0x0058
  b8:	82 60       	ori	r24, 0x02	; 2
  ba:	80 93 58 00 	sts	0x0058, r24
 TIMSK|=(1<<OCIE0);  //使能输出比较匹配功能
  be:	80 91 59 00 	lds	r24, 0x0059
  c2:	82 60       	ori	r24, 0x02	; 2
  c4:	80 93 59 00 	sts	0x0059, r24
  c8:	df 91       	pop	r29
  ca:	cf 91       	pop	r28
  cc:	08 95       	ret

000000ce <__vector_19>:
 }
 
 SIGNAL (SIG_OUTPUT_COMPARE0)     //T/C0输出比较匹配中断服务程序 
 {
  ce:	1f 92       	push	r1
  d0:	0f 92       	push	r0
  d2:	0f b6       	in	r0, 0x3f	; 63
  d4:	0f 92       	push	r0
  d6:	11 24       	eor	r1, r1
  d8:	2f 93       	push	r18
  da:	3f 93       	push	r19
  dc:	8f 93       	push	r24
  de:	9f 93       	push	r25
  e0:	cf 93       	push	r28
  e2:	df 93       	push	r29
  e4:	cd b7       	in	r28, 0x3d	; 61
  e6:	de b7       	in	r29, 0x3e	; 62
  e8:	22 97       	sbiw	r28, 0x02	; 2
  ea:	de bf       	out	0x3e, r29	; 62
  ec:	cd bf       	out	0x3d, r28	; 61
  switch(temp)
  ee:	80 91 60 00 	lds	r24, 0x0060
  f2:	28 2f       	mov	r18, r24
  f4:	33 27       	eor	r19, r19
  f6:	29 83       	std	Y+1, r18	; 0x01
  f8:	3a 83       	std	Y+2, r19	; 0x02
  fa:	89 81       	ldd	r24, Y+1	; 0x01
  fc:	9a 81       	ldd	r25, Y+2	; 0x02
  fe:	8f 33       	cpi	r24, 0x3F	; 63
 100:	91 05       	cpc	r25, r1
 102:	71 f0       	breq	.+28     	; 0x120
 104:	29 81       	ldd	r18, Y+1	; 0x01
 106:	3a 81       	ldd	r19, Y+2	; 0x02
 108:	2f 37       	cpi	r18, 0x7F	; 127
 10a:	31 05       	cpc	r19, r1
 10c:	09 f0       	breq	.+2      	; 0x110
 10e:	0f c0       	rjmp	.+30     	; 0x12e
  {
   case 0x7F: OCR0=0X3F; temp=OCR0;break;  // 改变OCR0的值,从而该变方波周期
 110:	8f e3       	ldi	r24, 0x3F	; 63
 112:	80 93 5c 00 	sts	0x005C, r24
 116:	80 91 5c 00 	lds	r24, 0x005C
 11a:	80 93 60 00 	sts	0x0060, r24
 11e:	07 c0       	rjmp	.+14     	; 0x12e
   case 0x3F: OCR0=0X7F; temp=OCR0;break;
 120:	8f e7       	ldi	r24, 0x7F	; 127
 122:	80 93 5c 00 	sts	0x005C, r24
 126:	80 91 5c 00 	lds	r24, 0x005C
 12a:	80 93 60 00 	sts	0x0060, r24
 12e:	22 96       	adiw	r28, 0x02	; 2
 130:	f8 94       	cli
 132:	de bf       	out	0x3e, r29	; 62
 134:	cd bf       	out	0x3d, r28	; 61
 136:	df 91       	pop	r29
 138:	cf 91       	pop	r28
 13a:	9f 91       	pop	r25
 13c:	8f 91       	pop	r24
 13e:	3f 91       	pop	r19
 140:	2f 91       	pop	r18
 142:	0f 90       	pop	r0
 144:	0f be       	out	0x3f, r0	; 63
 146:	0f 90       	pop	r0
 148:	1f 90       	pop	r1
 14a:	18 95       	reti

0000014c <main>:
   default: break;
   }
   }
  
 int main(void)
 {
 14c:	cf e5       	ldi	r28, 0x5F	; 95
 14e:	d4 e0       	ldi	r29, 0x04	; 4
 150:	de bf       	out	0x3e, r29	; 62
 152:	cd bf       	out	0x3d, r28	; 61
  init_timer0();
 154:	0e 94 47 00 	call	0x8e
  sei();
 158:	78 94       	sei
  while(1){;}
 15a:	ff cf       	rjmp	.-2      	; 0x15a

⌨️ 快捷键说明

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