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

📄 12ul_demo.lss

📁 基于AVR单片机的12段LED管灯控制程序
💻 LSS
📖 第 1 页 / 共 4 页
字号:

12ul_Demo.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000008f8  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000006a  00800060  000008f8  0000098c  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000045  008000ca  008000ca  000009f6  2**2
                  ALLOC
  3 .noinit       00000000  0080010f  0080010f  000009f6  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000009f6  2**0
                  CONTENTS
  5 .stab         00002a78  00000000  00000000  000009f8  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      0000136f  00000000  00000000  00003470  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	16 c0       	rjmp	.+44     	; 0x2e
   2:	2f c0       	rjmp	.+94     	; 0x62
   4:	2e c0       	rjmp	.+92     	; 0x62
   6:	2d c0       	rjmp	.+90     	; 0x62
   8:	2c c0       	rjmp	.+88     	; 0x62
   a:	2b c0       	rjmp	.+86     	; 0x62
   c:	2a c0       	rjmp	.+84     	; 0x62
   e:	29 c0       	rjmp	.+82     	; 0x62
  10:	28 c0       	rjmp	.+80     	; 0x62
  12:	28 c0       	rjmp	.+80     	; 0x64
  14:	26 c0       	rjmp	.+76     	; 0x62
  16:	25 c0       	rjmp	.+74     	; 0x62
  18:	24 c0       	rjmp	.+72     	; 0x62
  1a:	23 c0       	rjmp	.+70     	; 0x62
  1c:	22 c0       	rjmp	.+68     	; 0x62
  1e:	21 c0       	rjmp	.+66     	; 0x62
  20:	20 c0       	rjmp	.+64     	; 0x62
  22:	1f c0       	rjmp	.+62     	; 0x62
  24:	1e c0       	rjmp	.+60     	; 0x62

00000026 <LedPlayTcb>:
  26:	f6 00 37 00 f7 00 05 00                             ..7.....

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

0000003a <__do_copy_data>:
  3a:	10 e0       	ldi	r17, 0x00	; 0
  3c:	a0 e6       	ldi	r26, 0x60	; 96
  3e:	b0 e0       	ldi	r27, 0x00	; 0
  40:	e8 ef       	ldi	r30, 0xF8	; 248
  42:	f8 e0       	ldi	r31, 0x08	; 8
  44:	02 c0       	rjmp	.+4      	; 0x4a

00000046 <.do_copy_data_loop>:
  46:	05 90       	lpm	r0, Z+
  48:	0d 92       	st	X+, r0

0000004a <.do_copy_data_start>:
  4a:	aa 3c       	cpi	r26, 0xCA	; 202
  4c:	b1 07       	cpc	r27, r17
  4e:	d9 f7       	brne	.-10     	; 0x46

00000050 <__do_clear_bss>:
  50:	11 e0       	ldi	r17, 0x01	; 1
  52:	aa ec       	ldi	r26, 0xCA	; 202
  54:	b0 e0       	ldi	r27, 0x00	; 0
  56:	01 c0       	rjmp	.+2      	; 0x5a

00000058 <.do_clear_bss_loop>:
  58:	1d 92       	st	X+, r1

0000005a <.do_clear_bss_start>:
  5a:	af 30       	cpi	r26, 0x0F	; 15
  5c:	b1 07       	cpc	r27, r17
  5e:	e1 f7       	brne	.-8      	; 0x58
  60:	1b c0       	rjmp	.+54     	; 0x98

00000062 <__bad_interrupt>:
  62:	ce cf       	rjmp	.-100    	; 0x0

00000064 <__vector_9>:

//----------------------------------------------------------------				
AVRX_SIGINT(SIG_OVERFLOW0) 
{
	IntProlog();        //switch to kernel stack/context.
  64:	2c d2       	rcall	.+1112   	; 0x4be
    TCNT0 = TCNT0_INIT; //Reset timer overflow count.
  66:	83 ee       	ldi	r24, 0xE3	; 227
  68:	82 bf       	out	0x32, r24	; 50
	AvrXTimerHandler(); //Call Time queue manager
  6a:	4e d3       	rcall	.+1692   	; 0x708
	Epilog();           //Return to tasks.
  6c:	80 d2       	rcall	.+1280   	; 0x56e

0000006e <LedPlay>:
}

AVRX_GCC_TASKDEF(LedPlay, 10, 5)
{
    //AvrXDelay(&delay, 1);//1ms delay, Delay_MaxVal = 6.5s.
	BYTE bi;
	
    while(1)
        {
		Play_24ColorStaAsh(250);
  6e:	8a ef       	ldi	r24, 0xFA	; 250
  70:	90 e0       	ldi	r25, 0x00	; 0
  72:	ec d1       	rcall	.+984    	; 0x44c
  74:	ce e0       	ldi	r28, 0x0E	; 14
		for(bi = 0; bi < 15; bi++)
		    Play_24ColorRunAsh_L_to_R(PLAY_24ASHSPEED);
  76:	83 e0       	ldi	r24, 0x03	; 3
  78:	90 e0       	ldi	r25, 0x00	; 0
  7a:	90 d1       	rcall	.+800    	; 0x39c
  7c:	c1 50       	subi	r28, 0x01	; 1
  7e:	c7 ff       	sbrs	r28, 7
  80:	fa cf       	rjmp	.-12     	; 0x76
		Play_Jump_All(PLAY_DELAY1MS);
  82:	88 ee       	ldi	r24, 0xE8	; 232
  84:	93 e0       	ldi	r25, 0x03	; 3
  86:	4a d0       	rcall	.+148    	; 0x11c
		Play_CloseOpenMoveUpt(PLAY_MOVESPEED);
  88:	8a ef       	ldi	r24, 0xFA	; 250
  8a:	90 e0       	ldi	r25, 0x00	; 0
  8c:	d5 d0       	rcall	.+426    	; 0x238
		for(bi = 0; bi < 2; bi++)
            Play_Gradual(PLAY_GRADSPEED);
  8e:	81 e0       	ldi	r24, 0x01	; 1
  90:	32 d1       	rcall	.+612    	; 0x2f6
  92:	81 e0       	ldi	r24, 0x01	; 1
  94:	30 d1       	rcall	.+608    	; 0x2f6
  96:	eb cf       	rjmp	.-42     	; 0x6e

00000098 <main>:
        }
}

int main(void)
{
  98:	cf e5       	ldi	r28, 0x5F	; 95
  9a:	d4 e0       	ldi	r29, 0x04	; 4
  9c:	de bf       	out	0x3e, r29	; 62
  9e:	cd bf       	out	0x3d, r28	; 61
    AvrXSetKernelStack(0);//Set Avrx stack to "0",or,if NULL then to current stack.
  a0:	80 e0       	ldi	r24, 0x00	; 0
  a2:	90 e0       	ldi	r25, 0x00	; 0
  a4:	a0 d2       	rcall	.+1344   	; 0x5e6

	TCCR0 = T0MC8_CK256; 	// Set up Timer0 for CLK/256 rate
  a6:	84 e0       	ldi	r24, 0x04	; 4
  a8:	83 bf       	out	0x33, r24	; 51
	TCNT0 = TCNT0_INIT;
  aa:	83 ee       	ldi	r24, 0xE3	; 227
  ac:	82 bf       	out	0x32, r24	; 50
	TIMSK |= _BV(TOIE0);  	// Enable Timer0 overflow interrupt
  ae:	89 b7       	in	r24, 0x39	; 57
  b0:	81 60       	ori	r24, 0x01	; 1
  b2:	89 bf       	out	0x39, r24	; 57

    DDRD |= _BV(PD4) | _BV(PD3) | _BV(PD1) |_BV(PD0);
  b4:	81 b3       	in	r24, 0x11	; 17
  b6:	8b 61       	ori	r24, 0x1B	; 27
  b8:	81 bb       	out	0x11, r24	; 17
    Set_Oe();
  ba:	90 9a       	sbi	0x12, 0	; 18
	
	AvrXRunTask(TCB(LedPlay));
  bc:	86 e2       	ldi	r24, 0x26	; 38
  be:	90 e0       	ldi	r25, 0x00	; 0
  c0:	9e d2       	rcall	.+1340   	; 0x5fe
	
	Epilog();                   // Switch from AvrX Stack to first task
  c2:	55 d2       	rcall	.+1194   	; 0x56e
    
	return 1;
}
  c4:	81 e0       	ldi	r24, 0x01	; 1
  c6:	90 e0       	ldi	r25, 0x00	; 0
  c8:	16 c4       	rjmp	.+2092   	; 0x8f6

000000ca <SendOneDotColorData>:
//----------------------------------------------------------------
void SendOneDotColorData(BYTE bColor)
{
    BYTE bi;
	Set_Clk();Set_Sdi();Clr_Clk();
  ca:	93 9a       	sbi	0x12, 3	; 18
  cc:	94 9a       	sbi	0x12, 4	; 18
  ce:	93 98       	cbi	0x12, 3	; 18
  d0:	99 27       	eor	r25, r25
  d2:	fc 01       	movw	r30, r24
  d4:	ee 0f       	add	r30, r30
  d6:	ff 1f       	adc	r31, r31
  d8:	e8 0f       	add	r30, r24
  da:	f9 1f       	adc	r31, r25
  dc:	e8 55       	subi	r30, 0x58	; 88
  de:	ff 4f       	sbci	r31, 0xFF	; 255
  e0:	92 e0       	ldi	r25, 0x02	; 2
	for(bi=0; bi<3; bi++)
		{
		Set_Clk();
  e2:	93 9a       	sbi	0x12, 3	; 18
		if(bRgb_Logic[bColor*3+bi]  == 1)
  e4:	81 91       	ld	r24, Z+
  e6:	81 30       	cpi	r24, 0x01	; 1
  e8:	11 f4       	brne	.+4      	; 0xee
			Clr_Sdi();
  ea:	94 98       	cbi	0x12, 4	; 18
  ec:	01 c0       	rjmp	.+2      	; 0xf0
		else
			Set_Sdi(); 
  ee:	94 9a       	sbi	0x12, 4	; 18
		Clr_Clk();
  f0:	93 98       	cbi	0x12, 3	; 18
  f2:	91 50       	subi	r25, 0x01	; 1
  f4:	97 ff       	sbrs	r25, 7
  f6:	f5 cf       	rjmp	.-22     	; 0xe2
  f8:	08 95       	ret

000000fa <PlayAllOneColor>:
  fa:	1f 93       	push	r17
  fc:	cf 93       	push	r28
  fe:	df 93       	push	r29
 100:	18 2f       	mov	r17, r24
 102:	91 9a       	sbi	0x12, 1	; 18
 104:	c7 e1       	ldi	r28, 0x17	; 23
 106:	d0 e0       	ldi	r29, 0x00	; 0
 108:	81 2f       	mov	r24, r17
 10a:	df df       	rcall	.-66     	; 0xca
 10c:	21 97       	sbiw	r28, 0x01	; 1
 10e:	d7 ff       	sbrs	r29, 7
 110:	fb cf       	rjmp	.-10     	; 0x108
 112:	91 98       	cbi	0x12, 1	; 18
 114:	df 91       	pop	r29
 116:	cf 91       	pop	r28
 118:	1f 91       	pop	r17
 11a:	08 95       	ret

0000011c <Play_Jump_All>:
 11c:	0f 93       	push	r16
 11e:	1f 93       	push	r17
 120:	cf 93       	push	r28
 122:	8c 01       	movw	r16, r24
 124:	c0 e0       	ldi	r28, 0x00	; 0
 126:	8c 2f       	mov	r24, r28
 128:	e8 df       	rcall	.-48     	; 0xfa
 12a:	b8 01       	movw	r22, r16
 12c:	8d ef       	ldi	r24, 0xFD	; 253
 12e:	90 e0       	ldi	r25, 0x00	; 0
 130:	bd d2       	rcall	.+1402   	; 0x6ac
 132:	cf 5f       	subi	r28, 0xFF	; 255
 134:	c7 30       	cpi	r28, 0x07	; 7
 136:	b8 f3       	brcs	.-18     	; 0x126
 138:	cf 91       	pop	r28
 13a:	1f 91       	pop	r17
 13c:	0f 91       	pop	r16
 13e:	08 95       	ret

00000140 <SetCloseColor>:
		}
}


/*================================================================
Function: Run color close and open,R-G-B-RB-GB-RG.
-----------------------------------------------------------------*/ 
void  Play_CloseOpenMoveUpt( WORD bRunSpeed)
{
    BYTE bi;
    PlayAllOneColor(YELLOW);
    for(bi = RED; bi<= YELLOW; bi++)
	if(bi%2 == 0)
        SetCloseColor( bi, bRunSpeed);
	else
	    SetOpenColor( bi, bRunSpeed);
}
//----------------------------------------------------------------
void  SetCloseColor( BYTE bMoveColor, WORD bMoveSpeed)
{
 140:	af 92       	push	r10
 142:	bf 92       	push	r11
 144:	df 92       	push	r13
 146:	ef 92       	push	r14
 148:	ff 92       	push	r15
 14a:	0f 93       	push	r16
 14c:	1f 93       	push	r17
 14e:	cf 93       	push	r28
 150:	df 93       	push	r29
 152:	d8 2e       	mov	r13, r24
 154:	5b 01       	movw	r10, r22
    WORD bi, loop;
    for(loop=0; loop < (BLAMPS*BXDOTS)/2; loop++)
 156:	00 e0       	ldi	r16, 0x00	; 0
 158:	10 e0       	ldi	r17, 0x00	; 0
 15a:	38 e1       	ldi	r19, 0x18	; 24
 15c:	e3 2e       	mov	r14, r19
 15e:	f1 2c       	mov	r15, r1
   	    {
		Set_Stb();
 160:	91 9a       	sbi	0x12, 1	; 18
	    for(bi=0; bi < (BLAMPS*BXDOTS); bi++)
 162:	c0 e0       	ldi	r28, 0x00	; 0
 164:	d0 e0       	ldi	r29, 0x00	; 0
	        {
			if((bi <= loop) || (bi >= ((BLAMPS*BXDOTS)-loop)))
 166:	0c 17       	cp	r16, r28
 168:	1d 07       	cpc	r17, r29
 16a:	18 f4       	brcc	.+6      	; 0x172
 16c:	ce 15       	cp	r28, r14
 16e:	df 05       	cpc	r29, r15
 170:	10 f0       	brcs	.+4      	; 0x176
			    {
		        SendOneDotColorData(bMoveColor);
 172:	8d 2d       	mov	r24, r13
 174:	06 c0       	rjmp	.+12     	; 0x182
				}
			else
			    {
			    if(bMoveColor == RED)
 176:	dd 20       	and	r13, r13
 178:	11 f4       	brne	.+4      	; 0x17e
				    {
		            SendOneDotColorData(YELLOW);
 17a:	84 e0       	ldi	r24, 0x04	; 4
 17c:	02 c0       	rjmp	.+4      	; 0x182
				    }
				else 
				    {
		            SendOneDotColorData(bMoveColor-1);
 17e:	8d 2d       	mov	r24, r13
 180:	81 50       	subi	r24, 0x01	; 1
 182:	a3 df       	rcall	.-186    	; 0xca
 184:	21 96       	adiw	r28, 0x01	; 1
 186:	c8 31       	cpi	r28, 0x18	; 24
 188:	d1 05       	cpc	r29, r1
 18a:	68 f3       	brcs	.-38     	; 0x166
				    }
				}
			}	
		Clr_Stb();
 18c:	91 98       	cbi	0x12, 1	; 18
		AvrXDelay(&delay, bMoveSpeed);	
 18e:	b5 01       	movw	r22, r10
 190:	8d ef       	ldi	r24, 0xFD	; 253
 192:	90 e0       	ldi	r25, 0x00	; 0
 194:	8b d2       	rcall	.+1302   	; 0x6ac
 196:	0f 5f       	subi	r16, 0xFF	; 255
 198:	1f 4f       	sbci	r17, 0xFF	; 255
 19a:	08 94       	sec
 19c:	e1 08       	sbc	r14, r1
 19e:	f1 08       	sbc	r15, r1
 1a0:	0c 30       	cpi	r16, 0x0C	; 12
 1a2:	11 05       	cpc	r17, r1
 1a4:	e8 f2       	brcs	.-70     	; 0x160
 1a6:	df 91       	pop	r29
 1a8:	cf 91       	pop	r28
 1aa:	1f 91       	pop	r17
 1ac:	0f 91       	pop	r16
 1ae:	ff 90       	pop	r15
 1b0:	ef 90       	pop	r14
 1b2:	df 90       	pop	r13
 1b4:	bf 90       	pop	r11
 1b6:	af 90       	pop	r10
 1b8:	08 95       	ret

000001ba <SetOpenColor>:
		}
}
//-----------------------------------------------------------------
void  SetOpenColor( BYTE bMoveColor, WORD bMoveSpeed)
{
 1ba:	af 92       	push	r10
 1bc:	bf 92       	push	r11
 1be:	df 92       	push	r13
 1c0:	ef 92       	push	r14
 1c2:	ff 92       	push	r15
 1c4:	0f 93       	push	r16
 1c6:	1f 93       	push	r17
 1c8:	cf 93       	push	r28
 1ca:	df 93       	push	r29
 1cc:	d8 2e       	mov	r13, r24
 1ce:	5b 01       	movw	r10, r22

⌨️ 快捷键说明

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