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

📄 si4700.lss

📁 mega8控制的fm程序(SI4700)。
💻 LSS
📖 第 1 页 / 共 5 页
字号:

si4700.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000978  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000022  00800060  00000978  00000a0c  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000001  00800082  00800082  00000a2e  2**0
                  ALLOC
  3 .noinit       00000000  00800083  00800083  00000a2e  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000a2e  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  00000a30  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00000d9c  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  00000e20  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 0000015d  00000000  00000000  00000e34  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   000006ce  00000000  00000000  00000f91  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 00000200  00000000  00000000  0000165f  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000005ce  00000000  00000000  0000185f  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    000002be  00000000  00000000  00001e2d  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	1c c0       	rjmp	.+56     	; 0x3a <__init>
   2:	35 c0       	rjmp	.+106    	; 0x6e <__bad_interrupt>
   4:	34 c0       	rjmp	.+104    	; 0x6e <__bad_interrupt>
   6:	33 c0       	rjmp	.+102    	; 0x6e <__bad_interrupt>
   8:	32 c0       	rjmp	.+100    	; 0x6e <__bad_interrupt>
   a:	31 c0       	rjmp	.+98     	; 0x6e <__bad_interrupt>
   c:	30 c0       	rjmp	.+96     	; 0x6e <__bad_interrupt>
   e:	2f c0       	rjmp	.+94     	; 0x6e <__bad_interrupt>
  10:	2e c0       	rjmp	.+92     	; 0x6e <__bad_interrupt>
  12:	2d c0       	rjmp	.+90     	; 0x6e <__bad_interrupt>
  14:	2c c0       	rjmp	.+88     	; 0x6e <__bad_interrupt>
  16:	64 c3       	rjmp	.+1736   	; 0x6e0 <__vector_11>
  18:	2a c0       	rjmp	.+84     	; 0x6e <__bad_interrupt>
  1a:	29 c0       	rjmp	.+82     	; 0x6e <__bad_interrupt>
  1c:	28 c0       	rjmp	.+80     	; 0x6e <__bad_interrupt>
  1e:	27 c0       	rjmp	.+78     	; 0x6e <__bad_interrupt>
  20:	26 c0       	rjmp	.+76     	; 0x6e <__bad_interrupt>
  22:	25 c0       	rjmp	.+74     	; 0x6e <__bad_interrupt>
  24:	24 c0       	rjmp	.+72     	; 0x6e <__bad_interrupt>

00000026 <__ctors_end>:
  26:	88 c3       	rjmp	.+1808   	; 0x738 <main+0x30>
  28:	dc c3       	rjmp	.+1976   	; 0x7e2 <main+0xda>
  2a:	31 c4       	rjmp	.+2146   	; 0x88e <main+0x186>
  2c:	34 c4       	rjmp	.+2152   	; 0x896 <main+0x18e>
  2e:	37 c4       	rjmp	.+2158   	; 0x89e <main+0x196>
  30:	3a c4       	rjmp	.+2164   	; 0x8a6 <main+0x19e>
  32:	3d c4       	rjmp	.+2170   	; 0x8ae <main+0x1a6>
  34:	44 c4       	rjmp	.+2184   	; 0x8be <main+0x1b6>
  36:	50 c4       	rjmp	.+2208   	; 0x8d8 <main+0x1d0>
  38:	53 c4       	rjmp	.+2214   	; 0x8e0 <main+0x1d8>

0000003a <__init>:
  3a:	11 24       	eor	r1, r1
  3c:	1f be       	out	0x3f, r1	; 63
  3e:	cf e5       	ldi	r28, 0x5F	; 95
  40:	d4 e0       	ldi	r29, 0x04	; 4
  42:	de bf       	out	0x3e, r29	; 62
  44:	cd bf       	out	0x3d, r28	; 61

00000046 <__do_copy_data>:
  46:	10 e0       	ldi	r17, 0x00	; 0
  48:	a0 e6       	ldi	r26, 0x60	; 96
  4a:	b0 e0       	ldi	r27, 0x00	; 0
  4c:	e8 e7       	ldi	r30, 0x78	; 120
  4e:	f9 e0       	ldi	r31, 0x09	; 9
  50:	02 c0       	rjmp	.+4      	; 0x56 <.do_copy_data_start>

00000052 <.do_copy_data_loop>:
  52:	05 90       	lpm	r0, Z+
  54:	0d 92       	st	X+, r0

00000056 <.do_copy_data_start>:
  56:	a2 38       	cpi	r26, 0x82	; 130
  58:	b1 07       	cpc	r27, r17
  5a:	d9 f7       	brne	.-10     	; 0x52 <.do_copy_data_loop>

0000005c <__do_clear_bss>:
  5c:	10 e0       	ldi	r17, 0x00	; 0
  5e:	a2 e8       	ldi	r26, 0x82	; 130
  60:	b0 e0       	ldi	r27, 0x00	; 0
  62:	01 c0       	rjmp	.+2      	; 0x66 <.do_clear_bss_start>

00000064 <.do_clear_bss_loop>:
  64:	1d 92       	st	X+, r1

00000066 <.do_clear_bss_start>:
  66:	a3 38       	cpi	r26, 0x83	; 131
  68:	b1 07       	cpc	r27, r17
  6a:	e1 f7       	brne	.-8      	; 0x64 <.do_clear_bss_loop>
  6c:	4d c3       	rjmp	.+1690   	; 0x708 <main>

0000006e <__bad_interrupt>:
  6e:	c8 cf       	rjmp	.-112    	; 0x0 <__vectors>

00000070 <ResetSi4700_2w>:
#define WRITE	0x20
UINT8 com_buf;
void ResetSi4700_2w(void)
{
	PORTC=0xff;
  70:	8f ef       	ldi	r24, 0xFF	; 255
  72:	85 bb       	out	0x15, r24	; 21
	DDRC=0xff;
  74:	84 bb       	out	0x14, r24	; 20
	sda(0);
  76:	ac 98       	cbi	0x15, 4	; 21
	rst(0);
  78:	a9 98       	cbi	0x15, 1	; 21
	scl(1);
  7a:	ad 9a       	sbi	0x15, 5	; 21
	//_delay_ms(1);
	rst(1);
  7c:	a9 9a       	sbi	0x15, 1	; 21
	sda(1);
  7e:	ac 9a       	sbi	0x15, 4	; 21
  80:	08 95       	ret

00000082 <OperationSi4700_2w>:
	//_delay_ms(1);
	
}

unsigned char OperationSi4700_2w(unsigned char operation, unsigned char *data, unsigned char numBytes)
{
  82:	0f 93       	push	r16
  84:	1f 93       	push	r17
  86:	cf 93       	push	r28
  88:	df 93       	push	r29
  8a:	58 2f       	mov	r21, r24
  8c:	db 01       	movw	r26, r22
	unsigned char controlWord,  j, error = 0;
  8e:	00 e0       	ldi	r16, 0x00	; 0
	int i;

/***************************************************

START: make sure here SDIO_DIR =OUT, SCLK = 1,	SDIO = 1

****************************************************/

	scl(1);
  90:	ad 9a       	sbi	0x15, 5	; 21
	sda(1);
  92:	ac 9a       	sbi	0x15, 4	; 21
	sda(0);
  94:	ac 98       	cbi	0x15, 4	; 21
	scl(0);
  96:	ad 98       	cbi	0x15, 5	; 21
	

/***************************************************

WRITE CONTROL DATA: make sure here: SLCK = 0; SDIO = 0

****************************************************/

	if(operation == READ)
  98:	81 32       	cpi	r24, 0x21	; 33
  9a:	09 f0       	breq	.+2      	; 0x9e <OperationSi4700_2w+0x1c>
		controlWord = 0x21;
	else 
		controlWord = 0x20;
  9c:	80 e2       	ldi	r24, 0x20	; 32
	
	for(i = 7; i>=0; i--)
  9e:	67 e0       	ldi	r22, 0x07	; 7
  a0:	70 e0       	ldi	r23, 0x00	; 0
  a2:	28 2f       	mov	r18, r24
  a4:	33 27       	eor	r19, r19
	{
		sda( (controlWord >> i) & 0x01);
  a6:	c9 01       	movw	r24, r18
  a8:	06 2e       	mov	r0, r22
  aa:	02 c0       	rjmp	.+4      	; 0xb0 <OperationSi4700_2w+0x2e>
  ac:	95 95       	asr	r25
  ae:	87 95       	ror	r24
  b0:	0a 94       	dec	r0
  b2:	e2 f7       	brpl	.-8      	; 0xac <OperationSi4700_2w+0x2a>
  b4:	80 ff       	sbrs	r24, 0
  b6:	02 c0       	rjmp	.+4      	; 0xbc <OperationSi4700_2w+0x3a>
  b8:	ac 9a       	sbi	0x15, 4	; 21
  ba:	01 c0       	rjmp	.+2      	; 0xbe <OperationSi4700_2w+0x3c>
  bc:	ac 98       	cbi	0x15, 4	; 21
		//_delay_us(2);
		scl(1);
  be:	ad 9a       	sbi	0x15, 5	; 21
		scl(0);
  c0:	ad 98       	cbi	0x15, 5	; 21
  c2:	61 50       	subi	r22, 0x01	; 1
  c4:	70 40       	sbci	r23, 0x00	; 0
  c6:	77 ff       	sbrs	r23, 7
  c8:	ee cf       	rjmp	.-36     	; 0xa6 <OperationSi4700_2w+0x24>
		//_delay_us(2);
	}

	
/***************************

CHECK ACK for control word

***************************/

	BIT_CLR(DDRC,4);
  ca:	a4 98       	cbi	0x14, 4	; 20

	//_delay_us(2);
	scl(1);	
  cc:	ad 9a       	sbi	0x15, 5	; 21
	if(sda_pin != 0)
  ce:	83 b3       	in	r24, 0x13	; 19
  d0:	99 27       	eor	r25, r25
  d2:	80 71       	andi	r24, 0x10	; 16
  d4:	90 70       	andi	r25, 0x00	; 0
  d6:	24 e0       	ldi	r18, 0x04	; 4
  d8:	95 95       	asr	r25
  da:	87 95       	ror	r24
  dc:	2a 95       	dec	r18
  de:	e1 f7       	brne	.-8      	; 0xd8 <OperationSi4700_2w+0x56>
  e0:	00 97       	sbiw	r24, 0x00	; 0
  e2:	11 f0       	breq	.+4      	; 0xe8 <OperationSi4700_2w+0x66>
	{
		error = 1;
		goto STOP;
	}
     scl(0);
	//_delay_us(2);

/***************************************

WRITE or READ data

****************************************/


	for(j = 0; j < numBytes; j++, data++)
	{
		if(operation == WRITE)
			BIT_SET(DDRC,4); 
		else
			BIT_CLR(DDRC,4);
		
		for(i = 7; i>=0; i--)
		{
			if(operation == WRITE)
				sda( (*data >> i) & 0x01);
			//_delay_us(2);
			scl(1);
			
                        if(operation == READ)
				*data = (*data << 1) | sda_pin;
			scl(0);
			//_delay_us(2);
		}
			

/******************************

CHECK ACK or SEND ACK=0

*******************************/

		if(operation == WRITE)
			BIT_CLR(DDRC,4);
		else
		{
			BIT_SET(DDRC,4);
			if(j == (numBytes -1))
				sda(1)
			else
				sda(0)
		}
		//_delay_us(2);
		scl(1);
		
		if(operation == WRITE)
			if(sda_pin != 0)
			{
				error = 1;
  e4:	01 e0       	ldi	r16, 0x01	; 1
				goto STOP;
  e6:	4e c0       	rjmp	.+156    	; 0x184 <OperationSi4700_2w+0x102>
  e8:	ad 98       	cbi	0x15, 5	; 21
  ea:	10 e0       	ldi	r17, 0x00	; 0
  ec:	14 17       	cp	r17, r20
  ee:	08 f0       	brcs	.+2      	; 0xf2 <OperationSi4700_2w+0x70>
  f0:	49 c0       	rjmp	.+146    	; 0x184 <OperationSi4700_2w+0x102>
  f2:	e4 2f       	mov	r30, r20
  f4:	ff 27       	eor	r31, r31
  f6:	31 97       	sbiw	r30, 0x01	; 1
  f8:	ec 01       	movw	r28, r24
  fa:	50 32       	cpi	r21, 0x20	; 32
  fc:	11 f4       	brne	.+4      	; 0x102 <OperationSi4700_2w+0x80>
  fe:	a4 9a       	sbi	0x14, 4	; 20
 100:	01 c0       	rjmp	.+2      	; 0x104 <OperationSi4700_2w+0x82>
 102:	a4 98       	cbi	0x14, 4	; 20
 104:	67 e0       	ldi	r22, 0x07	; 7
 106:	70 e0       	ldi	r23, 0x00	; 0
 108:	50 32       	cpi	r21, 0x20	; 32
 10a:	69 f4       	brne	.+26     	; 0x126 <OperationSi4700_2w+0xa4>
 10c:	8c 91       	ld	r24, X
 10e:	99 27       	eor	r25, r25
 110:	06 2e       	mov	r0, r22
 112:	02 c0       	rjmp	.+4      	; 0x118 <OperationSi4700_2w+0x96>
 114:	95 95       	asr	r25
 116:	87 95       	ror	r24
 118:	0a 94       	dec	r0
 11a:	e2 f7       	brpl	.-8      	; 0x114 <OperationSi4700_2w+0x92>
 11c:	80 ff       	sbrs	r24, 0
 11e:	02 c0       	rjmp	.+4      	; 0x124 <OperationSi4700_2w+0xa2>
 120:	ac 9a       	sbi	0x15, 4	; 21
 122:	01 c0       	rjmp	.+2      	; 0x126 <OperationSi4700_2w+0xa4>
 124:	ac 98       	cbi	0x15, 4	; 21
 126:	ad 9a       	sbi	0x15, 5	; 21
 128:	51 32       	cpi	r21, 0x21	; 33
 12a:	81 f4       	brne	.+32     	; 0x14c <OperationSi4700_2w+0xca>
 12c:	8c 91       	ld	r24, X
 12e:	28 2f       	mov	r18, r24
 130:	33 27       	eor	r19, r19
 132:	22 0f       	add	r18, r18
 134:	33 1f       	adc	r19, r19
 136:	83 b3       	in	r24, 0x13	; 19
 138:	99 27       	eor	r25, r25
 13a:	80 71       	andi	r24, 0x10	; 16
 13c:	90 70       	andi	r25, 0x00	; 0
 13e:	34 e0       	ldi	r19, 0x04	; 4
 140:	95 95       	asr	r25
 142:	87 95       	ror	r24
 144:	3a 95       	dec	r19
 146:	e1 f7       	brne	.-8      	; 0x140 <OperationSi4700_2w+0xbe>
 148:	82 2b       	or	r24, r18
 14a:	8c 93       	st	X, r24
 14c:	ad 98       	cbi	0x15, 5	; 21
 14e:	61 50       	subi	r22, 0x01	; 1
 150:	70 40       	sbci	r23, 0x00	; 0
 152:	77 ff       	sbrs	r23, 7
 154:	d9 cf       	rjmp	.-78     	; 0x108 <OperationSi4700_2w+0x86>
 156:	50 32       	cpi	r21, 0x20	; 32
 158:	11 f4       	brne	.+4      	; 0x15e <OperationSi4700_2w+0xdc>
 15a:	a4 98       	cbi	0x14, 4	; 20
 15c:	07 c0       	rjmp	.+14     	; 0x16c <OperationSi4700_2w+0xea>
 15e:	a4 9a       	sbi	0x14, 4	; 20
 160:	ce 17       	cp	r28, r30
 162:	df 07       	cpc	r29, r31
 164:	11 f4       	brne	.+4      	; 0x16a <OperationSi4700_2w+0xe8>
 166:	ac 9a       	sbi	0x15, 4	; 21
 168:	01 c0       	rjmp	.+2      	; 0x16c <OperationSi4700_2w+0xea>
 16a:	ac 98       	cbi	0x15, 4	; 21
 16c:	ad 9a       	sbi	0x15, 5	; 21
 16e:	50 32       	cpi	r21, 0x20	; 32
 170:	11 f4       	brne	.+4      	; 0x176 <OperationSi4700_2w+0xf4>

⌨️ 快捷键说明

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