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

📄 main.lss

📁 MEGEA64控制的TUNER程序
💻 LSS
📖 第 1 页 / 共 3 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         000001c6  00800100  00000678  0000070c  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         00000678  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          00000015  008002c6  008002c6  000008d2  2**0
                  ALLOC
  3 .stab         00000378  00000000  00000000  000008d4  2**2
                  CONTENTS, READONLY, DEBUGGING
  4 .stabstr      00000071  00000000  00000000  00000c4c  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_aranges 00000020  00000000  00000000  00000cbd  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 00000255  00000000  00000000  00000cdd  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   0000056d  00000000  00000000  00000f32  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 000001a6  00000000  00000000  0000149f  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   00000720  00000000  00000000  00001645  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_frame  00000190  00000000  00000000  00001d68  2**2
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_str    00000277  00000000  00000000  00001ef8  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_loc    000001fc  00000000  00000000  0000216f  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 46 00 	jmp	0x8c	; 0x8c <__ctors_end>
   4:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
   8:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
   c:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  10:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  14:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  18:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  1c:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  20:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  24:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  28:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  2c:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  30:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  34:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  38:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  3c:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  40:	0c 94 94 01 	jmp	0x328	; 0x328 <__vector_16>
  44:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  48:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  4c:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  50:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  54:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  58:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  5c:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  60:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  64:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  68:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  6c:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  70:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  74:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  78:	0c 94 d4 01 	jmp	0x3a8	; 0x3a8 <__vector_30>
  7c:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  80:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  84:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__bad_interrupt>
  88:	0c 94 63 00 	jmp	0xc6	; 0xc6 <__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:	12 e0       	ldi	r17, 0x02	; 2
  9a:	a0 e0       	ldi	r26, 0x00	; 0
  9c:	b1 e0       	ldi	r27, 0x01	; 1
  9e:	e8 e7       	ldi	r30, 0x78	; 120
  a0:	f6 e0       	ldi	r31, 0x06	; 6
  a2:	02 c0       	rjmp	.+4      	; 0xa8 <.do_copy_data_start>

000000a4 <.do_copy_data_loop>:
  a4:	05 90       	lpm	r0, Z+
  a6:	0d 92       	st	X+, r0

000000a8 <.do_copy_data_start>:
  a8:	a6 3c       	cpi	r26, 0xC6	; 198
  aa:	b1 07       	cpc	r27, r17
  ac:	d9 f7       	brne	.-10     	; 0xa4 <.do_copy_data_loop>

000000ae <__do_clear_bss>:
  ae:	12 e0       	ldi	r17, 0x02	; 2
  b0:	a6 ec       	ldi	r26, 0xC6	; 198
  b2:	b2 e0       	ldi	r27, 0x02	; 2
  b4:	01 c0       	rjmp	.+2      	; 0xb8 <.do_clear_bss_start>

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

000000b8 <.do_clear_bss_start>:
  b8:	ab 3d       	cpi	r26, 0xDB	; 219
  ba:	b1 07       	cpc	r27, r17
  bc:	e1 f7       	brne	.-8      	; 0xb6 <.do_clear_bss_loop>
  be:	0e 94 e9 02 	call	0x5d2	; 0x5d2 <main>
  c2:	0c 94 3b 03 	jmp	0x676	; 0x676 <_exit>

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

000000ca <scl_delay>:
unsigned char SendByte(unsigned char d);
unsigned char ReadByte(void); 

void scl_delay(void)
{
  ca:	00 00       	nop
  cc:	00 00       	nop
  ce:	08 95       	ret

000000d0 <delay_ms>:
    Nop();Nop();        /*Nop();Nop();Nop();*/
}

void delay_ms(unsigned int delay)
{
  d0:	cf 93       	push	r28
  d2:	df 93       	push	r29
  d4:	cd b7       	in	r28, 0x3d	; 61
  d6:	de b7       	in	r29, 0x3e	; 62
  d8:	24 97       	sbiw	r28, 0x04	; 4
  da:	0f b6       	in	r0, 0x3f	; 63
  dc:	f8 94       	cli
  de:	de bf       	out	0x3e, r29	; 62
  e0:	0f be       	out	0x3f, r0	; 63
  e2:	cd bf       	out	0x3d, r28	; 61
  e4:	9c 01       	movw	r18, r24
    volatile unsigned int i,a;
    for (i=0; i<delay; i++)
  e6:	1c 82       	std	Y+4, r1	; 0x04
  e8:	1b 82       	std	Y+3, r1	; 0x03
  ea:	8b 81       	ldd	r24, Y+3	; 0x03
  ec:	9c 81       	ldd	r25, Y+4	; 0x04
  ee:	82 17       	cp	r24, r18
  f0:	93 07       	cpc	r25, r19
  f2:	70 f4       	brcc	.+28     	; 0x110 <delay_ms+0x40>
    {
        a = i*1;
  f4:	8b 81       	ldd	r24, Y+3	; 0x03
  f6:	9c 81       	ldd	r25, Y+4	; 0x04
  f8:	9a 83       	std	Y+2, r25	; 0x02
  fa:	89 83       	std	Y+1, r24	; 0x01
  fc:	8b 81       	ldd	r24, Y+3	; 0x03
  fe:	9c 81       	ldd	r25, Y+4	; 0x04
 100:	01 96       	adiw	r24, 0x01	; 1
 102:	9c 83       	std	Y+4, r25	; 0x04
 104:	8b 83       	std	Y+3, r24	; 0x03
 106:	8b 81       	ldd	r24, Y+3	; 0x03
 108:	9c 81       	ldd	r25, Y+4	; 0x04
 10a:	82 17       	cp	r24, r18
 10c:	93 07       	cpc	r25, r19
 10e:	90 f3       	brcs	.-28     	; 0xf4 <delay_ms+0x24>
 110:	24 96       	adiw	r28, 0x04	; 4
 112:	0f b6       	in	r0, 0x3f	; 63
 114:	f8 94       	cli
 116:	de bf       	out	0x3e, r29	; 62
 118:	0f be       	out	0x3f, r0	; 63
 11a:	cd bf       	out	0x3d, r28	; 61
 11c:	df 91       	pop	r29
 11e:	cf 91       	pop	r28
 120:	08 95       	ret

00000122 <calc_divider>:
    }
}

void calc_divider(unsigned char chan)
{
 122:	ef 92       	push	r14
 124:	ff 92       	push	r15
 126:	0f 93       	push	r16
 128:	1f 93       	push	r17
    Div1 = ((unsigned char)((freq[chan]+FUENCY)*16/1000/256)) & 0x7f;
 12a:	e8 2f       	mov	r30, r24
 12c:	ff 27       	eor	r31, r31
 12e:	ee 0f       	add	r30, r30
 130:	ff 1f       	adc	r31, r31
 132:	ee 0f       	add	r30, r30
 134:	ff 1f       	adc	r31, r31
 136:	e6 5d       	subi	r30, 0xD6	; 214
 138:	fe 4f       	sbci	r31, 0xFE	; 254
 13a:	e0 80       	ld	r14, Z
 13c:	f1 80       	ldd	r15, Z+1	; 0x01
 13e:	02 81       	ldd	r16, Z+2	; 0x02
 140:	13 81       	ldd	r17, Z+3	; 0x03
 142:	ee 0c       	add	r14, r14
 144:	ff 1c       	adc	r15, r15
 146:	00 1f       	adc	r16, r16
 148:	11 1f       	adc	r17, r17
 14a:	ee 0c       	add	r14, r14
 14c:	ff 1c       	adc	r15, r15
 14e:	00 1f       	adc	r16, r16
 150:	11 1f       	adc	r17, r17
 152:	ee 0c       	add	r14, r14
 154:	ff 1c       	adc	r15, r15
 156:	00 1f       	adc	r16, r16
 158:	11 1f       	adc	r17, r17
 15a:	ee 0c       	add	r14, r14
 15c:	ff 1c       	adc	r15, r15
 15e:	00 1f       	adc	r16, r16
 160:	11 1f       	adc	r17, r17
 162:	80 e4       	ldi	r24, 0x40	; 64
 164:	9f e7       	ldi	r25, 0x7F	; 127
 166:	a9 e0       	ldi	r26, 0x09	; 9
 168:	b0 e0       	ldi	r27, 0x00	; 0
 16a:	e8 0e       	add	r14, r24
 16c:	f9 1e       	adc	r15, r25
 16e:	0a 1f       	adc	r16, r26
 170:	1b 1f       	adc	r17, r27
 172:	c8 01       	movw	r24, r16
 174:	b7 01       	movw	r22, r14
 176:	20 e0       	ldi	r18, 0x00	; 0
 178:	38 ee       	ldi	r19, 0xE8	; 232
 17a:	43 e0       	ldi	r20, 0x03	; 3
 17c:	50 e0       	ldi	r21, 0x00	; 0
 17e:	0e 94 19 03 	call	0x632	; 0x632 <__udivmodsi4>
 182:	2f 77       	andi	r18, 0x7F	; 127
 184:	20 93 d9 02 	sts	0x02D9, r18
    Div2 = (unsigned char)((freq[chan]+FUENCY)*16/1000%256);
 188:	c8 01       	movw	r24, r16
 18a:	b7 01       	movw	r22, r14
 18c:	28 ee       	ldi	r18, 0xE8	; 232
 18e:	33 e0       	ldi	r19, 0x03	; 3
 190:	40 e0       	ldi	r20, 0x00	; 0
 192:	50 e0       	ldi	r21, 0x00	; 0
 194:	0e 94 19 03 	call	0x632	; 0x632 <__udivmodsi4>
 198:	20 93 d3 02 	sts	0x02D3, r18
 19c:	1f 91       	pop	r17
 19e:	0f 91       	pop	r16
 1a0:	ff 90       	pop	r15
 1a2:	ef 90       	pop	r14
 1a4:	08 95       	ret

000001a6 <SendByte>:
}

unsigned char ReadChan(void)
{
    unsigned char i=0; 
    Start();                                                /* 发送I2C 总线起始条件*/
    SendByte(AddPllRd);                                         /*发送被控器总线读地址*/
    i = ReadByte(); 
    //SendNoACK();                                            /*最后一个字节,发送非应答信号*/
    Stop();                                                 /*发送I2C 总线停止条件*/
    return (i); 
}

void SetChan(unsigned char chan)
{
    //Div1 = ((unsigned char)((freq[chan]+FUENCY)*16/1000/256)) & 0x7f;
    //Div2 = (unsigned char)((freq[chan]+FUENCY)*16/1000%256);
    //Con2 = (((freq[chan])<(168000))?(0xa0):(((freq[chan])<(450000))?(0x90):(0x30)));
    Con2 = (((freq[chan])<(168000))?(0x01):(((freq[chan])<(450000))?(0x02):(0x08)));
    Start();                                                 /* 发送I2C 总线起始条件  */
    SendByte(AddPllWr);                          /* 发送被控器总线写地址    */
    SendByte(Div1);
    SendByte(Div2);
    SendByte(PLLCON1);                                 /* 发送控制字1    第3字节*/
    SendByte(Con2);
    Stop();
    //PutChar(Div1);                                                 /*发送I2C 总线停止条件   */
    //PutChar(Div2);
    SET_FLAG(channel_busy_byte_flag);
}

/*------------字节数据传送子程序发送一个字节数据或地址给被控器---------------*/
unsigned char SendByte(unsigned char a)
{
 1a6:	0f 93       	push	r16
 1a8:	1f 93       	push	r17
 1aa:	18 2f       	mov	r17, r24
 1ac:	00 e0       	ldi	r16, 0x00	; 0
 1ae:	0d c0       	rjmp	.+26     	; 0x1ca <SendByte+0x24>
    unsigned char i; 
    for(i = 0;i < 8;i++)
    {
        if ((a & 0x80) == 0)
            SDA_Low();
 1b0:	91 98       	cbi	0x12, 1	; 18
        else
            SDA_High();
        scl_delay(); 
 1b2:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
        SCL_High();
 1b6:	90 9a       	sbi	0x12, 0	; 18
        scl_delay();            /*保证时钟高周期大于4 us*/
 1b8:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
        SCL_Low();
 1bc:	90 98       	cbi	0x12, 0	; 18
        scl_delay(); 
 1be:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
 1c2:	0f 5f       	subi	r16, 0xFF	; 255
 1c4:	08 30       	cpi	r16, 0x08	; 8
 1c6:	29 f0       	breq	.+10     	; 0x1d2 <SendByte+0x2c>
        a = a << 1; 
 1c8:	11 0f       	add	r17, r17
 1ca:	17 ff       	sbrs	r17, 7
 1cc:	f1 cf       	rjmp	.-30     	; 0x1b0 <SendByte+0xa>
 1ce:	91 9a       	sbi	0x12, 1	; 18
 1d0:	f0 cf       	rjmp	.-32     	; 0x1b2 <SendByte+0xc>
    }
    SDA_High();
 1d2:	91 9a       	sbi	0x12, 1	; 18
    scl_delay(); 
 1d4:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SCL_High();
 1d8:	90 9a       	sbi	0x12, 0	; 18
    /*  wait ack
    j = 0; 
    #ifdef PORTC_INTERFACE
    while((PINC&0x10) == 0)
        if ((++j) == 0) {SCL_Low(); return (1);}
    #else
    while((PINC&0x02) == 0)
        if ((++j) == 0) {SCL_Low(); return (1);}
    #endif
    */
    scl_delay();
 1da:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SCL_Low();
 1de:	90 98       	cbi	0x12, 0	; 18
    scl_delay();
 1e0:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    return (0);  /*成功,返回0*/
}
 1e4:	80 e0       	ldi	r24, 0x00	; 0
 1e6:	90 e0       	ldi	r25, 0x00	; 0
 1e8:	1f 91       	pop	r17
 1ea:	0f 91       	pop	r16
 1ec:	08 95       	ret

000001ee <ReadByte>:

/*---------------------------------------------------------------------------*/
unsigned char ReadByte(void)                /*数据接收子程序从被控器接收一个字节数据*/
{
 1ee:	0f 93       	push	r16
 1f0:	1f 93       	push	r17
    unsigned char i; 
    unsigned char Sin=0;
    
    #ifdef PORTC_INTERFACE
    #ifdef PORTC_INTERFACE_USED
    DDRC  = 0xEF;
    PORTC = 0xFF;
    #else
    DDRD  = 0xFD;
 1f2:	8d ef       	ldi	r24, 0xFD	; 253
 1f4:	81 bb       	out	0x11, r24	; 17
    PORTD = 0xFF;
 1f6:	8f ef       	ldi	r24, 0xFF	; 255
 1f8:	82 bb       	out	0x12, r24	; 18
 1fa:	00 e0       	ldi	r16, 0x00	; 0
 1fc:	10 e0       	ldi	r17, 0x00	; 0
 1fe:	09 c0       	rjmp	.+18     	; 0x212 <ReadByte+0x24>
    #endif
    #else
    DDRC  = 0xFD;
    PORTC = 0xFF;
    #endif
    for (i = 0;i < 8;i++)
    {
        Sin <<= 1; 
        
        SCL_High();
        scl_delay();

⌨️ 快捷键说明

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