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

📄 led.lss

📁 AVR code for led matrix
💻 LSS
📖 第 1 页 / 共 2 页
字号:

led.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000322  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000002a  00800060  00000322  00000396  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .debug_aranges 00000020  00000000  00000000  000003c0  2**0
                  CONTENTS, READONLY, DEBUGGING
  3 .debug_pubnames 00000090  00000000  00000000  000003e0  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_info   000004f5  00000000  00000000  00000470  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_abbrev 000001eb  00000000  00000000  00000965  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_line   000002c1  00000000  00000000  00000b50  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_frame  00000050  00000000  00000000  00000e14  2**2
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_str    0000015d  00000000  00000000  00000e64  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_loc    0000031a  00000000  00000000  00000fc1  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_ranges 00000020  00000000  00000000  000012db  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	1a c0       	rjmp	.+52     	; 0x36 <__ctors_end>
   2:	34 c0       	rjmp	.+104    	; 0x6c <__bad_interrupt>
   4:	33 c0       	rjmp	.+102    	; 0x6c <__bad_interrupt>
   6:	32 c0       	rjmp	.+100    	; 0x6c <__bad_interrupt>
   8:	31 c0       	rjmp	.+98     	; 0x6c <__bad_interrupt>
   a:	30 c0       	rjmp	.+96     	; 0x6c <__bad_interrupt>
   c:	2f c0       	rjmp	.+94     	; 0x6c <__bad_interrupt>
   e:	2e c0       	rjmp	.+92     	; 0x6c <__bad_interrupt>
  10:	2d c0       	rjmp	.+90     	; 0x6c <__bad_interrupt>
  12:	2c c0       	rjmp	.+88     	; 0x6c <__bad_interrupt>
  14:	2b c0       	rjmp	.+86     	; 0x6c <__bad_interrupt>
  16:	2a c0       	rjmp	.+84     	; 0x6c <__bad_interrupt>
  18:	29 c0       	rjmp	.+82     	; 0x6c <__bad_interrupt>
  1a:	28 c0       	rjmp	.+80     	; 0x6c <__bad_interrupt>
  1c:	27 c0       	rjmp	.+78     	; 0x6c <__bad_interrupt>
  1e:	26 c0       	rjmp	.+76     	; 0x6c <__bad_interrupt>
  20:	25 c0       	rjmp	.+74     	; 0x6c <__bad_interrupt>
  22:	24 c0       	rjmp	.+72     	; 0x6c <__bad_interrupt>
  24:	23 c0       	rjmp	.+70     	; 0x6c <__bad_interrupt>

00000026 <animation>:
  26:	08 1c 2a 49 88 88 9c aa c9 88 88 9c aa c9 88 00     ..*I............

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

00000042 <__do_copy_data>:
  42:	10 e0       	ldi	r17, 0x00	; 0
  44:	a0 e6       	ldi	r26, 0x60	; 96
  46:	b0 e0       	ldi	r27, 0x00	; 0
  48:	e2 e2       	ldi	r30, 0x22	; 34
  4a:	f3 e0       	ldi	r31, 0x03	; 3
  4c:	02 c0       	rjmp	.+4      	; 0x52 <.do_copy_data_start>

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

00000052 <.do_copy_data_start>:
  52:	aa 38       	cpi	r26, 0x8A	; 138
  54:	b1 07       	cpc	r27, r17
  56:	d9 f7       	brne	.-10     	; 0x4e <.do_copy_data_loop>

00000058 <__do_clear_bss>:
  58:	10 e0       	ldi	r17, 0x00	; 0
  5a:	aa e8       	ldi	r26, 0x8A	; 138
  5c:	b0 e0       	ldi	r27, 0x00	; 0
  5e:	01 c0       	rjmp	.+2      	; 0x62 <.do_clear_bss_start>

00000060 <.do_clear_bss_loop>:
  60:	1d 92       	st	X+, r1

00000062 <.do_clear_bss_start>:
  62:	aa 38       	cpi	r26, 0x8A	; 138
  64:	b1 07       	cpc	r27, r17
  66:	e1 f7       	brne	.-8      	; 0x60 <.do_clear_bss_loop>
  68:	b2 d0       	rcall	.+356    	; 0x1ce <main>
  6a:	59 c1       	rjmp	.+690    	; 0x31e <_exit>

0000006c <__bad_interrupt>:
  6c:	c9 cf       	rjmp	.-110    	; 0x0 <__vectors>

0000006e <setPixel>:
	}// end of ANIMATION mode

	return 0;
}
// Set a pixel by the pin number (value can be HIGH or LOW)
void setPixel(uint8_t pin, uint8_t value){
  6e:	e8 2f       	mov	r30, r24
  70:	f0 e0       	ldi	r31, 0x00	; 0
  72:	df 01       	movw	r26, r30
  74:	a5 58       	subi	r26, 0x85	; 133
  76:	bf 4f       	sbci	r27, 0xFF	; 255
  78:	ac 91       	ld	r26, X

// digitalWrite from Arduino modified for use absolute pins
void digitalWrite(uint8_t pin, uint8_t val)
{
	uint8_t bit = digitalPinToBitMask[pin];
	uint8_t port = digitalPinToPort[pin];
  7a:	e4 59       	subi	r30, 0x94	; 148
  7c:	ff 4f       	sbci	r31, 0xFF	; 255
  7e:	20 81       	ld	r18, Z
	volatile uint8_t *out;

    if (port == PB) {
  80:	22 30       	cpi	r18, 0x02	; 2
  82:	19 f4       	brne	.+6      	; 0x8a <setPixel+0x1c>
  84:	e8 e3       	ldi	r30, 0x38	; 56
  86:	f0 e0       	ldi	r31, 0x00	; 0
  88:	04 c0       	rjmp	.+8      	; 0x92 <setPixel+0x24>
		 out = &PORTB; 
	} else 
	if (port == PD) { 
  8a:	24 30       	cpi	r18, 0x04	; 4
  8c:	11 f4       	brne	.+4      	; 0x92 <setPixel+0x24>
  8e:	e2 e3       	ldi	r30, 0x32	; 50
  90:	f0 e0       	ldi	r31, 0x00	; 0
	     out = &PORTD; 
	}

	if (val == LOW) *out &= ~bit;
  92:	66 23       	and	r22, r22
  94:	29 f4       	brne	.+10     	; 0xa0 <setPixel+0x32>
  96:	80 81       	ld	r24, Z
  98:	9a 2f       	mov	r25, r26
  9a:	90 95       	com	r25
  9c:	89 23       	and	r24, r25
  9e:	02 c0       	rjmp	.+4      	; 0xa4 <setPixel+0x36>
	else *out |= bit;
  a0:	80 81       	ld	r24, Z
  a2:	8a 2b       	or	r24, r26
  a4:	80 83       	st	Z, r24
    can be achieved.
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
  a6:	88 ec       	ldi	r24, 0xC8	; 200
  a8:	8a 95       	dec	r24
  aa:	f1 f7       	brne	.-4      	; 0xa8 <setPixel+0x3a>
{
	uint8_t bit = digitalPinToBitMask[pin];
	uint8_t port = digitalPinToPort[pin];
	volatile uint8_t *out;

    if (port == PB) {
  ac:	22 30       	cpi	r18, 0x02	; 2
  ae:	19 f4       	brne	.+6      	; 0xb6 <setPixel+0x48>
  b0:	e8 e3       	ldi	r30, 0x38	; 56
  b2:	f0 e0       	ldi	r31, 0x00	; 0
  b4:	07 c0       	rjmp	.+14     	; 0xc4 <setPixel+0x56>
		 out = &PORTB; 
	} else 
	if (port == PD) { 
  b6:	24 30       	cpi	r18, 0x04	; 4
  b8:	19 f4       	brne	.+6      	; 0xc0 <setPixel+0x52>
  ba:	e2 e3       	ldi	r30, 0x32	; 50
  bc:	f0 e0       	ldi	r31, 0x00	; 0
  be:	02 c0       	rjmp	.+4      	; 0xc4 <setPixel+0x56>
  c0:	e0 e0       	ldi	r30, 0x00	; 0
  c2:	f0 e0       	ldi	r31, 0x00	; 0
	     out = &PORTD; 
	}

	if (val == LOW) *out &= ~bit;
  c4:	80 81       	ld	r24, Z
  c6:	a0 95       	com	r26
  c8:	8a 23       	and	r24, r26
  ca:	80 83       	st	Z, r24
// Set a pixel by the pin number (value can be HIGH or LOW)
void setPixel(uint8_t pin, uint8_t value){
  		digitalWrite(pin,value);
		_delay_us(600);
		digitalWrite(pin,LOW);
}
  cc:	08 95       	ret

000000ce <paint>:

// Refresh paint all the dotmatrix by scanning all rows and cols
// Use times for choose the speeds
void paint(uint8_t matrix[], uint8_t times){
  ce:	7f 92       	push	r7
  d0:	8f 92       	push	r8
  d2:	9f 92       	push	r9
  d4:	af 92       	push	r10
  d6:	bf 92       	push	r11
  d8:	cf 92       	push	r12
  da:	df 92       	push	r13
  dc:	ef 92       	push	r14
  de:	ff 92       	push	r15
  e0:	0f 93       	push	r16
  e2:	1f 93       	push	r17
  e4:	cf 93       	push	r28
  e6:	df 93       	push	r29
  e8:	5c 01       	movw	r10, r24
  ea:	76 2e       	mov	r7, r22
  ec:	cc 24       	eor	r12, r12

		for (i=0;i<times;i++){
			for (row=0;row<7;row++){
				digitalWrite(rows[row],LOW);
				for(col=0;col<5;col++){
					setPixel(cols[col],matrix[col]&1<<row);
  ee:	91 e0       	ldi	r25, 0x01	; 1
  f0:	89 2e       	mov	r8, r25
  f2:	91 2c       	mov	r9, r1
  f4:	55 c0       	rjmp	.+170    	; 0x1a0 <paint+0xd2>
// Refresh paint all the dotmatrix by scanning all rows and cols
// Use times for choose the speeds
void paint(uint8_t matrix[], uint8_t times){
	uint8_t col,row, i;

		for (i=0;i<times;i++){
  f6:	90 2f       	mov	r25, r16
}

// digitalWrite from Arduino modified for use absolute pins
void digitalWrite(uint8_t pin, uint8_t val)
{
	uint8_t bit = digitalPinToBitMask[pin];
  f8:	d7 01       	movw	r26, r14
  fa:	ec 91       	ld	r30, X
  fc:	f0 e0       	ldi	r31, 0x00	; 0
  fe:	df 01       	movw	r26, r30
 100:	a5 58       	subi	r26, 0x85	; 133
 102:	bf 4f       	sbci	r27, 0xFF	; 255
 104:	ac 91       	ld	r26, X
	uint8_t port = digitalPinToPort[pin];
 106:	e4 59       	subi	r30, 0x94	; 148
 108:	ff 4f       	sbci	r31, 0xFF	; 255
 10a:	e0 81       	ld	r30, Z
	volatile uint8_t *out;

    if (port == PB) {
 10c:	e2 30       	cpi	r30, 0x02	; 2
 10e:	19 f4       	brne	.+6      	; 0x116 <paint+0x48>
 110:	e8 e3       	ldi	r30, 0x38	; 56
 112:	f0 e0       	ldi	r31, 0x00	; 0
 114:	07 c0       	rjmp	.+14     	; 0x124 <paint+0x56>
		 out = &PORTB; 
	} else 
	if (port == PD) { 
 116:	e4 30       	cpi	r30, 0x04	; 4
 118:	19 f4       	brne	.+6      	; 0x120 <paint+0x52>
 11a:	e2 e3       	ldi	r30, 0x32	; 50
 11c:	f0 e0       	ldi	r31, 0x00	; 0
 11e:	02 c0       	rjmp	.+4      	; 0x124 <paint+0x56>
 120:	e0 e0       	ldi	r30, 0x00	; 0
 122:	f0 e0       	ldi	r31, 0x00	; 0
	     out = &PORTD; 
	}

	if (val == LOW) *out &= ~bit;
 124:	80 81       	ld	r24, Z
 126:	a0 95       	com	r26
 128:	8a 23       	and	r24, r26
 12a:	80 83       	st	Z, r24

		for (i=0;i<times;i++){
			for (row=0;row<7;row++){
				digitalWrite(rows[row],LOW);
				for(col=0;col<5;col++){
					setPixel(cols[col],matrix[col]&1<<row);
 12c:	94 01       	movw	r18, r8
 12e:	02 c0       	rjmp	.+4      	; 0x134 <paint+0x66>
 130:	22 0f       	add	r18, r18
 132:	33 1f       	adc	r19, r19
 134:	9a 95       	dec	r25
 136:	e2 f7       	brpl	.-8      	; 0x130 <paint+0x62>
 138:	d2 2e       	mov	r13, r18
 13a:	c0 e0       	ldi	r28, 0x00	; 0
 13c:	d0 e0       	ldi	r29, 0x00	; 0
 13e:	f5 01       	movw	r30, r10
 140:	ec 0f       	add	r30, r28
 142:	fd 1f       	adc	r31, r29
 144:	60 81       	ld	r22, Z
 146:	6d 21       	and	r22, r13
 148:	fe 01       	movw	r30, r28
 14a:	e0 5a       	subi	r30, 0xA0	; 160
 14c:	ff 4f       	sbci	r31, 0xFF	; 255
 14e:	80 81       	ld	r24, Z
 150:	8e df       	rcall	.-228    	; 0x6e <setPixel>
 152:	21 96       	adiw	r28, 0x01	; 1
	uint8_t col,row, i;

		for (i=0;i<times;i++){
			for (row=0;row<7;row++){
				digitalWrite(rows[row],LOW);
				for(col=0;col<5;col++){
 154:	c5 30       	cpi	r28, 0x05	; 5
 156:	d1 05       	cpc	r29, r1
 158:	91 f7       	brne	.-28     	; 0x13e <paint+0x70>
}

// digitalWrite from Arduino modified for use absolute pins
void digitalWrite(uint8_t pin, uint8_t val)
{
	uint8_t bit = digitalPinToBitMask[pin];
 15a:	d7 01       	movw	r26, r14
 15c:	ec 91       	ld	r30, X
 15e:	f0 e0       	ldi	r31, 0x00	; 0
 160:	df 01       	movw	r26, r30
 162:	a5 58       	subi	r26, 0x85	; 133
 164:	bf 4f       	sbci	r27, 0xFF	; 255
 166:	ac 91       	ld	r26, X
	uint8_t port = digitalPinToPort[pin];
 168:	e4 59       	subi	r30, 0x94	; 148
 16a:	ff 4f       	sbci	r31, 0xFF	; 255
 16c:	e0 81       	ld	r30, Z
	volatile uint8_t *out;

    if (port == PB) {
 16e:	e2 30       	cpi	r30, 0x02	; 2
 170:	19 f4       	brne	.+6      	; 0x178 <paint+0xaa>
 172:	e8 e3       	ldi	r30, 0x38	; 56
 174:	f0 e0       	ldi	r31, 0x00	; 0
 176:	07 c0       	rjmp	.+14     	; 0x186 <paint+0xb8>
		 out = &PORTB; 

⌨️ 快捷键说明

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