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

📄 main.lss

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

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00001068  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .bss          00000036  00800100  00800100  000010dc  2**0
                  ALLOC
  2 .stab         00000378  00000000  00000000  000010dc  2**2
                  CONTENTS, READONLY, DEBUGGING
  3 .stabstr      00000071  00000000  00000000  00001454  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_aranges 000000c0  00000000  00000000  000014c5  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_pubnames 0000029c  00000000  00000000  00001585  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_info   00000c3f  00000000  00000000  00001821  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_abbrev 00000557  00000000  00000000  00002460  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_line   00000cfc  00000000  00000000  000029b7  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_frame  000001f0  00000000  00000000  000036b4  2**2
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    0000039f  00000000  00000000  000038a4  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_loc    000004ee  00000000  00000000  00003c43  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:	e8 e6       	ldi	r30, 0x68	; 104
      66:	f0 e1       	ldi	r31, 0x10	; 16
      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:	ef c7       	rjmp	.+4062   	; 0x1066 <_exit>

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

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


s16_t main(void) {
      8a:	a9 d5       	rcall	.+2898   	; 0xbde <proc_init>

  proc_init();

  while(1) {
    
    proc_poweroff();
      8c:	98 d5       	rcall	.+2864   	; 0xbbe <proc_poweroff>
    
    proc_calculate();
      8e:	90 d2       	rcall	.+1312   	; 0x5b0 <proc_calculate>
    
    proc_save();
      90:	a2 d4       	rcall	.+2372   	; 0x9d6 <proc_save>
    
    proc_display();
      92:	bf d3       	rcall	.+1918   	; 0x812 <proc_display>

    proc_key();
      94:	66 d4       	rcall	.+2252   	; 0x962 <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

⌨️ 快捷键说明

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