?? main.lss
字號:
52e: 99 f4 brne .+38 ; 0x556 <ir_get_bit+0xe6>
{
irCode=irDataBuff[2];
530: 80 91 6f 00 lds r24, 0x006F
534: 80 93 78 00 sts 0x0078, r24
irKeyEvent = _IR_KEY_DOWN;
538: 81 e0 ldi r24, 0x01 ; 1
53a: 80 93 62 00 sts 0x0062, r24
irKeyRptTimes=0;
53e: 10 92 7f 00 sts 0x007F, r1
irKeyRpt_f=0;
542: 10 92 7b 00 sts 0x007B, r1
irState++;
546: 80 91 6b 00 lds r24, 0x006B
54a: 8f 5f subi r24, 0xFF ; 255
54c: 80 93 6b 00 sts 0x006B, r24
SendIRCodeStop(); //接收到新的遙控碼停止發(fā)送上一個遙控碼
550: 0e 94 cf 00 call 0x19e <SendIRCodeStop>
554: 02 c0 rjmp .+4 ; 0x55a <ir_get_bit+0xea>
}
else
{
irState=0;
556: 10 92 6b 00 sts 0x006B, r1
55a: 21 96 adiw r28, 0x01 ; 1
55c: 0f b6 in r0, 0x3f ; 63
55e: f8 94 cli
560: de bf out 0x3e, r29 ; 62
562: 0f be out 0x3f, r0 ; 63
564: cd bf out 0x3d, r28 ; 61
566: df 91 pop r29
568: cf 91 pop r28
56a: 08 95 ret
0000056c <__vector_6>:
}
}
}
/*
ICP中斷,電平寬度捕捉,遙控解碼
*/
//irState
//0: 接收引導碼 13.5ms
//1: 接收客戶碼和遙控碼 45ms-63ms
//2: 接收截止碼 32ms-50ms
//3: 接收重復(fù)發(fā)送引導碼 11.25ms
//4: 接收重復(fù)發(fā)送截止碼 96.75ms
SIGNAL(SIG_INPUT_CAPTURE1)//ICP1
{
56c: 1f 92 push r1
56e: 0f 92 push r0
570: 0f b6 in r0, 0x3f ; 63
572: 0f 92 push r0
574: 11 24 eor r1, r1
576: 2f 93 push r18
578: 3f 93 push r19
57a: 4f 93 push r20
57c: 5f 93 push r21
57e: 6f 93 push r22
580: 7f 93 push r23
582: 8f 93 push r24
584: 9f 93 push r25
586: af 93 push r26
588: bf 93 push r27
58a: ef 93 push r30
58c: ff 93 push r31
58e: cf 93 push r28
590: df 93 push r29
592: cd b7 in r28, 0x3d ; 61
594: de b7 in r29, 0x3e ; 62
596: 22 97 sbiw r28, 0x02 ; 2
598: de bf out 0x3e, r29 ; 62
59a: cd bf out 0x3d, r28 ; 61
// test();
if(!key_in_press_f)//注意:在鍵盤有按鍵未釋放,遙控不允許工作
59c: 80 91 6c 00 lds r24, 0x006C
5a0: 88 23 and r24, r24
5a2: 09 f0 breq .+2 ; 0x5a6 <__vector_6+0x3a>
5a4: 05 c1 rjmp .+522 ; 0x7b0 <__vector_6+0x244>
{
icrCurrent = ICR1; //讀取本次寬度
5a6: 80 91 46 00 lds r24, 0x0046
5aa: 90 91 47 00 lds r25, 0x0047
5ae: 90 93 64 00 sts 0x0064, r25
5b2: 80 93 63 00 sts 0x0063, r24
icrSpace = icrCurrent - icrPrevious; //獲得與上次下降沿的距離
5b6: 20 91 63 00 lds r18, 0x0063
5ba: 30 91 64 00 lds r19, 0x0064
5be: 80 91 65 00 lds r24, 0x0065
5c2: 90 91 66 00 lds r25, 0x0066
5c6: 28 1b sub r18, r24
5c8: 39 0b sbc r19, r25
5ca: c9 01 movw r24, r18
5cc: 90 93 68 00 sts 0x0068, r25
5d0: 80 93 67 00 sts 0x0067, r24
icrPrevious = icrCurrent; //保存當前icr值,以備下次比較用
5d4: 80 91 63 00 lds r24, 0x0063
5d8: 90 91 64 00 lds r25, 0x0064
5dc: 90 93 66 00 sts 0x0066, r25
5e0: 80 93 65 00 sts 0x0065, r24
switch(irState)
5e4: 80 91 6b 00 lds r24, 0x006B
5e8: 28 2f mov r18, r24
5ea: 33 27 eor r19, r19
5ec: 3a 83 std Y+2, r19 ; 0x02
5ee: 29 83 std Y+1, r18 ; 0x01
5f0: 89 81 ldd r24, Y+1 ; 0x01
5f2: 9a 81 ldd r25, Y+2 ; 0x02
5f4: 82 30 cpi r24, 0x02 ; 2
5f6: 91 05 cpc r25, r1
5f8: 09 f4 brne .+2 ; 0x5fc <__vector_6+0x90>
5fa: 6c c0 rjmp .+216 ; 0x6d4 <__vector_6+0x168>
5fc: 29 81 ldd r18, Y+1 ; 0x01
5fe: 3a 81 ldd r19, Y+2 ; 0x02
600: 23 30 cpi r18, 0x03 ; 3
602: 31 05 cpc r19, r1
604: 54 f4 brge .+20 ; 0x61a <__vector_6+0xae>
606: 89 81 ldd r24, Y+1 ; 0x01
608: 9a 81 ldd r25, Y+2 ; 0x02
60a: 00 97 sbiw r24, 0x00 ; 0
60c: 99 f0 breq .+38 ; 0x634 <__vector_6+0xc8>
60e: 29 81 ldd r18, Y+1 ; 0x01
610: 3a 81 ldd r19, Y+2 ; 0x02
612: 21 30 cpi r18, 0x01 ; 1
614: 31 05 cpc r19, r1
616: 41 f1 breq .+80 ; 0x668 <__vector_6+0xfc>
618: c8 c0 rjmp .+400 ; 0x7aa <__vector_6+0x23e>
61a: 89 81 ldd r24, Y+1 ; 0x01
61c: 9a 81 ldd r25, Y+2 ; 0x02
61e: 83 30 cpi r24, 0x03 ; 3
620: 91 05 cpc r25, r1
622: 09 f4 brne .+2 ; 0x626 <__vector_6+0xba>
624: 72 c0 rjmp .+228 ; 0x70a <__vector_6+0x19e>
626: 29 81 ldd r18, Y+1 ; 0x01
628: 3a 81 ldd r19, Y+2 ; 0x02
62a: 24 30 cpi r18, 0x04 ; 4
62c: 31 05 cpc r19, r1
62e: 09 f4 brne .+2 ; 0x632 <__vector_6+0xc6>
630: 92 c0 rjmp .+292 ; 0x756 <__vector_6+0x1ea>
632: bb c0 rjmp .+374 ; 0x7aa <__vector_6+0x23e>
{
case 0:
if (icrSpace>(ICR_SPACE_1ST-ICR_SHIFT)&&icrSpace<(ICR_SPACE_1ST+ICR_SHIFT) )
634: 80 91 67 00 lds r24, 0x0067
638: 90 91 68 00 lds r25, 0x0068
63c: 8f 38 cpi r24, 0x8F ; 143
63e: 91 05 cpc r25, r1
640: 08 f4 brcc .+2 ; 0x644 <__vector_6+0xd8>
642: ba c0 rjmp .+372 ; 0x7b8 <__vector_6+0x24c>
644: 80 91 67 00 lds r24, 0x0067
648: 90 91 68 00 lds r25, 0x0068
64c: 84 39 cpi r24, 0x94 ; 148
64e: 91 05 cpc r25, r1
650: 08 f0 brcs .+2 ; 0x654 <__vector_6+0xe8>
652: b2 c0 rjmp .+356 ; 0x7b8 <__vector_6+0x24c>
{
irBitIndex=0;
654: 10 92 6a 00 sts 0x006A, r1
irByteIndex=0;
658: 10 92 69 00 sts 0x0069, r1
irState++;
65c: 80 91 6b 00 lds r24, 0x006B
660: 8f 5f subi r24, 0xFF ; 255
662: 80 93 6b 00 sts 0x006B, r24
}
break;
666: a8 c0 rjmp .+336 ; 0x7b8 <__vector_6+0x24c>
case 1:
if(icrSpace<(ICR_SPACE_BIT0+ICR_SHIFT) && icrSpace>(ICR_SPACE_BIT0-ICR_SHIFT))//收到0
668: 80 91 67 00 lds r24, 0x0067
66c: 90 91 68 00 lds r25, 0x0068
670: 8f 30 cpi r24, 0x0F ; 15
672: 91 05 cpc r25, r1
674: 90 f4 brcc .+36 ; 0x69a <__vector_6+0x12e>
676: 80 91 67 00 lds r24, 0x0067
67a: 90 91 68 00 lds r25, 0x0068
67e: 8a 30 cpi r24, 0x0A ; 10
680: 91 05 cpc r25, r1
682: 58 f0 brcs .+22 ; 0x69a <__vector_6+0x12e>
{
ir_get_bit(0);DVDPowOff();
684: 80 e0 ldi r24, 0x00 ; 0
686: 0e 94 38 02 call 0x470 <ir_get_bit>
68a: 80 91 3b 00 lds r24, 0x003B
68e: 8f 7d andi r24, 0xDF ; 223
690: 80 93 3b 00 sts 0x003B, r24
694: 10 92 80 00 sts 0x0080, r1
698: 8f c0 rjmp .+286 ; 0x7b8 <__vector_6+0x24c>
}
else if(icrSpace<(ICR_SPACE_BIT1+ICR_SHIFT) && icrSpace>(ICR_SPACE_BIT1-ICR_SHIFT))//收到1
69a: 80 91 67 00 lds r24, 0x0067
69e: 90 91 68 00 lds r25, 0x0068
6a2: 8b 31 cpi r24, 0x1B ; 27
6a4: 91 05 cpc r25, r1
6a6: 98 f4 brcc .+38 ; 0x6ce <__vector_6+0x162>
6a8: 80 91 67 00 lds r24, 0x0067
6ac: 90 91 68 00 lds r25, 0x0068
6b0: 86 31 cpi r24, 0x16 ; 22
6b2: 91 05 cpc r25, r1
6b4: 60 f0 brcs .+24 ; 0x6ce <__vector_6+0x162>
{
ir_get_bit(1);DVDPowOn();
6b6: 81 e0 ldi r24, 0x01 ; 1
6b8: 0e 94 38 02 call 0x470 <ir_get_bit>
6bc: 80 91 3b 00 lds r24, 0x003B
6c0: 80 62 ori r24, 0x20 ; 32
6c2: 80 93 3b 00 sts 0x003B, r24
6c6: 80 e2 ldi r24, 0x20 ; 32
6c8: 80 93 80 00 sts 0x0080, r24
6cc: 75 c0 rjmp .+234 ; 0x7b8 <__vector_6+0x24c>
}
else
{
irState=0; //誤碼時重新置位
6ce: 10 92 6b 00 sts 0x006B, r1
}
break;
6d2: 72 c0 rjmp .+228 ; 0x7b8 <__vector_6+0x24c>
case 2:
test();
6d4: 0e 94 88 04 call 0x910 <test>
if(icrSpace>(ICR_RUMP_MIN-ICR_SHIFT) && icrSpace<(ICR_RUMP_MAX+ICR_SHIFT))
6d8: 80 91 67 00 lds r24, 0x0067
6dc: 90 91 68 00 lds r25, 0x0068
6e0: 31 e0 ldi r19, 0x01 ; 1
6e2: 81 35 cpi r24, 0x51 ; 81
6e4: 93 07 cpc r25, r19
6e6: 70 f0 brcs .+28 ; 0x704 <__vector_6+0x198>
6e8: 80 91 67 00 lds r24, 0x0067
6ec: 90 91 68 00 lds r25, 0x0068
6f0: 22 e0 ldi r18, 0x02 ; 2
6f2: 89 31 cpi r24, 0x19 ; 25
6f4: 92 07 cpc r25, r18
6f6: 30 f4 brcc .+12 ; 0x704 <__vector_6+0x198>
irState++;
6f8: 80 91 6b 00 lds r24, 0x006B
6fc: 8f 5f subi r24, 0xFF ; 255
6fe: 80 93 6b 00 sts 0x006B, r24
702: 5a c0 rjmp .+180 ; 0x7b8 <__vector_6+0x24c>
else
irState=0;
704: 10 92 6b 00 sts 0x006B, r1
break;
708: 57 c0 rjmp .+174 ; 0x7b8 <__vector_6+0x24c>
case 3:
if (icrSpace<(ICR_SPACE_2ND+ICR_SHIFT) && icrSpace>(ICR_SPACE_2ND-ICR_SHIFT))
70a: 80 91 67 00 lds r24, 0x0067
70e: 90 91 68 00 lds r25, 0x0068
712: 8c 37 cpi r24, 0x7C ; 124
714: 91 05 cpc r25, r1
716: c8 f4 brcc .+50 ; 0x74a <__vector_6+0x1de>
718: 80 91 67 00 lds r24, 0x0067
71c: 90 91 68 00 lds r25, 0x0068
720: 87 37 cpi r24, 0x77 ; 119
722: 91 05 cpc r25, r1
724: 90 f0 brcs .+36 ; 0x74a <__vector_6+0x1de>
{
irState++;
726: 80 91 6b 00 lds r24, 0x006B
72a: 8f 5f subi r24, 0xFF ; 255
72c: 80 93 6b 00 sts 0x006B, r24
icrPrevious = TCNT1_VAL;
730: 86 ee ldi r24, 0xE6 ; 230
732: 9a ef ldi r25, 0xFA ; 250
734: 90 93 66 00 sts 0x0066, r25
738: 80 93 65 00 sts 0x0065, r24
TCNT1 = TCNT1_VAL;
73c: 86 ee ldi r24, 0xE6 ; 230
73e: 9a ef ldi r25, 0xFA ; 250
740: 90 93 4d 00 sts 0x004D, r25
744: 80 93 4c 00 sts 0x004C, r24
748: 37 c0 rjmp .+110 ; 0x7b8 <__vector_6+0x24c>
}
else
{
irState=0; //誤碼時重新置位
74a: 10 92 6b 00 sts 0x006B, r1
irKeyEvent = _IR_KEY_UP;
74e: 84 e0 ldi r24, 0x04 ; 4
750: 80 93 62 00 sts 0x0062, r24
}
break;
754: 31 c0 rjmp .+98 ; 0x7b8 <__vector_6+0x24c>
case 4:
if (icrSpace<(ICR_SPACE_1ST*8-ICR_SPACE_2ND+ICR_SHIFT*8) && icrSpace>(ICR_SPACE_1ST*8-ICR_SPACE_2ND-ICR_SHIFT*8))
756: 80 91 67 00 lds r24, 0x0067
75a: 90 91 68 00 lds r25, 0x0068
75e: 34 e0 ldi r19, 0x04 ; 4
760: 87 32 cpi r24, 0x27 ; 39
762: 93 07 cpc r25, r19
764: e0 f4 brcc .+56 ; 0x79e <__vector_6+0x232>
766: 80 91 67 00 lds r24, 0x0067
76a: 90 91 68 00 lds r25, 0x0068
76e: 23 e0 ldi r18, 0x03 ; 3
770: 88 3f cpi r24, 0xF8 ; 248
772: 92 07 cpc r25, r18
774: a0 f0 brcs .+40 ; 0x79e <__vector_6+0x232>
{
irState--;
776: 80 91 6b 00 lds r24, 0x006B
77a: 81 50 subi r24, 0x01 ; 1
77c: 80 93 6b 00 sts 0x006B, r24
irKeyRptTimes++;
780: 80 91 7f 00 lds r24, 0x007F
784: 8f 5f subi r24, 0xFF ; 255
786: 80 93 7f 00 sts 0x007F, r24
if(irKeyRptTimes==10)
78a: 80 91 7f 00 lds r24, 0x007F
78e: 8a 30 cpi r24, 0x0A ; 10
790: 99 f4 brne .+38 ; 0x7b8 <__vector_6+0x24c>
{
irKeyRpt_f=1;
792: 81 e0 ldi r24, 0x01 ; 1
794: 80 93 7b 00 sts 0x007B, r24
irKeyRptTimes=0;
798: 10 92 7f 00 sts 0x007F, r1
79c: 0d c0 rjmp .+26 ; 0x7b8 <__vector_6+0x24c>
}
}
else
{
irState=0; //誤碼時重新置位
79e: 10 92 6b 00 sts 0x006B, r1
irKeyEvent = _IR_KEY_UP;
7a2: 84 e0 ldi r24, 0x04 ; 4
7a4: 80 93 62 00 sts 0x0062, r24
}
break;
7a8: 07 c0 rjmp .+14 ; 0x7b8 <__vector_6+0x24c>
default:
irState=0;
7aa: 10 92 6b 00 sts 0x006B, r1
break;
7ae: 04 c0 rjmp .+8 ; 0x7b8 <__vector_6+0x24c>
}
}
else// if(irState!=0) //有按鍵時遙控鍵接收狀態(tài)初始化
{
irKeyEvent=0;
7b0: 10 92 62 00 sts 0x0062, r1
irState=0;
7b4: 10 92 6b 00 sts 0x006B, r1
7b8: 22 96 adiw r28, 0x02 ; 2
7ba: f8 94 cli
7bc: de bf out 0x3e, r29 ; 62
7be: cd bf out 0x3d, r28 ; 61
7c0: df 91 pop r29
7c2: cf 91 pop r28
7c4: ff 91 pop r31
7c6: ef 91 pop r30
7c8: bf 91 pop r27
7ca: af 91 pop r26
7cc: 9f 91 pop r25
7ce: 8f 91 pop r24
7d0: 7f 91 pop r23
7d2: 6f 91 pop r22
7d4: 5f 91 pop r21
7d6: 4f 91 pop r20
7d8: 3f 91 pop r19
7da: 2f 91 pop r18
7dc: 0f 90 pop r0
7de: 0f be out 0x3f, r0 ; 63
7e0: 0f 90 pop r0
7e2: 1f 90 pop r1
7e4: 18 95 reti
000007e6 <__vector_9>:
}
}
/*
定時器溢出,當無按鍵時產(chǎn)生此事件
*/
SIGNAL(SIG_OVERFLOW1)
{
7e6: 1f 92 push r1
7e8: 0f 92 push r0
7ea: 0f b6 in r0, 0x3f ; 63
7ec: 0f 92 push r0
7ee: 11 24 eor r1, r1
7f0: 8f 93 push r24
7f2: 9f 93 push r25
7f4: cf 93 push r28
7f6: df 93 push r29
7f8: cd b7 in r28, 0x3d ; 61
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -