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

📄 yc_mainfile.lss

📁 AVRX实时操作无线遥控LED变化控制完整源码
💻 LSS
📖 第 1 页 / 共 4 页
字号:

YC_MainFile.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000952  00000000  00000000  000000b4  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000004  00800060  00000952  00000a06  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000143  00800064  00800064  00000a0a  2**2
                  ALLOC
  3 .noinit       00000000  008001a7  008001a7  00000a29  2**0
                  CONTENTS
  4 .eeprom       0000001f  00810000  00810000  00000a0a  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  5 .stab         000028bc  00000000  00000000  00000a2c  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00001233  00000000  00000000  000032e8  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	19 c0       	rjmp	.+50     	; 0x34
   2:	38 c0       	rjmp	.+112    	; 0x74
   4:	31 c0       	rjmp	.+98     	; 0x68
   6:	30 c0       	rjmp	.+96     	; 0x68
   8:	2f c0       	rjmp	.+94     	; 0x68
   a:	2e c0       	rjmp	.+92     	; 0x68
   c:	2d c0       	rjmp	.+90     	; 0x68
   e:	2c c0       	rjmp	.+88     	; 0x68
  10:	2b c0       	rjmp	.+86     	; 0x68
  12:	2b c0       	rjmp	.+86     	; 0x6a
  14:	29 c0       	rjmp	.+82     	; 0x68
  16:	28 c0       	rjmp	.+80     	; 0x68
  18:	27 c0       	rjmp	.+78     	; 0x68
  1a:	26 c0       	rjmp	.+76     	; 0x68
  1c:	25 c0       	rjmp	.+74     	; 0x68
  1e:	24 c0       	rjmp	.+72     	; 0x68
  20:	23 c0       	rjmp	.+70     	; 0x68
  22:	22 c0       	rjmp	.+68     	; 0x68
  24:	21 c0       	rjmp	.+66     	; 0x68

00000026 <MonitorTcb>:
  26:	ec 00 4b 00 7c 01 05                                ..K.|..

0000002d <KeyPressTcb>:
  2d:	73 01 3f 00 74 01 04                                s.?.t..

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

00000040 <__do_copy_data>:
  40:	10 e0       	ldi	r17, 0x00	; 0
  42:	a0 e6       	ldi	r26, 0x60	; 96
  44:	b0 e0       	ldi	r27, 0x00	; 0
  46:	e2 e5       	ldi	r30, 0x52	; 82
  48:	f9 e0       	ldi	r31, 0x09	; 9
  4a:	02 c0       	rjmp	.+4      	; 0x50

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

00000050 <.do_copy_data_start>:
  50:	a4 36       	cpi	r26, 0x64	; 100
  52:	b1 07       	cpc	r27, r17
  54:	d9 f7       	brne	.-10     	; 0x4c

00000056 <__do_clear_bss>:
  56:	11 e0       	ldi	r17, 0x01	; 1
  58:	a4 e6       	ldi	r26, 0x64	; 100
  5a:	b0 e0       	ldi	r27, 0x00	; 0
  5c:	01 c0       	rjmp	.+2      	; 0x60

0000005e <.do_clear_bss_loop>:
  5e:	1d 92       	st	X+, r1

00000060 <.do_clear_bss_start>:
  60:	a7 3a       	cpi	r26, 0xA7	; 167
  62:	b1 07       	cpc	r27, r17
  64:	e1 f7       	brne	.-8      	; 0x5e
  66:	1e c0       	rjmp	.+60     	; 0xa4

00000068 <__bad_interrupt>:
  68:	cb cf       	rjmp	.-106    	; 0x0

0000006a <__vector_9>:
//TimerControlBlock   delay;// Declare the control blocks for timers	        	
					
AVRX_SIGINT(SIG_OVERFLOW0) 
{
	IntProlog();        //switch to kernel stack/context.
  6a:	6a d2       	rcall	.+1236   	; 0x540
	TCNT0 = TCNT0_INIT; //Reset timer overflow count.
  6c:	8d ef       	ldi	r24, 0xFD	; 253
  6e:	82 bf       	out	0x32, r24	; 50
	AvrXTimerHandler(); //Call Time queue manager
  70:	09 d4       	rcall	.+2066   	; 0x884
	Epilog();           //Return to tasks.
  72:	be d2       	rcall	.+1404   	; 0x5f0

00000074 <__vector_1>:
}

AVRX_SIGINT(SIG_INTERRUPT0) 
{
	IntProlog();
  74:	65 d2       	rcall	.+1226   	; 0x540
	AvrXSetSemaphore(&key_pressed);
  76:	8a e7       	ldi	r24, 0x7A	; 122
  78:	91 e0       	ldi	r25, 0x01	; 1
  7a:	72 d3       	rcall	.+1764   	; 0x760
	Epilog();
  7c:	b9 d2       	rcall	.+1394   	; 0x5f0

0000007e <KeyPress>:
}


AVRX_GCC_TASKDEF(KeyPress, 100, 4)
{
	while(1)
	{
		while(1)
		{  
			AvrXResetSemaphore(&key_pressed);
  7e:	8a e7       	ldi	r24, 0x7A	; 122
  80:	91 e0       	ldi	r25, 0x01	; 1
  82:	c5 d3       	rcall	.+1930   	; 0x80e
			AvrXWaitSemaphore(&key_pressed);
  84:	8a e7       	ldi	r24, 0x7A	; 122
  86:	91 e0       	ldi	r25, 0x01	; 1
  88:	54 d3       	rcall	.+1704   	; 0x732
			if (PIND & _BV(PD2)) break;
  8a:	82 99       	sbic	0x10, 2	; 16
  8c:	f8 cf       	rjmp	.-16     	; 0x7e
	        else KeyYc(PINC & 0x0f);
  8e:	83 b3       	in	r24, 0x13	; 19
  90:	8f 70       	andi	r24, 0x0F	; 15
  92:	6b d1       	rcall	.+726    	; 0x36a
  94:	f4 cf       	rjmp	.-24     	; 0x7e

00000096 <Monitor>:
		}
	}
}

/*Task 1: .*/
AVRX_GCC_TASKDEF(Monitor, 100, 5)
{	
    while (1)
        {
		LoadWorkState();
  96:	bb d1       	rcall	.+886    	; 0x40e
        AvrXDelay(&delay, 1);	
  98:	61 e0       	ldi	r22, 0x01	; 1
  9a:	70 e0       	ldi	r23, 0x00	; 0
  9c:	82 e8       	ldi	r24, 0x82	; 130
  9e:	91 e0       	ldi	r25, 0x01	; 1
  a0:	c3 d3       	rcall	.+1926   	; 0x828
  a2:	f9 cf       	rjmp	.-14     	; 0x96

000000a4 <main>:
        }	
}
	
int main(void)
{
  a4:	cf e5       	ldi	r28, 0x5F	; 95
  a6:	d4 e0       	ldi	r29, 0x04	; 4
  a8:	de bf       	out	0x3e, r29	; 62
  aa:	cd bf       	out	0x3d, r28	; 61
    AvrXSetKernelStack(0);//Set Avrx stack to "0",or,if NULL then to current stack.
  ac:	80 e0       	ldi	r24, 0x00	; 0
  ae:	90 e0       	ldi	r25, 0x00	; 0
  b0:	db d2       	rcall	.+1462   	; 0x668

    ACSR = 0x80;
  b2:	80 e8       	ldi	r24, 0x80	; 128
  b4:	88 b9       	out	0x08, r24	; 8
	SFIOR = 0x00;
  b6:	10 be       	out	0x30, r1	; 48
	
	TCCR0 = T0MC8_CK256; 	// Set up Timer0 for CLK/256 rate
  b8:	84 e0       	ldi	r24, 0x04	; 4
  ba:	83 bf       	out	0x33, r24	; 51
	TCNT0 = TCNT0_INIT;
  bc:	8d ef       	ldi	r24, 0xFD	; 253
  be:	82 bf       	out	0x32, r24	; 50
	TIMSK |= _BV(TOIE0);  	// Enable Timer0 overflow interrupt
  c0:	89 b7       	in	r24, 0x39	; 57
  c2:	81 60       	ori	r24, 0x01	; 1
  c4:	89 bf       	out	0x39, r24	; 57
	
    InitWorkState();
  c6:	fb d1       	rcall	.+1014   	; 0x4be
	MCUCR |= _BV(ISC01) ;
  c8:	85 b7       	in	r24, 0x35	; 53
  ca:	82 60       	ori	r24, 0x02	; 2
  cc:	85 bf       	out	0x35, r24	; 53
	GICR |= _BV(INT0);
  ce:	8b b7       	in	r24, 0x3b	; 59
  d0:	80 64       	ori	r24, 0x40	; 64
  d2:	8b bf       	out	0x3b, r24	; 59
	
	AvrXRunTask(TCB(Monitor));
  d4:	86 e2       	ldi	r24, 0x26	; 38
  d6:	90 e0       	ldi	r25, 0x00	; 0
  d8:	d3 d2       	rcall	.+1446   	; 0x680
	AvrXRunTask(TCB(KeyPress));
  da:	8d e2       	ldi	r24, 0x2D	; 45
  dc:	90 e0       	ldi	r25, 0x00	; 0
  de:	d0 d2       	rcall	.+1440   	; 0x680
	
	Epilog();                   // Switch from AvrX Stack to first task
  e0:	87 d2       	rcall	.+1294   	; 0x5f0
			
	return 1;
}
  e2:	81 e0       	ldi	r24, 0x01	; 1
  e4:	90 e0       	ldi	r25, 0x00	; 0
  e6:	34 c4       	rjmp	.+2152   	; 0x950

000000e8 <PlayStaticAsh>:
=====================================================================*/
void  PlayStaticAsh(WORD wRedAsh, WORD wGreenAsh, WORD wBlueAsh)
{
    WORD wi;
    for(wi=0; wi<WASHVAL; wi++)
  e8:	20 e0       	ldi	r18, 0x00	; 0
  ea:	30 e0       	ldi	r19, 0x00	; 0
  ec:	e0 91 61 00 	lds	r30, 0x0061
  f0:	f0 91 62 00 	lds	r31, 0x0062
  f4:	2e 17       	cp	r18, r30
  f6:	3f 07       	cpc	r19, r31
  f8:	a8 f4       	brcc	.+42     	; 0x124
        {	
        if(wi < wRedAsh)
  fa:	28 17       	cp	r18, r24
  fc:	39 07       	cpc	r19, r25
  fe:	10 f4       	brcc	.+4      	; 0x104
            ON_Red();
 100:	95 98       	cbi	0x12, 5	; 18
 102:	01 c0       	rjmp	.+2      	; 0x106
        else
            OFF_Red();
 104:	95 9a       	sbi	0x12, 5	; 18

        if(wi < wGreenAsh)
 106:	26 17       	cp	r18, r22
 108:	37 07       	cpc	r19, r23
 10a:	10 f4       	brcc	.+4      	; 0x110
            ON_Gre();
 10c:	96 98       	cbi	0x12, 6	; 18
 10e:	01 c0       	rjmp	.+2      	; 0x112
        else
            OFF_Gre();
 110:	96 9a       	sbi	0x12, 6	; 18

        if(wi < wBlueAsh) 
 112:	24 17       	cp	r18, r20
 114:	35 07       	cpc	r19, r21
 116:	10 f4       	brcc	.+4      	; 0x11c
            ON_Blu();	
 118:	97 98       	cbi	0x12, 7	; 18
 11a:	01 c0       	rjmp	.+2      	; 0x11e
        else
            OFF_Blu();
 11c:	97 9a       	sbi	0x12, 7	; 18
 11e:	2f 5f       	subi	r18, 0xFF	; 255
 120:	3f 4f       	sbci	r19, 0xFF	; 255
 122:	e8 cf       	rjmp	.-48     	; 0xf4
 124:	08 95       	ret

00000126 <Play_Gradual>:
 126:	ff 92       	push	r15
 128:	0f 93       	push	r16
 12a:	1f 93       	push	r17
 12c:	cf 93       	push	r28
 12e:	df 93       	push	r29
 130:	f8 2e       	mov	r15, r24
 132:	81 e0       	ldi	r24, 0x01	; 1
 134:	80 93 92 01 	sts	0x0192, r24
 138:	00 e0       	ldi	r16, 0x00	; 0
 13a:	10 e0       	ldi	r17, 0x00	; 0
 13c:	80 91 61 00 	lds	r24, 0x0061
 140:	90 91 62 00 	lds	r25, 0x0062
 144:	08 17       	cp	r16, r24
 146:	19 07       	cpc	r17, r25
 148:	30 f5       	brcc	.+76     	; 0x196
 14a:	80 91 90 01 	lds	r24, 0x0190
 14e:	81 30       	cpi	r24, 0x01	; 1
 150:	09 f4       	brne	.+2      	; 0x154
 152:	5b c0       	rjmp	.+182    	; 0x20a
 154:	8f 2d       	mov	r24, r15
 156:	99 27       	eor	r25, r25
 158:	00 97       	sbiw	r24, 0x00	; 0
 15a:	d1 f0       	breq	.+52     	; 0x190
 15c:	ec 01       	movw	r28, r24
 15e:	10 93 96 01 	sts	0x0196, r17
 162:	00 93 95 01 	sts	0x0195, r16
 166:	80 91 61 00 	lds	r24, 0x0061
 16a:	90 91 62 00 	lds	r25, 0x0062
 16e:	80 1b       	sub	r24, r16
 170:	91 0b       	sbc	r25, r17
 172:	90 93 98 01 	sts	0x0198, r25
 176:	80 93 97 01 	sts	0x0197, r24
 17a:	10 92 8d 01 	sts	0x018D, r1
 17e:	10 92 8c 01 	sts	0x018C, r1
 182:	40 e0       	ldi	r20, 0x00	; 0
 184:	50 e0       	ldi	r21, 0x00	; 0
 186:	bc 01       	movw	r22, r24
 188:	c8 01       	movw	r24, r16
 18a:	ae df       	rcall	.-164    	; 0xe8
 18c:	21 97       	sbiw	r28, 0x01	; 1
 18e:	39 f7       	brne	.-50     	; 0x15e
 190:	0f 5f       	subi	r16, 0xFF	; 255
 192:	1f 4f       	sbci	r17, 0xFF	; 255
 194:	d3 cf       	rjmp	.-90     	; 0x13c
 196:	00 e0       	ldi	r16, 0x00	; 0
 198:	10 e0       	ldi	r17, 0x00	; 0
 19a:	80 91 61 00 	lds	r24, 0x0061
 19e:	90 91 62 00 	lds	r25, 0x0062
 1a2:	08 17       	cp	r16, r24
 1a4:	19 07       	cpc	r17, r25
 1a6:	20 f5       	brcc	.+72     	; 0x1f0
 1a8:	80 91 90 01 	lds	r24, 0x0190
 1ac:	81 30       	cpi	r24, 0x01	; 1
 1ae:	69 f1       	breq	.+90     	; 0x20a
 1b0:	8f 2d       	mov	r24, r15
 1b2:	99 27       	eor	r25, r25
 1b4:	00 97       	sbiw	r24, 0x00	; 0
 1b6:	c9 f0       	breq	.+50     	; 0x1ea
 1b8:	ec 01       	movw	r28, r24
 1ba:	80 91 61 00 	lds	r24, 0x0061
 1be:	90 91 62 00 	lds	r25, 0x0062
 1c2:	80 1b       	sub	r24, r16
 1c4:	91 0b       	sbc	r25, r17
 1c6:	90 93 96 01 	sts	0x0196, r25
 1ca:	80 93 95 01 	sts	0x0195, r24
 1ce:	10 92 98 01 	sts	0x0198, r1
 1d2:	10 92 97 01 	sts	0x0197, r1
 1d6:	10 93 8d 01 	sts	0x018D, r17
 1da:	00 93 8c 01 	sts	0x018C, r16
 1de:	a8 01       	movw	r20, r16
 1e0:	60 e0       	ldi	r22, 0x00	; 0
 1e2:	70 e0       	ldi	r23, 0x00	; 0
 1e4:	81 df       	rcall	.-254    	; 0xe8
 1e6:	21 97       	sbiw	r28, 0x01	; 1
 1e8:	41 f7       	brne	.-48     	; 0x1ba
 1ea:	0f 5f       	subi	r16, 0xFF	; 255
 1ec:	1f 4f       	sbci	r17, 0xFF	; 255
 1ee:	d5 cf       	rjmp	.-86     	; 0x19a
 1f0:	00 e0       	ldi	r16, 0x00	; 0
 1f2:	10 e0       	ldi	r17, 0x00	; 0
 1f4:	80 91 61 00 	lds	r24, 0x0061
 1f8:	90 91 62 00 	lds	r25, 0x0062
 1fc:	08 17       	cp	r16, r24
 1fe:	19 07       	cpc	r17, r25
 200:	70 f5       	brcc	.+92     	; 0x25e
 202:	80 91 90 01 	lds	r24, 0x0190
 206:	81 30       	cpi	r24, 0x01	; 1
 208:	19 f4       	brne	.+6      	; 0x210
 20a:	10 92 90 01 	sts	0x0190, r1
 20e:	27 c0       	rjmp	.+78     	; 0x25e
 210:	8f 2d       	mov	r24, r15
 212:	99 27       	eor	r25, r25

⌨️ 快捷键说明

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