smg.lss

来自「AVR Devolpment Board」· LSS 代码 · 共 236 行

LSS
236
字号

smg.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000142  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  00000142  000001d6  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000008  00800060  00800060  000001d6  2**0
                  ALLOC
  3 .noinit       00000000  00800068  00800068  000001d6  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000001d6  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  000001d8  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00000544  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  000005c8  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 00000041  00000000  00000000  000005dc  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000208  00000000  00000000  0000061d  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 00000110  00000000  00000000  00000825  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   00000180  00000000  00000000  00000935  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    0000011e  00000000  00000000  00000ab5  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 32 00 	jmp	0x64 <__init>
   4:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
   8:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
   c:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  10:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  14:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  18:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  1c:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  20:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  24:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  28:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  2c:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  30:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  34:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  38:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  3c:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  40:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  44:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  48:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  4c:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  50:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>

00000054 <SegCode>:
  54:	3f 06 5b 4f 66 6d 7d 07 7f 6f 77 7c 39 5e 79 71     ?.[Ofm}..ow|9^yq

00000064 <__init>:
  64:	11 24       	eor	r1, r1
  66:	1f be       	out	0x3f, r1	; 63
  68:	cf e5       	ldi	r28, 0x5F	; 95
  6a:	d4 e0       	ldi	r29, 0x04	; 4
  6c:	de bf       	out	0x3e, r29	; 62
  6e:	cd bf       	out	0x3d, r28	; 61

00000070 <__do_copy_data>:
  70:	10 e0       	ldi	r17, 0x00	; 0
  72:	a0 e6       	ldi	r26, 0x60	; 96
  74:	b0 e0       	ldi	r27, 0x00	; 0
  76:	e2 e4       	ldi	r30, 0x42	; 66
  78:	f1 e0       	ldi	r31, 0x01	; 1
  7a:	02 c0       	rjmp	.+4      	; 0x80 <.do_copy_data_start>

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

00000080 <.do_copy_data_start>:
  80:	a0 36       	cpi	r26, 0x60	; 96
  82:	b1 07       	cpc	r27, r17
  84:	d9 f7       	brne	.-10     	; 0x7c <.do_copy_data_loop>

00000086 <__do_clear_bss>:
  86:	10 e0       	ldi	r17, 0x00	; 0
  88:	a0 e6       	ldi	r26, 0x60	; 96
  8a:	b0 e0       	ldi	r27, 0x00	; 0
  8c:	01 c0       	rjmp	.+2      	; 0x90 <.do_clear_bss_start>

0000008e <.do_clear_bss_loop>:
  8e:	1d 92       	st	X+, r1

00000090 <.do_clear_bss_start>:
  90:	a8 36       	cpi	r26, 0x68	; 104
  92:	b1 07       	cpc	r27, r17
  94:	e1 f7       	brne	.-8      	; 0x8e <.do_clear_bss_loop>
  96:	0c 94 80 00 	jmp	0x100 <main>

0000009a <__bad_interrupt>:
  9a:	0c 94 00 00 	jmp	0x0 <__vectors>

0000009e <SmgScan>:
unsigned char DisBuffer[8];


void SmgScan(void)
{
  9e:	0f 93       	push	r16
  a0:	1f 93       	push	r17
  a2:	cf 93       	push	r28
  a4:	df 93       	push	r29
  a6:	01 e0       	ldi	r16, 0x01	; 1
  a8:	10 e0       	ldi	r17, 0x00	; 0
  aa:	a0 ea       	ldi	r26, 0xA0	; 160
  ac:	bf e0       	ldi	r27, 0x0F	; 15
  ae:	c0 e0       	ldi	r28, 0x00	; 0
  b0:	d0 e0       	ldi	r29, 0x00	; 0
  b2:	60 e6       	ldi	r22, 0x60	; 96
  b4:	70 e0       	ldi	r23, 0x00	; 0
  b6:	20 e0       	ldi	r18, 0x00	; 0
  b8:	30 e0       	ldi	r19, 0x00	; 0
  ba:	47 e0       	ldi	r20, 0x07	; 7
	unsigned char i=0;
	for(i=0;i<8;i++)
	{
		PORTB = pgm_read_byte(&SegCode[DisBuffer[i]]);/* Output the Segment code */
  bc:	fb 01       	movw	r30, r22
  be:	81 91       	ld	r24, Z+
  c0:	bf 01       	movw	r22, r30
  c2:	e8 2f       	mov	r30, r24
  c4:	ff 27       	eor	r31, r31
  c6:	ec 5a       	subi	r30, 0xAC	; 172
  c8:	ff 4f       	sbci	r31, 0xFF	; 255
  ca:	84 91       	lpm	r24, Z
  cc:	88 bb       	out	0x18, r24	; 24
		PORTA|= (1<<PA4);
  ce:	dc 9a       	sbi	0x1b, 4	; 27
		PORTA&=~(1<<PA4);
  d0:	dc 98       	cbi	0x1b, 4	; 27
				
		PORTB = (1<<i);  /* Select one 7-segment display */ 
  d2:	c8 01       	movw	r24, r16
  d4:	02 2e       	mov	r0, r18
  d6:	02 c0       	rjmp	.+4      	; 0xdc <SmgScan+0x3e>
  d8:	88 0f       	add	r24, r24
  da:	99 1f       	adc	r25, r25
  dc:	0a 94       	dec	r0
  de:	e2 f7       	brpl	.-8      	; 0xd8 <SmgScan+0x3a>
  e0:	88 bb       	out	0x18, r24	; 24
		PORTA|= (1<<PA5);
  e2:	dd 9a       	sbi	0x1b, 5	; 27
		PORTA&=~(1<<PA5);
  e4:	dd 98       	cbi	0x1b, 5	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  e6:	cd 01       	movw	r24, r26
  e8:	01 97       	sbiw	r24, 0x01	; 1
  ea:	f1 f7       	brne	.-4      	; 0xe8 <SmgScan+0x4a>
  ec:	41 50       	subi	r20, 0x01	; 1
  ee:	2f 5f       	subi	r18, 0xFF	; 255
  f0:	3f 4f       	sbci	r19, 0xFF	; 255
  f2:	47 ff       	sbrs	r20, 7
  f4:	e3 cf       	rjmp	.-58     	; 0xbc <SmgScan+0x1e>
  f6:	df 91       	pop	r29
  f8:	cf 91       	pop	r28
  fa:	1f 91       	pop	r17
  fc:	0f 91       	pop	r16
  fe:	08 95       	ret

00000100 <main>:

		_delay_ms(2);
	}
}

int main(void)
{
 100:	cf e5       	ldi	r28, 0x5F	; 95
 102:	d4 e0       	ldi	r29, 0x04	; 4
 104:	de bf       	out	0x3e, r29	; 62
 106:	cd bf       	out	0x3d, r28	; 61
	unsigned int Count=0;

	/* Set LEDs and Smg LE pin as output , databus as output */
	DDRA |=(1<<PA4)|(1<<PA5)|(1<<PA6); 
 108:	8a b3       	in	r24, 0x1a	; 26
 10a:	80 67       	ori	r24, 0x70	; 112
 10c:	8a bb       	out	0x1a, r24	; 26
	DDRB  = 0xFF;
 10e:	8f ef       	ldi	r24, 0xFF	; 255
 110:	87 bb       	out	0x17, r24	; 23

	/* Turn off the LEDs */
	PORTB = 0xFF;
 112:	88 bb       	out	0x18, r24	; 24
	PORTA|= (1<<PA6);
 114:	de 9a       	sbi	0x1b, 6	; 27
	PORTA&=~(1<<PA6);
 116:	de 98       	cbi	0x1b, 6	; 27

	while(1)
	{
		Count++;

		DisBuffer[0]=0;
 118:	10 92 60 00 	sts	0x0060, r1
		DisBuffer[1]=0;
 11c:	10 92 61 00 	sts	0x0061, r1
		DisBuffer[2]=0;
 120:	10 92 62 00 	sts	0x0062, r1
		//DisBuffer[3]=Count/10000%10;
		//DisBuffer[4]=Count/1000%10;
		//DisBuffer[5]=Count/100%10;
		//DisBuffer[6]=Count/10%10;
		//DisBuffer[7]=Count/1%10;
		DisBuffer[3]=0;
 124:	10 92 63 00 	sts	0x0063, r1
		DisBuffer[4]=0;
 128:	10 92 64 00 	sts	0x0064, r1
		DisBuffer[5]=0;
 12c:	10 92 65 00 	sts	0x0065, r1
		DisBuffer[6]=4;
 130:	84 e0       	ldi	r24, 0x04	; 4
 132:	80 93 66 00 	sts	0x0066, r24
		DisBuffer[7]=5;
 136:	85 e0       	ldi	r24, 0x05	; 5
 138:	80 93 67 00 	sts	0x0067, r24
		
		SmgScan();
 13c:	0e 94 4f 00 	call	0x9e <SmgScan>
 140:	eb cf       	rjmp	.-42     	; 0x118 <main+0x18>

⌨️ 快捷键说明

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