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

📄 spokepov.lss

📁 旋转16个LED灯控制程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:

spokepov.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000006aa  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000000a  00800060  000006aa  0000073e  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000003f  0080006a  0080006a  00000748  2**0
                  ALLOC
  3 .noinit       00000000  008000a9  008000a9  00000748  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000748  2**0
                  CONTENTS
  5 .stab         00000354  00000000  00000000  00000748  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00000a9c  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000028  00000000  00000000  00000b20  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 000001e5  00000000  00000000  00000b48  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   0000058b  00000000  00000000  00000d2d  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 000001e5  00000000  00000000  000012b8  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   0000051f  00000000  00000000  0000149d  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    000002b7  00000000  00000000  000019bc  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	9d c0       	rjmp	.+314    	; 0x13c <__init>
   2:	ce c1       	rjmp	.+924    	; 0x3a0 <__vector_1>
   4:	e7 c1       	rjmp	.+974    	; 0x3d4 <__vector_2>
   6:	b3 c0       	rjmp	.+358    	; 0x16e <__bad_interrupt>
   8:	0a c1       	rjmp	.+532    	; 0x21e <__vector_4>
   a:	b1 c0       	rjmp	.+354    	; 0x16e <__bad_interrupt>
   c:	d8 c0       	rjmp	.+432    	; 0x1be <__vector_6>
   e:	af c0       	rjmp	.+350    	; 0x16e <__bad_interrupt>
  10:	ae c0       	rjmp	.+348    	; 0x16e <__bad_interrupt>
  12:	ad c0       	rjmp	.+346    	; 0x16e <__bad_interrupt>
  14:	ac c0       	rjmp	.+344    	; 0x16e <__bad_interrupt>
  16:	ab c0       	rjmp	.+342    	; 0x16e <__bad_interrupt>
  18:	aa c0       	rjmp	.+340    	; 0x16e <__bad_interrupt>
  1a:	a9 c0       	rjmp	.+338    	; 0x16e <__bad_interrupt>
  1c:	a8 c0       	rjmp	.+336    	; 0x16e <__bad_interrupt>
  1e:	a7 c0       	rjmp	.+334    	; 0x16e <__bad_interrupt>
  20:	a6 c0       	rjmp	.+332    	; 0x16e <__bad_interrupt>
  22:	a5 c0       	rjmp	.+330    	; 0x16e <__bad_interrupt>
  24:	a4 c0       	rjmp	.+328    	; 0x16e <__bad_interrupt>

00000026 <__ctors_end>:
  26:	20 20       	and	r2, r0
  28:	20 20       	and	r2, r0
  2a:	20 20       	and	r2, r0
  2c:	20 20       	and	r2, r0
  2e:	20 20       	and	r2, r0
  30:	20 20       	and	r2, r0
  32:	20 20       	and	r2, r0
  34:	20 20       	and	r2, r0
  36:	20 20       	and	r2, r0
  38:	20 54       	subi	r18, 0x40	; 64
  3a:	2e 4f       	sbci	r18, 0xFE	; 254
  3c:	2e 20       	and	r2, r14
  3e:	32 30       	cpi	r19, 0x02	; 2
  40:	30 36       	cpi	r19, 0x60	; 96
  42:	20 20       	and	r2, r0
  44:	20 20       	and	r2, r0
  46:	20 20       	and	r2, r0
  48:	20 54       	subi	r18, 0x40	; 64
  4a:	68 61       	ori	r22, 0x18	; 24
  4c:	6e 6b       	ori	r22, 0xBE	; 190
  4e:	2d 79       	andi	r18, 0x9D	; 157
  50:	6f 75       	andi	r22, 0x5F	; 95
  52:	73 20       	and	r7, r3
  54:	20 20       	and	r2, r0
  56:	20 20       	and	r2, r0
  58:	20 50       	subi	r18, 0x00	; 0
  5a:	65 74       	andi	r22, 0x45	; 69
  5c:	65 72       	andi	r22, 0x25	; 37
  5e:	20 53       	subi	r18, 0x30	; 48
  60:	6d 69       	ori	r22, 0x9D	; 157
  62:	74 68       	ori	r23, 0x84	; 132
  64:	20 20       	and	r2, r0
  66:	20 20       	and	r2, r0
  68:	20 4e       	sbci	r18, 0xE0	; 224
  6a:	69 63       	ori	r22, 0x39	; 57
  6c:	6b 20       	and	r6, r11
  6e:	4d 61       	ori	r20, 0x1D	; 29
  70:	72 74       	andi	r23, 0x42	; 66
  72:	69 6e       	ori	r22, 0xE9	; 233
  74:	20 20       	and	r2, r0
  76:	20 20       	and	r2, r0
  78:	20 53       	subi	r18, 0x30	; 48
  7a:	6f 6c       	ori	r22, 0xCF	; 207
  7c:	69 64       	ori	r22, 0x49	; 73
  7e:	77 6f       	ori	r23, 0xF7	; 247
  80:	72 6b       	ori	r23, 0xB2	; 178
  82:	73 20       	and	r7, r3
  84:	20 20       	and	r2, r0
  86:	20 20       	and	r2, r0
  88:	20 20       	and	r2, r0
  8a:	20 4d       	sbci	r18, 0xD0	; 208
  8c:	65 74       	andi	r22, 0x45	; 69
  8e:	66 61       	ori	r22, 0x16	; 22
  90:	62 20       	and	r6, r2
  92:	20 20       	and	r2, r0
  94:	20 20       	and	r2, r0
  96:	20 20       	and	r2, r0
  98:	54 69       	ori	r21, 0x94	; 148
  9a:	74 61       	ori	r23, 0x14	; 20
  9c:	6e 69       	ori	r22, 0x9E	; 158
  9e:	75 6d       	ori	r23, 0xD5	; 213
  a0:	20 4a       	sbci	r18, 0xA0	; 160
  a2:	6f 65       	ori	r22, 0x5F	; 95
  a4:	20 20       	and	r2, r0
  a6:	20 20       	and	r2, r0
  a8:	54 65       	ori	r21, 0x54	; 84
  aa:	61 6d       	ori	r22, 0xD1	; 209
  ac:	20 57       	subi	r18, 0x70	; 112
  ae:	68 79       	andi	r22, 0x98	; 152
  b0:	61 63       	ori	r22, 0x31	; 49
  b2:	68 69       	ori	r22, 0x98	; 152
  b4:	20 20       	and	r2, r0
  b6:	20 20       	and	r2, r0
  b8:	20 42       	sbci	r18, 0x20	; 32
  ba:	61 74       	andi	r22, 0x41	; 65
  bc:	74 6c       	ori	r23, 0xC4	; 196
  be:	65 70       	andi	r22, 0x05	; 5
  c0:	61 63       	ori	r22, 0x31	; 49
  c2:	6b 73       	andi	r22, 0x3B	; 59
  c4:	20 20       	and	r2, r0
  c6:	20 20       	and	r2, r0
  c8:	20 20       	and	r2, r0
  ca:	44 75       	andi	r20, 0x54	; 84
  cc:	72 61       	ori	r23, 0x12	; 18
  ce:	6c 69       	ori	r22, 0x9C	; 156
  d0:	74 65       	ori	r23, 0x54	; 84
  d2:	20 20       	and	r2, r0
  d4:	20 20       	and	r2, r0
  d6:	20 20       	and	r2, r0
  d8:	20 20       	and	r2, r0
  da:	20 20       	and	r2, r0
  dc:	4c 69       	ori	r20, 0x9C	; 156
  de:	6d 6f       	ori	r22, 0xFD	; 253
  e0:	72 20       	and	r7, r2
  e2:	20 20       	and	r2, r0
  e4:	20 20       	and	r2, r0
  e6:	20 20       	and	r2, r0
  e8:	20 20       	and	r2, r0
  ea:	20 20       	and	r2, r0
  ec:	41 54       	subi	r20, 0x41	; 65
  ee:	4d 45       	sbci	r20, 0x5D	; 93
  f0:	4c 20       	and	r4, r12
  f2:	20 20       	and	r2, r0
  f4:	20 20       	and	r2, r0
  f6:	20 20       	and	r2, r0
  f8:	20 20       	and	r2, r0
  fa:	41 56       	subi	r20, 0x61	; 97
  fc:	52 46       	sbci	r21, 0x62	; 98
  fe:	72 65       	ori	r23, 0x52	; 82
 100:	61 6b       	ori	r22, 0xB1	; 177
 102:	73 20       	and	r7, r3
 104:	20 20       	and	r2, r0
 106:	20 20       	and	r2, r0
 108:	41 6e       	ori	r20, 0xE1	; 225
 10a:	64 20       	and	r6, r4
 10c:	4d 61       	ori	r20, 0x1D	; 29
 10e:	6e 79       	andi	r22, 0x9E	; 158
 110:	20 4d       	sbci	r18, 0xD0	; 208
 112:	6f 72       	andi	r22, 0x2F	; 47
 114:	65 20       	and	r6, r5
 116:	20 20       	and	r2, r0
 118:	28 6f       	ori	r18, 0xF8	; 248
 11a:	75 74       	andi	r23, 0x45	; 69
 11c:	20 6f       	ori	r18, 0xF0	; 240
 11e:	66 20       	and	r6, r6
 120:	52 41       	sbci	r21, 0x12	; 18
 122:	4d 29       	or	r20, r13
 124:	20 20       	and	r2, r0
	...

00000127 <lineOffsets>:
 127:	00 10 20 00 30 40 00 50 60 70 80 90 a0 b0 c0 d0     .. .0@.P`p......
 137:	00 e0 f0 00 10                                      .....

0000013c <__init>:
 13c:	11 24       	eor	r1, r1
 13e:	1f be       	out	0x3f, r1	; 63
 140:	cf ed       	ldi	r28, 0xDF	; 223
 142:	cd bf       	out	0x3d, r28	; 61

00000144 <__do_copy_data>:
 144:	10 e0       	ldi	r17, 0x00	; 0
 146:	a0 e6       	ldi	r26, 0x60	; 96
 148:	b0 e0       	ldi	r27, 0x00	; 0
 14a:	ea ea       	ldi	r30, 0xAA	; 170
 14c:	f6 e0       	ldi	r31, 0x06	; 6
 14e:	03 c0       	rjmp	.+6      	; 0x156 <.do_copy_data_start>

00000150 <.do_copy_data_loop>:
 150:	c8 95       	lpm
 152:	31 96       	adiw	r30, 0x01	; 1
 154:	0d 92       	st	X+, r0

00000156 <.do_copy_data_start>:
 156:	aa 36       	cpi	r26, 0x6A	; 106
 158:	b1 07       	cpc	r27, r17
 15a:	d1 f7       	brne	.-12     	; 0x150 <.do_copy_data_loop>

0000015c <__do_clear_bss>:
 15c:	10 e0       	ldi	r17, 0x00	; 0
 15e:	aa e6       	ldi	r26, 0x6A	; 106
 160:	b0 e0       	ldi	r27, 0x00	; 0
 162:	01 c0       	rjmp	.+2      	; 0x166 <.do_clear_bss_start>

00000164 <.do_clear_bss_loop>:
 164:	1d 92       	st	X+, r1

00000166 <.do_clear_bss_start>:
 166:	a9 3a       	cpi	r26, 0xA9	; 169
 168:	b1 07       	cpc	r27, r17
 16a:	e1 f7       	brne	.-8      	; 0x164 <.do_clear_bss_loop>
 16c:	33 c2       	rjmp	.+1126   	; 0x5d4 <main>

0000016e <__bad_interrupt>:
 16e:	48 cf       	rjmp	.-368    	; 0x0 <__vectors>

00000170 <clock_scroll>:
// Sends 4 bytes + sCount extra bits over the serial link
// to implement smooth scrolling.  Can be used with a 0
// parameter to just send out the regular 4 bytes.

void clock_scroll(uint8_t sCount) {
 170:	cf 93       	push	r28
 172:	c8 2f       	mov	r28, r24

  // First, send the basic 4 bytes, they go no matter what
  
  spi_transfer(fleds[0]);
 174:	80 91 83 00 	lds	r24, 0x0083
 178:	5c d2       	rcall	.+1208   	; 0x632 <spi_transfer>
  spi_transfer(fleds[1]);
 17a:	80 91 84 00 	lds	r24, 0x0084
 17e:	59 d2       	rcall	.+1202   	; 0x632 <spi_transfer>
  spi_transfer(fleds[2]);
 180:	80 91 85 00 	lds	r24, 0x0085
 184:	56 d2       	rcall	.+1196   	; 0x632 <spi_transfer>
  spi_transfer(fleds[3]);
 186:	80 91 86 00 	lds	r24, 0x0086
 18a:	53 d2       	rcall	.+1190   	; 0x632 <spi_transfer>
 
  // If there is anything to do..
  
  if (sCount != 0) {
 18c:	cc 23       	and	r28, r28
 18e:	79 f0       	breq	.+30     	; 0x1ae <clock_scroll+0x3e>
  
    // If we have < 8 bits to transfer
    
    if (sCount < 8) {
 190:	c8 30       	cpi	r28, 0x08	; 8
 192:	20 f4       	brcc	.+8      	; 0x19c <clock_scroll+0x2c>
    
       // Then that is all that we need to do
       
       spi_transfer_n(fleds[4],sCount);
 194:	6c 2f       	mov	r22, r28
 196:	80 91 87 00 	lds	r24, 0x0087
 19a:	08 c0       	rjmp	.+16     	; 0x1ac <clock_scroll+0x3c>
       
    } else {
    
      // First latch out the full first 8 bits
       
  	  spi_transfer(fleds[4]);
 19c:	80 91 87 00 	lds	r24, 0x0087
 1a0:	48 d2       	rcall	.+1168   	; 0x632 <spi_transfer>
  	   
  	  // How many bits left to do?
  	   
  	  sCount = sCount - 8;
 1a2:	c8 50       	subi	r28, 0x08	; 8
  	   
  	  if (sCount != 0) {
 1a4:	21 f0       	breq	.+8      	; 0x1ae <clock_scroll+0x3e>
  	   
        spi_transfer_n(fleds[5],sCount);
 1a6:	6c 2f       	mov	r22, r28
 1a8:	80 91 88 00 	lds	r24, 0x0088
 1ac:	34 d2       	rcall	.+1128   	; 0x616 <spi_transfer_n>
         
  	  }
  	   
  	}
  	
  }
   
  // finally, latch the bits into the LEDS
  
  LATCH_SELECT_PORT |= _BV(FRONT);
 1ae:	94 9a       	sbi	0x12, 4	; 18
	...
  NOP; NOP; NOP; NOP;
  LATCH_SELECT_PORT &= ~_BV(FRONT);
 1b8:	94 98       	cbi	0x12, 4	; 18
 1ba:	cf 91       	pop	r28
 1bc:	08 95       	ret

000001be <__vector_6>:

}

// TIMER0 interrupt handler.  This runs about every 8ms
// AFAICT.  It increments the hall_debounce and sensor_timer
// values until they pin.

// QUESTION: what's with the setting and clearing of PORTB0?
// According to the wiring diagram, it isn't connected to
// anything.  Is this vestigial code from when you were using
// Pin Change Interrupts?  Or is it debugger code so you
// can monitor the pins and tell when something happens.

SIGNAL (SIG_TIMER0_OVF) {
 1be:	1f 92       	push	r1
 1c0:	0f 92       	push	r0
 1c2:	0f b6       	in	r0, 0x3f	; 63
 1c4:	0f 92       	push	r0
 1c6:	11 24       	eor	r1, r1
 1c8:	8f 93       	push	r24
 1ca:	9f 93       	push	r25

  // *** PORTB |= 0x1;

  // Let hall_debounce just wrap around.  At worst it'll just
  // mess things up for one of the initial speedup rotations
  // of the blade...
  
  // if (hall_debounce != 0xFF)
  
  hall_debounce++;
 1cc:	80 91 80 00 	lds	r24, 0x0080
 1d0:	8f 5f       	subi	r24, 0xFF	; 255
 1d2:	80 93 80 00 	sts	0x0080, r24
  
  if (sensor_timer.bytes.high_byte != 0xFF)
 1d6:	80 91 82 00 	lds	r24, 0x0082
 1da:	8f 3f       	cpi	r24, 0xFF	; 255
 1dc:	49 f0       	breq	.+18     	; 0x1f0 <__vector_6+0x32>
    sensor_timer.word++;
 1de:	80 91 81 00 	lds	r24, 0x0081
 1e2:	90 91 82 00 	lds	r25, 0x0082
 1e6:	01 96       	adiw	r24, 0x01	; 1
 1e8:	90 93 82 00 	sts	0x0082, r25
 1ec:	80 93 81 00 	sts	0x0081, r24

  #if NUM_LINES > 0

    // Increment the line timer - we only need to do this
    // if we are scrolling
  
    line_timer++;				// increment the low byte
 1f0:	80 91 68 00 	lds	r24, 0x0068
 1f4:	8f 5f       	subi	r24, 0xFF	; 255
 1f6:	80 93 68 00 	sts	0x0068, r24
 1fa:	9f 91       	pop	r25
 1fc:	8f 91       	pop	r24
 1fe:	0f 90       	pop	r0
 200:	0f be       	out	0x3f, r0	; 63
 202:	0f 90       	pop	r0
 204:	1f 90       	pop	r1
 206:	18 95       	reti

00000208 <set_all>:
  
  #endif

  #ifdef DYNAMIC_TIME
  
    // Increment the dynamic time fractional seconds byte
    
    dynamicTimeCounter.word += DYNAMIC_TIME_CALIBRATION;
    
    if (dynamicTimeCounter.bytes.high_byte > 0x7F) {
    
      // wrap the counter
       
      dynamicTimeCounter.bytes.high_byte &= 0x7F;
       
      // Add 1 second to the time HH:MM:SS
      //                          76-43-10
      // Bytes in reverse order
      
      // Increment seconds
       
      dynamicTime[0]++;
       
      // Check for units seconds overflow - has the digit become 10?
       
      if ( dynamicTime[0] == ':' ) {
       
        // If so, reset it and increment 10's digit
          
        dynamicTime[0] = '0';
        dynamicTime[1]++;

⌨️ 快捷键说明

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