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

📄 main.lss

📁 AVR红外遥控
💻 LSS
📖 第 1 页 / 共 5 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000fa0  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .bss          00000036  00800100  00800100  00001014  2**0
                  ALLOC
  2 .stab         00000378  00000000  00000000  00001014  2**2
                  CONTENTS, READONLY, DEBUGGING
  3 .stabstr      00000071  00000000  00000000  0000138c  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_aranges 000000c0  00000000  00000000  000013fd  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_pubnames 0000029c  00000000  00000000  000014bd  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_info   00000c3b  00000000  00000000  00001759  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_abbrev 00000557  00000000  00000000  00002394  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_line   00000ce4  00000000  00000000  000028eb  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_frame  000001f0  00000000  00000000  000035d0  2**2
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    0000039a  00000000  00000000  000037c0  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_loc    000004ba  00000000  00000000  00003b5a  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	28 c0       	rjmp	.+80     	; 0x52 <__ctors_end>
   2:	94 c0       	rjmp	.+296    	; 0x12c <__vector_1>
   4:	a5 c0       	rjmp	.+330    	; 0x150 <__vector_2>
   6:	40 c0       	rjmp	.+128    	; 0x88 <__bad_interrupt>
   8:	3f c0       	rjmp	.+126    	; 0x88 <__bad_interrupt>
   a:	3e c0       	rjmp	.+124    	; 0x88 <__bad_interrupt>
   c:	3d c0       	rjmp	.+122    	; 0x88 <__bad_interrupt>
   e:	3c c0       	rjmp	.+120    	; 0x88 <__bad_interrupt>
  10:	3b c0       	rjmp	.+118    	; 0x88 <__bad_interrupt>
  12:	b5 c0       	rjmp	.+362    	; 0x17e <__vector_9>
  14:	c9 c0       	rjmp	.+402    	; 0x1a8 <__vector_10>
  16:	df c0       	rjmp	.+446    	; 0x1d6 <__vector_11>
  18:	df c0       	rjmp	.+446    	; 0x1d8 <__vector_12>
  1a:	df c0       	rjmp	.+446    	; 0x1da <__vector_13>
  1c:	35 c0       	rjmp	.+106    	; 0x88 <__bad_interrupt>
  1e:	34 c0       	rjmp	.+104    	; 0x88 <__bad_interrupt>
  20:	16 c1       	rjmp	.+556    	; 0x24e <__vector_16>
  22:	32 c0       	rjmp	.+100    	; 0x88 <__bad_interrupt>
  24:	31 c0       	rjmp	.+98     	; 0x88 <__bad_interrupt>
  26:	30 c0       	rjmp	.+96     	; 0x88 <__bad_interrupt>
  28:	2f c0       	rjmp	.+94     	; 0x88 <__bad_interrupt>
  2a:	2e c0       	rjmp	.+92     	; 0x88 <__bad_interrupt>
  2c:	2d c0       	rjmp	.+90     	; 0x88 <__bad_interrupt>
  2e:	2c c0       	rjmp	.+88     	; 0x88 <__bad_interrupt>
  30:	2b c0       	rjmp	.+86     	; 0x88 <__bad_interrupt>
  32:	2a c0       	rjmp	.+84     	; 0x88 <__bad_interrupt>

00000034 <led_seg>:
  34:	fc 60 da f2 66 b6 be e0 fe f6 ee 3e 9c 7a 9e 8e     .`..f......>.z..

00000044 <led_select>:
  44:	40 20 10 08 04 02 01 01 20 10 08 04 02 00           @ ...... .....

00000052 <__ctors_end>:
  52:	11 24       	eor	r1, r1
  54:	1f be       	out	0x3f, r1	; 63
  56:	cf ef       	ldi	r28, 0xFF	; 255
  58:	d2 e0       	ldi	r29, 0x02	; 2
  5a:	de bf       	out	0x3e, r29	; 62
  5c:	cd bf       	out	0x3d, r28	; 61

0000005e <__do_copy_data>:
  5e:	11 e0       	ldi	r17, 0x01	; 1
  60:	a0 e0       	ldi	r26, 0x00	; 0
  62:	b1 e0       	ldi	r27, 0x01	; 1
  64:	e0 ea       	ldi	r30, 0xA0	; 160
  66:	ff e0       	ldi	r31, 0x0F	; 15
  68:	02 c0       	rjmp	.+4      	; 0x6e <.do_copy_data_start>

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

0000006e <.do_copy_data_start>:
  6e:	a0 30       	cpi	r26, 0x00	; 0
  70:	b1 07       	cpc	r27, r17
  72:	d9 f7       	brne	.-10     	; 0x6a <.do_copy_data_loop>

00000074 <__do_clear_bss>:
  74:	11 e0       	ldi	r17, 0x01	; 1
  76:	a0 e0       	ldi	r26, 0x00	; 0
  78:	b1 e0       	ldi	r27, 0x01	; 1
  7a:	01 c0       	rjmp	.+2      	; 0x7e <.do_clear_bss_start>

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

0000007e <.do_clear_bss_start>:
  7e:	a6 33       	cpi	r26, 0x36	; 54
  80:	b1 07       	cpc	r27, r17
  82:	e1 f7       	brne	.-8      	; 0x7c <.do_clear_bss_loop>
  84:	02 d0       	rcall	.+4      	; 0x8a <main>
  86:	8b c7       	rjmp	.+3862   	; 0xf9e <_exit>

00000088 <__bad_interrupt>:
  88:	bb cf       	rjmp	.-138    	; 0x0 <__vectors>

0000008a <main>:
#include "cc.h"
#include "proccess.h"


s16_t main(void) {
  8a:	64 d5       	rcall	.+2760   	; 0xb54 <proc_init>

  proc_init();

  while(1) {
    
    proc_poweroff();
  8c:	53 d5       	rcall	.+2726   	; 0xb34 <proc_poweroff>
    
    proc_calculate();
  8e:	90 d2       	rcall	.+1312   	; 0x5b0 <proc_calculate>
    
    proc_save();
  90:	5d d4       	rcall	.+2234   	; 0x94c <proc_save>
    
    proc_display();
  92:	7a d3       	rcall	.+1780   	; 0x788 <proc_display>

    proc_key();
  94:	21 d4       	rcall	.+2114   	; 0x8d8 <proc_key>
  96:	fa cf       	rjmp	.-12     	; 0x8c <main+0x2>

00000098 <init_interrupt>:



// =========================================================================
void init_interrupt(void){
  98:	f8 94       	cli
  
  cli();
  // FV 输入于ICP1,空闲为高(低边缘检测)
  DDRB &= ~_BV(FV);
  9a:	20 98       	cbi	0x04, 0	; 4
  PORTB |= _BV(FV);
  9c:	28 9a       	sbi	0x05, 0	; 5
  // FI 输入于INT1,空闲为高(低边缘检测)
  DDRD &= ~_BV(FI);
  9e:	53 98       	cbi	0x0a, 3	; 10
  PORTD |= _BV(FI);
  a0:	5b 9a       	sbi	0x0b, 3	; 11
  
  flag0 = 0;
  a2:	10 92 07 01 	sts	0x0107, r1
  
  // setup T0;
  TCNT0 = TIME0;
  a6:	80 ee       	ldi	r24, 0xE0	; 224
  a8:	86 bd       	out	0x26, r24	; 38
 // TCCR0 = (_BV(CS01)|_BV(CS00));    //  fosc/64
 
    #ifdef MCU_MEGA8
    TCCR0 = _BV(CS02);    //  fosc/256
    #else
    TCCR0B = _BV(CS02);
  aa:	84 e0       	ldi	r24, 0x04	; 4
  ac:	85 bd       	out	0x25, r24	; 37
    #endif
  
    #ifdef MCU_MEGA8
    TIMSK |= _BV(TOIE0);      // enable T0 interrupt
    #else
    TIMSK0 |= _BV(TOIE0);
  ae:	ee e6       	ldi	r30, 0x6E	; 110
  b0:	f0 e0       	ldi	r31, 0x00	; 0
  b2:	80 81       	ld	r24, Z
  b4:	81 60       	ori	r24, 0x01	; 1
  b6:	80 83       	st	Z, r24
    #endif
    
  cnt_t0 = 0;
  b8:	10 92 04 01 	sts	0x0104, r1

  // setup T1; T1 is always runing....
  TCNT1 = TIME1;
  bc:	80 e8       	ldi	r24, 0x80	; 128
  be:	9f e8       	ldi	r25, 0x8F	; 143
  c0:	90 93 85 00 	sts	0x0085, r25
  c4:	80 93 84 00 	sts	0x0084, r24
    
    #ifdef MCU_MEGA8
    TIMSK |= _BV(TOIE1);      // enable T1 interrupt
    #else
    TIMSK1 |= _BV(TOIE1);
  c8:	ef e6       	ldi	r30, 0x6F	; 111
  ca:	f0 e0       	ldi	r31, 0x00	; 0
  cc:	80 81       	ld	r24, Z
  ce:	81 60       	ori	r24, 0x01	; 1
  d0:	80 83       	st	Z, r24
    #endif
  
  cnt_t1 = 0;
  d2:	10 92 09 01 	sts	0x0109, r1
  d6:	10 92 08 01 	sts	0x0108, r1

  // ICP1
  TCCR1A = 0x00;   // 输出捕捉模式普通
  da:	10 92 80 00 	sts	0x0080, r1
  
    #ifdef MCU_MEGA8
    TIMSK |= _BV(TICIE1);
    #else
    TIMSK1 |= _BV(ICIE1);
  de:	80 81       	ld	r24, Z
  e0:	80 62       	ori	r24, 0x20	; 32
  e2:	80 83       	st	Z, r24
    #endif
  // 允许滤波、下降沿、fosc/64
//  TCCR1B = (_BV(ICNC1)|_BV(CS11)|_BV(CS10)); // 同样也是 T1的分频数
  TCCR1B = (_BV(ICNC1)|_BV(CS12)); // 同样也是 T1的分频数
  e4:	84 e8       	ldi	r24, 0x84	; 132
  e6:	80 93 81 00 	sts	0x0081, r24
  cnt_icp1 = 0;
  ea:	10 92 06 01 	sts	0x0106, r1
  ee:	10 92 05 01 	sts	0x0105, r1


  // T2:
  TCNT2 = TIME2;
  f2:	80 e1       	ldi	r24, 0x10	; 16
  f4:	80 93 b2 00 	sts	0x00B2, r24
  #ifdef MCU_MEGA8
  TCCR2 = (_BV(CS22)|_BV(CS21)|_BV(CS20));    //  fosc/1024
  #else
  TCCR2B = (_BV(CS22)|_BV(CS21)|_BV(CS20));    //  fosc/1024
  f8:	87 e0       	ldi	r24, 0x07	; 7
  fa:	80 93 b1 00 	sts	0x00B1, r24
  #endif
  
  #ifdef MCU_MEGA8
  TIMSK |= _BV(TOIE2);      // enable T2 interrupt
  #else
  TIMSK2 |= _BV(TOIE2);
  fe:	e0 e7       	ldi	r30, 0x70	; 112
 100:	f0 e0       	ldi	r31, 0x00	; 0
 102:	80 81       	ld	r24, Z
 104:	81 60       	ori	r24, 0x01	; 1
 106:	80 83       	st	Z, r24
  #endif
  
  cnt_t2 = 0;
 108:	10 92 0e 01 	sts	0x010E, r1
  
  // INT1: 
  #ifdef MCU_MEGA8
  MCUCR |= _BV(ISC11);      // 下降沿有效
  #else
  EICRA |= _BV(ISC11);
 10c:	e9 e6       	ldi	r30, 0x69	; 105
 10e:	f0 e0       	ldi	r31, 0x00	; 0
 110:	80 81       	ld	r24, Z
 112:	88 60       	ori	r24, 0x08	; 8
 114:	80 83       	st	Z, r24
  #endif
  
  #ifdef MCU_MEGA8
  GICR |= _BV(INT1);        // enable
  #else
  EIMSK |= _BV(INT1);
 116:	e9 9a       	sbi	0x1d, 1	; 29
  #endif
  
  cnt_int1 = 0;
 118:	10 92 0b 01 	sts	0x010B, r1
 11c:	10 92 0a 01 	sts	0x010A, r1
  
  // INT0:
  #ifdef MCU_MEGA8
  MCUCR |= _BV(ISC01)|_BV(ISC00);  // 上升沿有效
  #else
  EICRA |= _BV(ISC01)|_BV(ISC00);  // 上升沿有效
 120:	80 81       	ld	r24, Z
 122:	83 60       	ori	r24, 0x03	; 3
 124:	80 83       	st	Z, r24
  #endif
  
  #ifdef MCU_MEGA8
  GICR |= _BV(INT0);    // enable
  #else
  EIMSK |= _BV(INT0);    // enable
 126:	e8 9a       	sbi	0x1d, 0	; 29
  #endif
  

  // enable 
  sei();
 128:	78 94       	sei
 12a:	08 95       	ret

0000012c <__vector_1>:
  
  return;
  
}




// interrup rounting
SIGNAL(SIG_INTERRUPT0) {
 12c:	1f 92       	push	r1
 12e:	0f 92       	push	r0
 130:	0f b6       	in	r0, 0x3f	; 63
 132:	0f 92       	push	r0
 134:	11 24       	eor	r1, r1
 136:	8f 93       	push	r24
  
  cli();
 138:	f8 94       	cli
  flag0 |= _BV(FLAG0_INT0);
 13a:	80 91 07 01 	lds	r24, 0x0107
 13e:	80 61       	ori	r24, 0x10	; 16
 140:	80 93 07 01 	sts	0x0107, r24
 144:	8f 91       	pop	r24
 146:	0f 90       	pop	r0
 148:	0f be       	out	0x3f, r0	; 63
 14a:	0f 90       	pop	r0
 14c:	1f 90       	pop	r1
 14e:	18 95       	reti

00000150 <__vector_2>:
  
}


SIGNAL(SIG_INTERRUPT1) {
 150:	1f 92       	push	r1
 152:	0f 92       	push	r0
 154:	0f b6       	in	r0, 0x3f	; 63
 156:	0f 92       	push	r0
 158:	11 24       	eor	r1, r1
 15a:	8f 93       	push	r24
 15c:	9f 93       	push	r25
  
  ++cnt_int1;
 15e:	80 91 0a 01 	lds	r24, 0x010A
 162:	90 91 0b 01 	lds	r25, 0x010B
 166:	01 96       	adiw	r24, 0x01	; 1
 168:	90 93 0b 01 	sts	0x010B, r25
 16c:	80 93 0a 01 	sts	0x010A, r24
 170:	9f 91       	pop	r25
 172:	8f 91       	pop	r24
 174:	0f 90       	pop	r0
 176:	0f be       	out	0x3f, r0	; 63
 178:	0f 90       	pop	r0
 17a:	1f 90       	pop	r1
 17c:	18 95       	reti

0000017e <__vector_9>:
  
}

#ifdef MCU_MEGA8
EMPTY_INTERRUPT(SIG_OUTPUT_COMPARE2);
#endif

// T2
SIGNAL(SIG_OVERFLOW2) {
 17e:	1f 92       	push	r1
 180:	0f 92       	push	r0
 182:	0f b6       	in	r0, 0x3f	; 63
 184:	0f 92       	push	r0
 186:	11 24       	eor	r1, r1
 188:	8f 93       	push	r24
  
  TCNT2 = TIME2;
 18a:	80 e1       	ldi	r24, 0x10	; 16
 18c:	80 93 b2 00 	sts	0x00B2, r24
  
  ++cnt_t2;
 190:	80 91 0e 01 	lds	r24, 0x010E
 194:	8f 5f       	subi	r24, 0xFF	; 255
 196:	80 93 0e 01 	sts	0x010E, r24
  
  wdt_reset();
 19a:	a8 95       	wdr
 19c:	8f 91       	pop	r24
 19e:	0f 90       	pop	r0
 1a0:	0f be       	out	0x3f, r0	; 63
 1a2:	0f 90       	pop	r0
 1a4:	1f 90       	pop	r1
 1a6:	18 95       	reti

000001a8 <__vector_10>:

}

// ICP1 输入捕捉
SIGNAL(SIG_INPUT_CAPTURE1) {
 1a8:	1f 92       	push	r1
 1aa:	0f 92       	push	r0
 1ac:	0f b6       	in	r0, 0x3f	; 63
 1ae:	0f 92       	push	r0

⌨️ 快捷键说明

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