📄 level2.lst
字号:
420 01d4 89BF out 89-0x20,r24
155:level2.c **** TCCR1B = 1; //internal clock T1, RUN!
421 .stabn 68,0,155,.LM49-SendForward
422 .LM49:
423 01d6 81E0 ldi r24,lo8(1)
424 01d8 8EBD out 78-0x20,r24
156:level2.c ****
157:level2.c **** // waiting for clearing TOIE1 => command sending
158:level2.c **** while ( bit_is_set( TIMSK , TOIE1 ) != 0 )
425 .stabn 68,0,158,.LM50-SendForward
426 .LM50:
427 .L31:
428 01da 09B6 in __tmp_reg__,89-0x20
429 01dc 02FC sbrc __tmp_reg__,2
430 01de FDCF rjmp .L31
159:level2.c **** {
160:level2.c **** // SetLEDOff();
161:level2.c **** // SetLEDOn();
162:level2.c **** // SetLEDOff();
163:level2.c **** }
164:level2.c **** }
431 .stabn 68,0,164,.LM51-SendForward
432 .LM51:
433 .LBE2:
434 /* epilogue: frame size=0 */
435 01e0 0895 ret
436 /* epilogue end (size=1) */
437 /* function SendForward size 55 (54) */
438 .size SendForward, .-SendForward
439 .Lscope1:
440 .stabs "",36,0,0,.Lscope1-SendForward
441 .stabs "Prepare_Data:F(4,2)",36,0,173,Prepare_Data
442 .stabs "data:P(4,2)",64,0,172,25
443 .global Prepare_Data
444 .type Prepare_Data, @function
445 Prepare_Data:
165:level2.c ****
166:level2.c ****
167:level2.c ****
168:level2.c **** // ==================================================================
169:level2.c **** // prepares data bit pairs
170:level2.c **** // see EM4x35 uplink spec
171:level2.c ****
172:level2.c **** uint8_t Prepare_Data( uint8_t data )
173:level2.c **** {
446 .stabn 68,0,173,.LM52-Prepare_Data
447 .LM52:
448 /* prologue: frame size=0 */
449 /* prologue end (size=0) */
450 01e2 982F mov r25,r24
174:level2.c **** register uint8_t i;
175:level2.c ****
176:level2.c **** for ( i = 0 ; i < 4 ; i++ )
451 .stabn 68,0,176,.LM53-Prepare_Data
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s page 12
452 .LM53:
453 .LBB3:
454 01e4 20E0 ldi r18,lo8(0)
455 .L41:
177:level2.c **** {
178:level2.c **** *forward_ptr++ = data & 3;
456 .stabn 68,0,178,.LM54-Prepare_Data
457 .LM54:
458 01e6 E091 0000 lds r30,forward_ptr
459 01ea F091 0000 lds r31,(forward_ptr)+1
460 01ee 892F mov r24,r25
461 01f0 8370 andi r24,lo8(3)
462 01f2 8193 st Z+,r24
463 01f4 F093 0000 sts (forward_ptr)+1,r31
464 01f8 E093 0000 sts forward_ptr,r30
179:level2.c **** data >>= 2;
465 .stabn 68,0,179,.LM55-Prepare_Data
466 .LM55:
467 01fc 9695 lsr r25
468 01fe 9695 lsr r25
469 .stabn 68,0,176,.LM56-Prepare_Data
470 .LM56:
471 0200 2F5F subi r18,lo8(-(1))
472 0202 2430 cpi r18,lo8(4)
473 0204 80F3 brlo .L41
180:level2.c **** }
181:level2.c **** return 4; //return number of emited bits
182:level2.c **** }
474 .stabn 68,0,182,.LM57-Prepare_Data
475 .LM57:
476 .LBE3:
477 0206 84E0 ldi r24,lo8(4)
478 0208 90E0 ldi r25,hi8(4)
479 /* epilogue: frame size=0 */
480 020a 0895 ret
481 /* epilogue end (size=1) */
482 /* function Prepare_Data size 21 (20) */
483 .size Prepare_Data, .-Prepare_Data
484 .stabs "i:r(4,2)",64,0,174,18
485 .stabn 192,0,0,.LBB3-Prepare_Data
486 .stabn 224,0,0,.LBE3-Prepare_Data
487 .Lscope2:
488 .stabs "",36,0,0,.Lscope2-Prepare_Data
489 .stabs "ClearCaptureBuffers:F(0,20)",36,0,188,ClearCaptureBuffers
490 .global ClearCaptureBuffers
491 .type ClearCaptureBuffers, @function
492 ClearCaptureBuffers:
183:level2.c ****
184:level2.c ****
185:level2.c **** // ==================================================================
186:level2.c ****
187:level2.c **** void ClearCaptureBuffers( void )
188:level2.c **** {
493 .stabn 68,0,188,.LM58-ClearCaptureBuffers
494 .LM58:
495 /* prologue: frame size=0 */
496 /* prologue end (size=0) */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s page 13
189:level2.c **** uint8_t i;
190:level2.c **** for ( i = 0 ; i < CAPTURE_SIZE ; i++ )
497 .stabn 68,0,190,.LM59-ClearCaptureBuffers
498 .LM59:
499 .LBB4:
500 020c 90E0 ldi r25,lo8(0)
501 .L49:
191:level2.c **** {
192:level2.c **** capture.capture_data[ i ] = 0;
502 .stabn 68,0,192,.LM60-ClearCaptureBuffers
503 .LM60:
504 020e E92F mov r30,r25
505 0210 FF27 clr r31
506 0212 E050 subi r30,lo8(-(capture))
507 0214 F040 sbci r31,hi8(-(capture))
508 0216 1082 st Z,__zero_reg__
193:level2.c **** capture.capture_valid[ i ] = 0xFF;
509 .stabn 68,0,193,.LM61-ClearCaptureBuffers
510 .LM61:
511 0218 E058 subi r30,lo8(-(128))
512 021a FF4F sbci r31,hi8(-(128))
513 021c 8FEF ldi r24,lo8(-1)
514 021e 8083 st Z,r24
515 .stabn 68,0,190,.LM62-ClearCaptureBuffers
516 .LM62:
517 0220 9F5F subi r25,lo8(-(1))
518 0222 97FF sbrs r25,7
519 0224 F4CF rjmp .L49
194:level2.c **** }
195:level2.c **** bufferClean = 1;
520 .stabn 68,0,195,.LM63-ClearCaptureBuffers
521 .LM63:
522 0226 81E0 ldi r24,lo8(1)
523 0228 8093 0000 sts bufferClean,r24
196:level2.c **** }
524 .stabn 68,0,196,.LM64-ClearCaptureBuffers
525 .LM64:
526 .LBE4:
527 /* epilogue: frame size=0 */
528 022c 0895 ret
529 /* epilogue end (size=1) */
530 /* function ClearCaptureBuffers size 17 (16) */
531 .size ClearCaptureBuffers, .-ClearCaptureBuffers
532 .stabs "i:r(4,2)",64,0,189,25
533 .stabn 192,0,0,.LBB4-ClearCaptureBuffers
534 .stabn 224,0,0,.LBE4-ClearCaptureBuffers
535 .Lscope3:
536 .stabs "",36,0,0,.Lscope3-ClearCaptureBuffers
537 .stabs "WaitSPI:F(0,20)",36,0,201,WaitSPI
538 .global WaitSPI
539 .type WaitSPI, @function
540 WaitSPI:
197:level2.c ****
198:level2.c ****
199:level2.c **** // ==================================================================
200:level2.c ****
201:level2.c **** void WaitSPI(void) {
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s page 14
541 .stabn 68,0,201,.LM65-WaitSPI
542 .LM65:
543 /* prologue: frame size=0 */
544 /* prologue end (size=0) */
202:level2.c **** int register x = SPI_DELAY;
545 .stabn 68,0,202,.LM66-WaitSPI
546 .LM66:
547 .LBB5:
548 022e 25E0 ldi r18,lo8(5)
549 0230 30E0 ldi r19,hi8(5)
203:level2.c **** while(x-->0)
550 .stabn 68,0,203,.LM67-WaitSPI
551 .LM67:
552 .L53:
553 0232 C901 movw r24,r18
554 0234 2150 subi r18,lo8(-(-1))
555 0236 3040 sbci r19,hi8(-(-1))
556 0238 1816 cp __zero_reg__,r24
557 023a 1906 cpc __zero_reg__,r25
558 023c D4F3 brlt .L53
204:level2.c **** {}
205:level2.c **** }
559 .stabn 68,0,205,.LM68-WaitSPI
560 .LM68:
561 .LBE5:
562 /* epilogue: frame size=0 */
563 023e 0895 ret
564 /* epilogue end (size=1) */
565 /* function WaitSPI size 9 (8) */
566 .size WaitSPI, .-WaitSPI
567 .stabs "x:r(0,1)",64,0,202,18
568 .stabn 192,0,0,.LBB5-WaitSPI
569 .stabn 224,0,0,.LBE5-WaitSPI
570 .Lscope4:
571 .stabs "",36,0,0,.Lscope4-WaitSPI
572 .stabs "WriteSPI:F(0,20)",36,0,209,WriteSPI
573 .stabs "low:P(4,4)",64,0,209,24
574 .stabs "hi:P(4,4)",64,0,209,14
575 .global WriteSPI
576 .type WriteSPI, @function
577 WriteSPI:
206:level2.c ****
207:level2.c **** // ==================================================================
208:level2.c ****
209:level2.c **** void WriteSPI(uint16_t low, uint16_t hi) {
578 .stabn 68,0,209,.LM69-WriteSPI
579 .LM69:
580 /* prologue: frame size=0 */
581 0240 EF92 push r14
582 0242 FF92 push r15
583 0244 1F93 push r17
584 0246 CF93 push r28
585 0248 DF93 push r29
586 /* prologue end (size=5) */
587 024a 7B01 movw r14,r22
210:level2.c ****
211:level2.c **** int16_t data = low;
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s page 15
588 .stabn 68,0,211,.LM70-WriteSPI
589 .LM70:
590 .LBB6:
591 024c EC01 movw r28,r24
212:level2.c **** uint8_t bitcnt = 32;
213:level2.c ****
214:level2.c **** //SPI start event
215:level2.c **** cbi(PORTC, MOD_PIN);
592 .stabn 68,0,215,.LM71-WriteSPI
593 .LM71:
594 024e A998 cbi 53-0x20,1
216:level2.c **** WaitSPI();
595 .stabn 68,0,216,.LM72-WriteSPI
596 .LM72:
597 0250 EEDF rcall WaitSPI
217:level2.c **** sbi(PORTC, DCLK_PIN);
598 .stabn 68,0,217,.LM73-WriteSPI
599 .LM73:
600 0252 A89A sbi 53-0x20,0
218:level2.c **** WaitSPI();
601 .stabn 68,0,218,.LM74-WriteSPI
602 .LM74:
603 0254 ECDF rcall WaitSPI
219:level2.c **** sbi(PORTC, MOD_PIN);
604 .stabn 68,0,219,.LM75-WriteSPI
605 .LM75:
606 0256 A99A sbi 53-0x20,1
220:level2.c **** WaitSPI();
607 .stabn 68,0,220,.LM76-WriteSPI
608 .LM76:
609 0258 EADF rcall WaitSPI
221:level2.c ****
222:level2.c **** while (bitcnt-- > 0) {
610 .stabn 68,0,222,.LM77-WriteSPI
611 .LM77:
612 025a 1FE1 ldi r17,lo8(31)
613 .L63:
223:level2.c ****
224:level2.c **** cbi(PORTC, DCLK_PIN);
614 .stabn 68,0,224,.LM78-WriteSPI
615 .LM78:
616 025c A898 cbi 53-0x20,0
225:level2.c **** WaitSPI();
617 .stabn 68,0,225,.LM79-WriteSPI
618 .LM79:
619 025e E7DF rcall WaitSPI
226:level2.c ****
227:level2.c **** if(data & 1) sbi(PORTC, MOD_PIN); else cbi(PORTC, MOD_PIN);
620 .stabn 68,0,227,.LM80-WriteSPI
621 .LM80:
622 0260 C0FF sbrs r28,0
623 0262 02C0 rjmp .L60
624 0264 A99A sbi 53-0x20,1
625 0266 01C0 rjmp .L61
626 .L60:
627 0268 A998 cbi 53-0x20,1
628 .L61:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s page 16
228:level2.c **** WaitSPI();
629 .stabn 68,0,228,.LM81-WriteSPI
630 .LM81:
631 026a E1DF rcall WaitSPI
229:level2.c ****
230:level2.c **** data >>= 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -