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

📄 demo_t1_clock.lss

📁 AVR的时钟程序运用MEGA16的T1功能来完成
💻 LSS
📖 第 1 页 / 共 2 页
字号:

Demo_T1_clock.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000002b8  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000014  00800060  000002b8  0000034c  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000000c  00800074  00800074  00000360  2**0
                  ALLOC
  3 .stab         00000378  00000000  00000000  00000360  2**2
                  CONTENTS, READONLY, DEBUGGING
  4 .stabstr      00000071  00000000  00000000  000006d8  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_aranges 00000020  00000000  00000000  00000749  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 000000d7  00000000  00000000  00000769  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   000002b2  00000000  00000000  00000840  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 00000146  00000000  00000000  00000af2  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   00000329  00000000  00000000  00000c38  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_frame  00000090  00000000  00000000  00000f64  2**2
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_str    00000164  00000000  00000000  00000ff4  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_loc    00000030  00000000  00000000  00001158  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54	; 0x54 <__ctors_end>
   4:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
   8:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
   c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  10:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  14:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  18:	0c 94 12 01 	jmp	0x224	; 0x224 <__vector_6>
  1c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  20:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  24:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  28:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  2c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  30:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  34:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  38:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  3c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  40:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  44:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  48:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  4c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  50:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>

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 eb       	ldi	r30, 0xB8	; 184
  68:	f2 e0       	ldi	r31, 0x02	; 2
  6a:	02 c0       	rjmp	.+4      	; 0x70 <.do_copy_data_start>

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

00000070 <.do_copy_data_start>:
  70:	a4 37       	cpi	r26, 0x74	; 116
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c <.do_copy_data_loop>

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	a4 e7       	ldi	r26, 0x74	; 116
  7a:	b0 e0       	ldi	r27, 0x00	; 0
  7c:	01 c0       	rjmp	.+2      	; 0x80 <.do_clear_bss_start>

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

00000080 <.do_clear_bss_start>:
  80:	a0 38       	cpi	r26, 0x80	; 128
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0e 94 48 01 	call	0x290	; 0x290 <main>
  8a:	0c 94 5b 01 	jmp	0x2b6	; 0x2b6 <_exit>

0000008e <__bad_interrupt>:
  8e:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

00000092 <timer1_init>:


//T1的初始化程序
void timer1_init()
{
  92:	1e bc       	out	0x2e, r1	; 46
    TCCR1B = 0x00;//停止定时器
	TIMSK |= 0x10;//中断允许,CTC匹配中断模式,TOP=3D0
  94:	89 b7       	in	r24, 0x39	; 57
  96:	80 61       	ori	r24, 0x10	; 16
  98:	89 bf       	out	0x39, r24	; 57
	TCNT1H = 0x00;
  9a:	1d bc       	out	0x2d, r1	; 45
	TCNT1L = 0x00;//初始值
  9c:	1c bc       	out	0x2c, r1	; 44
	OCR1AH = 0x03;
  9e:	83 e0       	ldi	r24, 0x03	; 3
  a0:	8b bd       	out	0x2b, r24	; 43
	OCR1AL = 0x0d;//匹配A值  //填充一个数字用0.128MS,那么如果是100MS,就用781次,再下面的程序中,在重复10次就是1S
  a2:	9d e0       	ldi	r25, 0x0D	; 13
  a4:	9a bd       	out	0x2a, r25	; 42
	OCR1BH = 0x00;
  a6:	19 bc       	out	0x29, r1	; 41
	OCR1BL = 0x00;//匹配B值
  a8:	18 bc       	out	0x28, r1	; 40
	ICR1H  = 0xff;
  aa:	8f ef       	ldi	r24, 0xFF	; 255
  ac:	87 bd       	out	0x27, r24	; 39
	ICR1L  = 0xff;//输入捕捉匹配值
  ae:	86 bd       	out	0x26, r24	; 38
	TCCR1A = 0x00;
  b0:	1f bc       	out	0x2f, r1	; 47
	TCCR1B = 0x0d;//启动定时器
  b2:	9e bd       	out	0x2e, r25	; 46
  b4:	08 95       	ret

000000b6 <port_init>:
   
}
   

void port_init()
{
  b6:	8f ef       	ldi	r24, 0xFF	; 255
  b8:	8a bb       	out	0x1a, r24	; 26
  DDRA=0Xff;
  PORTA=0Xff;
  ba:	8b bb       	out	0x1b, r24	; 27
  DDRC=0Xff;
  bc:	84 bb       	out	0x14, r24	; 20
  PORTC=0Xff;
  be:	85 bb       	out	0x15, r24	; 21
  c0:	08 95       	ret

000000c2 <init_devices>:
}
   
   
void init_devices(void)
{
  c2:	f8 94       	cli
	cli(); //禁止所有中断  可以思考这条语句的意思,是什么语言,从哪来,作用是什么?
	MCUCR  = 0x00;
  c4:	15 be       	out	0x35, r1	; 53
	MCUCSR = 0x80;//禁止JTAG
  c6:	80 e8       	ldi	r24, 0x80	; 128
  c8:	84 bf       	out	0x34, r24	; 52
	GICR   = 0x00;
  ca:	1b be       	out	0x3b, r1	; 59
  cc:	8f ef       	ldi	r24, 0xFF	; 255
  ce:	8a bb       	out	0x1a, r24	; 26
  d0:	8b bb       	out	0x1b, r24	; 27
  d2:	84 bb       	out	0x14, r24	; 20
  d4:	85 bb       	out	0x15, r24	; 21
	port_init();
	timer1_init();
  d6:	0e 94 49 00 	call	0x92	; 0x92 <timer1_init>
	sei();//开全局中断
  da:	78 94       	sei
  dc:	08 95       	ret

000000de <display_handle>:
}

//将要显示的数据拆分成BCD码去显示   
   
void display_handle()
{
  de:	80 91 7c 00 	lds	r24, 0x007C
  e2:	6a e0       	ldi	r22, 0x0A	; 10
  e4:	0e 94 4f 01 	call	0x29e	; 0x29e <__udivmodqi4>
  e8:	a0 e6       	ldi	r26, 0x60	; 96
  ea:	b0 e0       	ldi	r27, 0x00	; 0
  ec:	fd 01       	movw	r30, r26
  ee:	e9 0f       	add	r30, r25
  f0:	f1 1d       	adc	r31, r1
  f2:	80 81       	ld	r24, Z
  f4:	80 93 74 00 	sts	0x0074, r24
  dis_data[0]=disnumber_code[seconds%10];
  dis_data[1]=disnumber_code[seconds/10];
  f8:	80 91 7c 00 	lds	r24, 0x007C
  fc:	0e 94 4f 01 	call	0x29e	; 0x29e <__udivmodqi4>
 100:	fd 01       	movw	r30, r26
 102:	e8 0f       	add	r30, r24
 104:	f1 1d       	adc	r31, r1
 106:	80 81       	ld	r24, Z
 108:	80 93 75 00 	sts	0x0075, r24
  dis_data[2]=disnumber_code[10];
 10c:	20 91 6a 00 	lds	r18, 0x006A
 110:	20 93 76 00 	sts	0x0076, r18
  dis_data[3]=disnumber_code[minutes%10];
 114:	80 91 7d 00 	lds	r24, 0x007D
 118:	0e 94 4f 01 	call	0x29e	; 0x29e <__udivmodqi4>
 11c:	fd 01       	movw	r30, r26
 11e:	e9 0f       	add	r30, r25
 120:	f1 1d       	adc	r31, r1
 122:	80 81       	ld	r24, Z
 124:	80 93 77 00 	sts	0x0077, r24
  dis_data[4]=disnumber_code[minutes/10];
 128:	80 91 7d 00 	lds	r24, 0x007D
 12c:	0e 94 4f 01 	call	0x29e	; 0x29e <__udivmodqi4>
 130:	fd 01       	movw	r30, r26
 132:	e8 0f       	add	r30, r24
 134:	f1 1d       	adc	r31, r1
 136:	80 81       	ld	r24, Z
 138:	80 93 78 00 	sts	0x0078, r24
  dis_data[5]=disnumber_code[10];
 13c:	20 93 79 00 	sts	0x0079, r18
  dis_data[6]=disnumber_code[hours%10];
 140:	80 91 7e 00 	lds	r24, 0x007E
 144:	0e 94 4f 01 	call	0x29e	; 0x29e <__udivmodqi4>
 148:	fd 01       	movw	r30, r26
 14a:	e9 0f       	add	r30, r25
 14c:	f1 1d       	adc	r31, r1
 14e:	80 81       	ld	r24, Z
 150:	80 93 7a 00 	sts	0x007A, r24
  dis_data[7]=disnumber_code[hours/10];
 154:	80 91 7e 00 	lds	r24, 0x007E
 158:	0e 94 4f 01 	call	0x29e	; 0x29e <__udivmodqi4>
 15c:	a8 0f       	add	r26, r24
 15e:	b1 1d       	adc	r27, r1
 160:	8c 91       	ld	r24, X
 162:	80 93 7b 00 	sts	0x007B, r24
 166:	08 95       	ret

00000168 <display>:
  }
  
//显示服务程序

void display()
{
 168:	cf 93       	push	r28

⌨️ 快捷键说明

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