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

📄 tc0_3.lss

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

TC0_3.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000258  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000000a  00800060  00000258  000002ec  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000007  0080006a  0080006a  000002f6  2**0
                  ALLOC
  3 .noinit       00000000  00800071  00800071  000002f6  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000002f6  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  000002f6  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 00000085  00000000  00000000  0000030a  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   00000235  00000000  00000000  0000038f  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 000000b0  00000000  00000000  000005c4  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   00000199  00000000  00000000  00000674  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    0000000d  00000000  00000000  0000080d  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 89 00 	jmp	0x112
  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 e5       	ldi	r30, 0x58	; 88
  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:	aa 36       	cpi	r26, 0x6A	; 106
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	aa e6       	ldi	r26, 0x6A	; 106
  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 37       	cpi	r26, 0x71	; 113
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e
  86:	0c 94 e7 00 	jmp	0x1ce

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

0000008e <b8td3>:
uchar temp,i_g=0x00, i_sh=0x00, i_b=0x00;
uchar num_g,num_sh,num_b;
//8位二进制转3位十进制函数
void b8td3(uchar n)
{
  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:	21 97       	sbiw	r28, 0x01	; 1
  98:	0f b6       	in	r0, 0x3f	; 63
  9a:	f8 94       	cli
  9c:	de bf       	out	0x3e, r29	; 62
  9e:	0f be       	out	0x3f, r0	; 63
  a0:	cd bf       	out	0x3d, r28	; 61
  a2:	89 83       	std	Y+1, r24	; 0x01
 for (i_b=0;n>100;)
  a4:	10 92 6c 00 	sts	0x006C, r1
  a8:	89 81       	ldd	r24, Y+1	; 0x01
  aa:	85 36       	cpi	r24, 0x65	; 101
  ac:	48 f0       	brcs	.+18     	; 0xc0
 {n=n-100;
  ae:	89 81       	ldd	r24, Y+1	; 0x01
  b0:	84 56       	subi	r24, 0x64	; 100
  b2:	89 83       	std	Y+1, r24	; 0x01
  i_b=i_b+1;}
  b4:	80 91 6c 00 	lds	r24, 0x006C
  b8:	8f 5f       	subi	r24, 0xFF	; 255
  ba:	80 93 6c 00 	sts	0x006C, r24
  be:	f4 cf       	rjmp	.-24     	; 0xa8
 for (i_sh=0;n>10;)
  c0:	10 92 6b 00 	sts	0x006B, r1
  c4:	89 81       	ldd	r24, Y+1	; 0x01
  c6:	8b 30       	cpi	r24, 0x0B	; 11
  c8:	48 f0       	brcs	.+18     	; 0xdc
 {n=n-10;
  ca:	89 81       	ldd	r24, Y+1	; 0x01
  cc:	8a 50       	subi	r24, 0x0A	; 10
  ce:	89 83       	std	Y+1, r24	; 0x01
  i_sh=i_sh+1;}
  d0:	80 91 6b 00 	lds	r24, 0x006B
  d4:	8f 5f       	subi	r24, 0xFF	; 255
  d6:	80 93 6b 00 	sts	0x006B, r24
  da:	f4 cf       	rjmp	.-24     	; 0xc4
  i_g=n;
  dc:	89 81       	ldd	r24, Y+1	; 0x01
  de:	80 93 6a 00 	sts	0x006A, r24
  e2:	21 96       	adiw	r28, 0x01	; 1
  e4:	0f b6       	in	r0, 0x3f	; 63
  e6:	f8 94       	cli
  e8:	de bf       	out	0x3e, r29	; 62
  ea:	0f be       	out	0x3f, r0	; 63
  ec:	cd bf       	out	0x3d, r28	; 61
  ee:	df 91       	pop	r29
  f0:	cf 91       	pop	r28
  f2:	08 95       	ret

000000f4 <init_timer0>:
 }
 
//T/C0溢出中断初始化,每2ms溢出中断一次(1/(8*1000000/64))*256=2ms
void init_timer0(void)
{TIMSK=0x01;                //T/C0溢出中断使能
  f4:	cf 93       	push	r28
  f6:	df 93       	push	r29
  f8:	cd b7       	in	r28, 0x3d	; 61
  fa:	de b7       	in	r29, 0x3e	; 62
  fc:	81 e0       	ldi	r24, 0x01	; 1
  fe:	80 93 59 00 	sts	0x0059, r24
 TCCR0=0X03;                //64分频
 102:	83 e0       	ldi	r24, 0x03	; 3
 104:	80 93 53 00 	sts	0x0053, r24
 TCNT0=0X00;                //T/C0置初值0
 108:	10 92 52 00 	sts	0x0052, r1
 10c:	df 91       	pop	r29
 10e:	cf 91       	pop	r28
 110:	08 95       	ret

00000112 <__vector_9>:
 }
 
 
 //T/C0溢出中断服务程序
 SIGNAL (SIG_OVERFLOW0)     
 {
 112:	1f 92       	push	r1
 114:	0f 92       	push	r0
 116:	0f b6       	in	r0, 0x3f	; 63
 118:	0f 92       	push	r0
 11a:	11 24       	eor	r1, r1
 11c:	2f 93       	push	r18
 11e:	3f 93       	push	r19
 120:	8f 93       	push	r24
 122:	9f 93       	push	r25
 124:	cf 93       	push	r28
 126:	df 93       	push	r29
 128:	cd b7       	in	r28, 0x3d	; 61
 12a:	de b7       	in	r29, 0x3e	; 62
 12c:	22 97       	sbiw	r28, 0x02	; 2
 12e:	de bf       	out	0x3e, r29	; 62
 130:	cd bf       	out	0x3d, r28	; 61
  switch (temp)
 132:	80 91 6d 00 	lds	r24, 0x006D
 136:	28 2f       	mov	r18, r24
 138:	33 27       	eor	r19, r19
 13a:	29 83       	std	Y+1, r18	; 0x01
 13c:	3a 83       	std	Y+2, r19	; 0x02
 13e:	89 81       	ldd	r24, Y+1	; 0x01
 140:	9a 81       	ldd	r25, Y+2	; 0x02
 142:	8f 3b       	cpi	r24, 0xBF	; 191
 144:	91 05       	cpc	r25, r1
 146:	89 f0       	breq	.+34     	; 0x16a
 148:	29 81       	ldd	r18, Y+1	; 0x01
 14a:	3a 81       	ldd	r19, Y+2	; 0x02
 14c:	20 3c       	cpi	r18, 0xC0	; 192
 14e:	31 05       	cpc	r19, r1
 150:	34 f4       	brge	.+12     	; 0x15e
 152:	89 81       	ldd	r24, Y+1	; 0x01
 154:	9a 81       	ldd	r25, Y+2	; 0x02
 156:	8f 37       	cpi	r24, 0x7F	; 127
 158:	91 05       	cpc	r25, r1
 15a:	99 f0       	breq	.+38     	; 0x182
 15c:	29 c0       	rjmp	.+82     	; 0x1b0
 15e:	29 81       	ldd	r18, Y+1	; 0x01
 160:	3a 81       	ldd	r19, Y+2	; 0x02
 162:	2f 3d       	cpi	r18, 0xDF	; 223
 164:	31 05       	cpc	r19, r1
 166:	c9 f0       	breq	.+50     	; 0x19a
 168:	23 c0       	rjmp	.+70     	; 0x1b0
  {
  case 0xBF :PORTB=num_g;PORTA=temp;temp=0x7F;break;  //判断是否是此位线,若是送字线和位线显示,并且修改位线
 16a:	80 91 6e 00 	lds	r24, 0x006E
 16e:	80 93 38 00 	sts	0x0038, r24
 172:	80 91 6d 00 	lds	r24, 0x006D
 176:	80 93 3b 00 	sts	0x003B, r24
 17a:	8f e7       	ldi	r24, 0x7F	; 127
 17c:	80 93 6d 00 	sts	0x006D, r24
 180:	17 c0       	rjmp	.+46     	; 0x1b0
  case 0x7F :PORTB=num_sh;PORTA=temp;temp=0xDF;break;
 182:	80 91 70 00 	lds	r24, 0x0070
 186:	80 93 38 00 	sts	0x0038, r24
 18a:	80 91 6d 00 	lds	r24, 0x006D
 18e:	80 93 3b 00 	sts	0x003B, r24
 192:	8f ed       	ldi	r24, 0xDF	; 223
 194:	80 93 6d 00 	sts	0x006D, r24
 198:	0b c0       	rjmp	.+22     	; 0x1b0
  case 0xDF :PORTB=num_b;PORTA=temp;temp=0xBF;break;
 19a:	80 91 6f 00 	lds	r24, 0x006F
 19e:	80 93 38 00 	sts	0x0038, r24
 1a2:	80 91 6d 00 	lds	r24, 0x006D
 1a6:	80 93 3b 00 	sts	0x003B, r24
 1aa:	8f eb       	ldi	r24, 0xBF	; 191
 1ac:	80 93 6d 00 	sts	0x006D, r24
 1b0:	22 96       	adiw	r28, 0x02	; 2
 1b2:	f8 94       	cli
 1b4:	de bf       	out	0x3e, r29	; 62
 1b6:	cd bf       	out	0x3d, r28	; 61
 1b8:	df 91       	pop	r29
 1ba:	cf 91       	pop	r28
 1bc:	9f 91       	pop	r25
 1be:	8f 91       	pop	r24
 1c0:	3f 91       	pop	r19
 1c2:	2f 91       	pop	r18
 1c4:	0f 90       	pop	r0
 1c6:	0f be       	out	0x3f, r0	; 63
 1c8:	0f 90       	pop	r0
 1ca:	1f 90       	pop	r1
 1cc:	18 95       	reti

000001ce <main>:
  default: break;
  }
 } 
 
 
 int main(void)
 {
 1ce:	c5 e5       	ldi	r28, 0x55	; 85
 1d0:	d4 e0       	ldi	r29, 0x04	; 4
 1d2:	de bf       	out	0x3e, r29	; 62
 1d4:	cd bf       	out	0x3d, r28	; 61
  
  uchar tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
 1d6:	8a e0       	ldi	r24, 0x0A	; 10
 1d8:	de 01       	movw	r26, r28
 1da:	11 96       	adiw	r26, 0x01	; 1
 1dc:	e0 e6       	ldi	r30, 0x60	; 96
 1de:	f0 e0       	ldi	r31, 0x00	; 0
 1e0:	01 90       	ld	r0, Z+
 1e2:	0d 92       	st	X+, r0
 1e4:	8a 95       	dec	r24
 1e6:	e1 f7       	brne	.-8      	; 0x1e0
  b8td3(number);   //调用8位二进制转3位十进制函数
 1e8:	8d e2       	ldi	r24, 0x2D	; 45
 1ea:	0e 94 47 00 	call	0x8e
  num_g=tab[i_g];
 1ee:	80 91 6a 00 	lds	r24, 0x006A
 1f2:	28 2f       	mov	r18, r24
 1f4:	33 27       	eor	r19, r19
 1f6:	ce 01       	movw	r24, r28
 1f8:	01 96       	adiw	r24, 0x01	; 1
 1fa:	f9 01       	movw	r30, r18
 1fc:	e8 0f       	add	r30, r24
 1fe:	f9 1f       	adc	r31, r25
 200:	80 81       	ld	r24, Z
 202:	80 93 6e 00 	sts	0x006E, r24
  num_sh=tab[i_sh];
 206:	80 91 6b 00 	lds	r24, 0x006B
 20a:	28 2f       	mov	r18, r24
 20c:	33 27       	eor	r19, r19
 20e:	ce 01       	movw	r24, r28
 210:	01 96       	adiw	r24, 0x01	; 1
 212:	f9 01       	movw	r30, r18
 214:	e8 0f       	add	r30, r24
 216:	f9 1f       	adc	r31, r25
 218:	80 81       	ld	r24, Z
 21a:	80 93 70 00 	sts	0x0070, r24
  num_b=tab[i_b];   //根据返回的个、十、百位的值查的相应的七数码管的值
 21e:	80 91 6c 00 	lds	r24, 0x006C
 222:	28 2f       	mov	r18, r24
 224:	33 27       	eor	r19, r19
 226:	ce 01       	movw	r24, r28
 228:	01 96       	adiw	r24, 0x01	; 1
 22a:	f9 01       	movw	r30, r18
 22c:	e8 0f       	add	r30, r24
 22e:	f9 1f       	adc	r31, r25
 230:	80 81       	ld	r24, Z
 232:	80 93 6f 00 	sts	0x006F, r24
  DDRB=0xFF;
 236:	8f ef       	ldi	r24, 0xFF	; 255
 238:	80 93 37 00 	sts	0x0037, r24
  DDRA=0xFF;        //A、B口定义方向
 23c:	8f ef       	ldi	r24, 0xFF	; 255
 23e:	80 93 3a 00 	sts	0x003A, r24
  PORTA=0xBF;       //A口赋初值(位线置初值)
 242:	8f eb       	ldi	r24, 0xBF	; 191
 244:	80 93 3b 00 	sts	0x003B, r24
  temp=PINA;       
 248:	80 91 39 00 	lds	r24, 0x0039
 24c:	80 93 6d 00 	sts	0x006D, r24
  init_timer0();    //调用T/C0溢出中断初始化函数
 250:	0e 94 7a 00 	call	0xf4
  sei();            //开总中断
 254:	78 94       	sei
  while(1){;}
 256:	ff cf       	rjmp	.-2      	; 0x256

⌨️ 快捷键说明

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