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

📄 main.lss

📁 ATmaga128单片机TIMER1(16位定时器)程序 通过设计寄存器的值可以实现准确的定时信号输出
💻 LSS
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000010  00800100  000001d8  0000024c  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         000001d8  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          00000001  00800110  000001e8  0000025c  2**0
                  ALLOC
  3 .debug_aranges 00000020  00000000  00000000  0000025c  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_pubnames 00000066  00000000  00000000  0000027c  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_info   00000189  00000000  00000000  000002e2  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_abbrev 0000012d  00000000  00000000  0000046b  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_line   00000187  00000000  00000000  00000598  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_frame  00000050  00000000  00000000  00000720  2**2
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_str    000000a8  00000000  00000000  00000770  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_loc    00000036  00000000  00000000  00000818  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 46 00 	jmp	0x8c	; 0x8c <__ctors_end>
   4:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
   8:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
   c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  10:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  14:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  18:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  1c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  20:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  24:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  28:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  2c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  30:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  34:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  38:	0c 94 7f 00 	jmp	0xfe	; 0xfe <__vector_14>
  3c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  40:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  44:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  48:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  4c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  50:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  54:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  58:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  5c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  60:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  64:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  68:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  6c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  70:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  74:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  78:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  7c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  80:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  84:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
  88:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>

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:	e8 ed       	ldi	r30, 0xD8	; 216
  a0:	f1 e0       	ldi	r31, 0x01	; 1
  a2:	00 e0       	ldi	r16, 0x00	; 0
  a4:	0b bf       	out	0x3b, r16	; 59
  a6:	02 c0       	rjmp	.+4      	; 0xac <__do_copy_data+0x14>
  a8:	07 90       	elpm	r0, Z+
  aa:	0d 92       	st	X+, r0
  ac:	a0 31       	cpi	r26, 0x10	; 16
  ae:	b1 07       	cpc	r27, r17
  b0:	d9 f7       	brne	.-10     	; 0xa8 <__do_copy_data+0x10>

000000b2 <__do_clear_bss>:
  b2:	11 e0       	ldi	r17, 0x01	; 1
  b4:	a0 e1       	ldi	r26, 0x10	; 16
  b6:	b1 e0       	ldi	r27, 0x01	; 1
  b8:	01 c0       	rjmp	.+2      	; 0xbc <.do_clear_bss_start>

000000ba <.do_clear_bss_loop>:
  ba:	1d 92       	st	X+, r1

000000bc <.do_clear_bss_start>:
  bc:	a1 31       	cpi	r26, 0x11	; 17
  be:	b1 07       	cpc	r27, r17
  c0:	e1 f7       	brne	.-8      	; 0xba <.do_clear_bss_loop>
  c2:	0e 94 a7 00 	call	0x14e	; 0x14e <main>
  c6:	0c 94 ea 00 	jmp	0x1d4	; 0x1d4 <_exit>

000000ca <__bad_interrupt>:
  ca:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

000000ce <display_one_smg>:
参    数: number--显示的内容(0-15)
	  	  position--指定的数码管(1-6)
返回值  : 无
*/
void display_one_smg(uchar num,uchar pos)
{
  ce:	92 b3       	in	r25, 0x12	; 18
  d0:	9f 70       	andi	r25, 0x0F	; 15
  d2:	92 bb       	out	0x12, r25	; 18
	//SMG_INIT();
	PORTD &= 0x0F;
	PORTC = ~SEGMENT[num];
  d4:	e0 e0       	ldi	r30, 0x00	; 0
  d6:	f1 e0       	ldi	r31, 0x01	; 1
  d8:	e8 0f       	add	r30, r24
  da:	f1 1d       	adc	r31, r1
  dc:	80 81       	ld	r24, Z
  de:	80 95       	com	r24
  e0:	85 bb       	out	0x15, r24	; 21
	PORTD = (PORTD|(1<<(pos+4)));
  e2:	22 b3       	in	r18, 0x12	; 18
  e4:	70 e0       	ldi	r23, 0x00	; 0
  e6:	6c 5f       	subi	r22, 0xFC	; 252
  e8:	7f 4f       	sbci	r23, 0xFF	; 255
  ea:	81 e0       	ldi	r24, 0x01	; 1
  ec:	90 e0       	ldi	r25, 0x00	; 0
  ee:	02 c0       	rjmp	.+4      	; 0xf4 <display_one_smg+0x26>
  f0:	88 0f       	add	r24, r24
  f2:	99 1f       	adc	r25, r25
  f4:	6a 95       	dec	r22
  f6:	e2 f7       	brpl	.-8      	; 0xf0 <display_one_smg+0x22>
  f8:	28 2b       	or	r18, r24
  fa:	22 bb       	out	0x12, r18	; 18
}
  fc:	08 95       	ret

000000fe <__vector_14>:
//定时器1溢出中断1服务程序
SIGNAL(SIG_OVERFLOW1)
{
  fe:	1f 92       	push	r1
 100:	0f 92       	push	r0
 102:	0f b6       	in	r0, 0x3f	; 63
 104:	0f 92       	push	r0
 106:	11 24       	eor	r1, r1
 108:	8f 93       	push	r24
    
	TCNT1H=0X57;
 10a:	87 e5       	ldi	r24, 0x57	; 87
 10c:	8d bd       	out	0x2d, r24	; 45
	TCNT1L=0X3F;//初值装入
 10e:	8f e3       	ldi	r24, 0x3F	; 63
 110:	8c bd       	out	0x2c, r24	; 44
//	while(!(TIFR&0X04));//检测溢出标志 
    number++;
 112:	80 91 10 01 	lds	r24, 0x0110
 116:	8f 5f       	subi	r24, 0xFF	; 255
 118:	80 93 10 01 	sts	0x0110, r24
    if(number==60)
 11c:	80 91 10 01 	lds	r24, 0x0110
 120:	8c 33       	cpi	r24, 0x3C	; 60
 122:	11 f4       	brne	.+4      	; 0x128 <__vector_14+0x2a>
	{
	   number=0;
 124:	10 92 10 01 	sts	0x0110, r1
	}
}
 128:	8f 91       	pop	r24
 12a:	0f 90       	pop	r0
 12c:	0f be       	out	0x3f, r0	; 63
 12e:	0f 90       	pop	r0
 130:	1f 90       	pop	r1
 132:	18 95       	reti

00000134 <timer1_inti>:
//定时器初始化函数
void timer1_inti(void)
{
 134:	1e bc       	out	0x2e, r1	; 46
	TCCR1B=0X00;//停止定时器1
	TCNT1H=0X57;//初值装入
 136:	87 e5       	ldi	r24, 0x57	; 87
 138:	8d bd       	out	0x2d, r24	; 45
	TCNT1L=0X3F;
 13a:	8f e3       	ldi	r24, 0x3F	; 63
 13c:	8c bd       	out	0x2c, r24	; 44
	TCCR1A=0X00;
 13e:	1f bc       	out	0x2f, r1	; 47
	TCCR1B=0X04;//256分频,启动定时器1
 140:	84 e0       	ldi	r24, 0x04	; 4
 142:	8e bd       	out	0x2e, r24	; 46
	TIMSK|=0x04;
 144:	87 b7       	in	r24, 0x37	; 55
 146:	84 60       	ori	r24, 0x04	; 4
 148:	87 bf       	out	0x37, r24	; 55
	//SREG|=0x80;
	sei();
 14a:	78 94       	sei
}
 14c:	08 95       	ret

0000014e <main>:

int main(void)
{
 14e:	84 b3       	in	r24, 0x14	; 20
 150:	8f ef       	ldi	r24, 0xFF	; 255
 152:	84 bb       	out	0x14, r24	; 20
 154:	81 b3       	in	r24, 0x11	; 17
 156:	80 6f       	ori	r24, 0xF0	; 240
 158:	81 bb       	out	0x11, r24	; 17
	}
}
//定时器初始化函数
void timer1_inti(void)
{
	TCCR1B=0X00;//停止定时器1
 15a:	1e bc       	out	0x2e, r1	; 46
	TCNT1H=0X57;//初值装入
 15c:	87 e5       	ldi	r24, 0x57	; 87
 15e:	8d bd       	out	0x2d, r24	; 45
	TCNT1L=0X3F;
 160:	8f e3       	ldi	r24, 0x3F	; 63
 162:	8c bd       	out	0x2c, r24	; 44
	TCCR1A=0X00;
 164:	1f bc       	out	0x2f, r1	; 47
	TCCR1B=0X04;//256分频,启动定时器1
 166:	84 e0       	ldi	r24, 0x04	; 4
 168:	8e bd       	out	0x2e, r24	; 46
	TIMSK|=0x04;
 16a:	87 b7       	in	r24, 0x37	; 55
 16c:	84 60       	ori	r24, 0x04	; 4
 16e:	87 bf       	out	0x37, r24	; 55
	//SREG|=0x80;
	sei();
 170:	78 94       	sei
int main(void)
{
	unsigned char rt;
	SMG_INIT();
	timer1_inti();
	number = 0;
 172:	10 92 10 01 	sts	0x0110, r1
	while(1)
	{
			rt = number;
 176:	20 91 10 01 	lds	r18, 0x0110
			PORTD|=0X0F;//PD口清零
 17a:	82 b3       	in	r24, 0x12	; 18
 17c:	8f 60       	ori	r24, 0x0F	; 15
 17e:	82 bb       	out	0x12, r24	; 18
返回值  : 无
*/
void display_one_smg(uchar num,uchar pos)
{
	//SMG_INIT();
	PORTD &= 0x0F;
 180:	82 b3       	in	r24, 0x12	; 18
 182:	8f 70       	andi	r24, 0x0F	; 15
 184:	82 bb       	out	0x12, r24	; 18
	PORTC = ~SEGMENT[num];
 186:	82 2f       	mov	r24, r18
 188:	6a e0       	ldi	r22, 0x0A	; 10
 18a:	0e 94 de 00 	call	0x1bc	; 0x1bc <__udivmodqi4>
 18e:	e8 2f       	mov	r30, r24
 190:	f0 e0       	ldi	r31, 0x00	; 0
 192:	e0 50       	subi	r30, 0x00	; 0
 194:	ff 4f       	sbci	r31, 0xFF	; 255
 196:	80 81       	ld	r24, Z
 198:	80 95       	com	r24
 19a:	85 bb       	out	0x15, r24	; 21
	PORTD = (PORTD|(1<<(pos+4)));
 19c:	95 9a       	sbi	0x12, 5	; 18
返回值  : 无
*/
void display_one_smg(uchar num,uchar pos)
{
	//SMG_INIT();
	PORTD &= 0x0F;
 19e:	82 b3       	in	r24, 0x12	; 18
 1a0:	8f 70       	andi	r24, 0x0F	; 15
 1a2:	82 bb       	out	0x12, r24	; 18
	PORTC = ~SEGMENT[num];
 1a4:	82 2f       	mov	r24, r18
 1a6:	0e 94 de 00 	call	0x1bc	; 0x1bc <__udivmodqi4>
 1aa:	e9 2f       	mov	r30, r25
 1ac:	f0 e0       	ldi	r31, 0x00	; 0
 1ae:	e0 50       	subi	r30, 0x00	; 0
 1b0:	ff 4f       	sbci	r31, 0xFF	; 255
 1b2:	80 81       	ld	r24, Z
 1b4:	80 95       	com	r24
 1b6:	85 bb       	out	0x15, r24	; 21
	PORTD = (PORTD|(1<<(pos+4)));
 1b8:	94 9a       	sbi	0x12, 4	; 18
 1ba:	dd cf       	rjmp	.-70     	; 0x176 <main+0x28>

000001bc <__udivmodqi4>:
 1bc:	99 1b       	sub	r25, r25
 1be:	79 e0       	ldi	r23, 0x09	; 9
 1c0:	04 c0       	rjmp	.+8      	; 0x1ca <__udivmodqi4_ep>

000001c2 <__udivmodqi4_loop>:
 1c2:	99 1f       	adc	r25, r25
 1c4:	96 17       	cp	r25, r22
 1c6:	08 f0       	brcs	.+2      	; 0x1ca <__udivmodqi4_ep>
 1c8:	96 1b       	sub	r25, r22

000001ca <__udivmodqi4_ep>:
 1ca:	88 1f       	adc	r24, r24
 1cc:	7a 95       	dec	r23
 1ce:	c9 f7       	brne	.-14     	; 0x1c2 <__udivmodqi4_loop>
 1d0:	80 95       	com	r24
 1d2:	08 95       	ret

000001d4 <_exit>:
 1d4:	f8 94       	cli

000001d6 <__stop_program>:
 1d6:	ff cf       	rjmp	.-2      	; 0x1d6 <__stop_program>

⌨️ 快捷键说明

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