?? main.lss
字號:
//sendIRstate
//1: 傳輸引導碼高電平 9ms
//2: 傳輸引導碼低電平 4.5ms
//3: 傳輸客戶碼高位
//4: 傳輸客戶碼低位 3+4= 18-27ms
//5: 傳輸遙控碼高位
//6: 傳輸遙控碼低位 5+6 = 27ms
//7: 傳輸截止碼高電平 560us
//8: 傳輸截止碼低電平 31.5MS--49.5MS
//9: 傳輸重復發送引導碼高電平 9ms
//10: 傳輸重復發送引導碼高電平 2.25ms
//11: 傳輸截止碼高電平 560us
//12: 傳輸截止碼低電平 96190us
ISR(TIMER0_OVF_vect)
{
266: 1f 92 push r1
268: 0f 92 push r0
26a: 0f b6 in r0, 0x3f ; 63
26c: 0f 92 push r0
26e: 11 24 eor r1, r1
270: 2f 93 push r18
272: 3f 93 push r19
274: 4f 93 push r20
276: 5f 93 push r21
278: 6f 93 push r22
27a: 7f 93 push r23
27c: 8f 93 push r24
27e: 9f 93 push r25
280: af 93 push r26
282: bf 93 push r27
284: ef 93 push r30
286: ff 93 push r31
288: cf 93 push r28
28a: df 93 push r29
28c: cd b7 in r28, 0x3d ; 61
28e: de b7 in r29, 0x3e ; 62
290: 22 97 sbiw r28, 0x02 ; 2
292: de bf out 0x3e, r29 ; 62
294: cd bf out 0x3d, r28 ; 61
TCNT0=TCNT0_560US;
296: 8a ef ldi r24, 0xFA ; 250
298: 80 93 52 00 sts 0x0052, r24
if(sendIRstate!=0)
29c: 80 91 77 00 lds r24, 0x0077
2a0: 88 23 and r24, r24
2a2: 09 f4 brne .+2 ; 0x2a6 <__vector_11+0x40>
2a4: ce c0 rjmp .+412 ; 0x442 <__vector_11+0x1dc>
{
sendIRintervaltimecount--;
2a6: 80 91 79 00 lds r24, 0x0079
2aa: 81 50 subi r24, 0x01 ; 1
2ac: 80 93 79 00 sts 0x0079, r24
if(sendIRintervaltimecount==0)
2b0: 80 91 79 00 lds r24, 0x0079
2b4: 88 23 and r24, r24
2b6: 09 f0 breq .+2 ; 0x2ba <__vector_11+0x54>
2b8: c4 c0 rjmp .+392 ; 0x442 <__vector_11+0x1dc>
{
switch(sendIRstate)
2ba: 80 91 77 00 lds r24, 0x0077
2be: 28 2f mov r18, r24
2c0: 33 27 eor r19, r19
2c2: 3a 83 std Y+2, r19 ; 0x02
2c4: 29 83 std Y+1, r18 ; 0x01
2c6: 89 81 ldd r24, Y+1 ; 0x01
2c8: 9a 81 ldd r25, Y+2 ; 0x02
2ca: 86 30 cpi r24, 0x06 ; 6
2cc: 91 05 cpc r25, r1
2ce: 09 f4 brne .+2 ; 0x2d2 <__vector_11+0x6c>
2d0: 7c c0 rjmp .+248 ; 0x3ca <__vector_11+0x164>
2d2: 29 81 ldd r18, Y+1 ; 0x01
2d4: 3a 81 ldd r19, Y+2 ; 0x02
2d6: 27 30 cpi r18, 0x07 ; 7
2d8: 31 05 cpc r19, r1
2da: 2c f5 brge .+74 ; 0x326 <__vector_11+0xc0>
2dc: 89 81 ldd r24, Y+1 ; 0x01
2de: 9a 81 ldd r25, Y+2 ; 0x02
2e0: 83 30 cpi r24, 0x03 ; 3
2e2: 91 05 cpc r25, r1
2e4: 09 f4 brne .+2 ; 0x2e8 <__vector_11+0x82>
2e6: 64 c0 rjmp .+200 ; 0x3b0 <__vector_11+0x14a>
2e8: 29 81 ldd r18, Y+1 ; 0x01
2ea: 3a 81 ldd r19, Y+2 ; 0x02
2ec: 24 30 cpi r18, 0x04 ; 4
2ee: 31 05 cpc r19, r1
2f0: 6c f4 brge .+26 ; 0x30c <__vector_11+0xa6>
2f2: 89 81 ldd r24, Y+1 ; 0x01
2f4: 9a 81 ldd r25, Y+2 ; 0x02
2f6: 81 30 cpi r24, 0x01 ; 1
2f8: 91 05 cpc r25, r1
2fa: 09 f4 brne .+2 ; 0x2fe <__vector_11+0x98>
2fc: 3d c0 rjmp .+122 ; 0x378 <__vector_11+0x112>
2fe: 29 81 ldd r18, Y+1 ; 0x01
300: 3a 81 ldd r19, Y+2 ; 0x02
302: 22 30 cpi r18, 0x02 ; 2
304: 31 05 cpc r19, r1
306: 09 f4 brne .+2 ; 0x30a <__vector_11+0xa4>
308: 45 c0 rjmp .+138 ; 0x394 <__vector_11+0x12e>
30a: 9b c0 rjmp .+310 ; 0x442 <__vector_11+0x1dc>
30c: 89 81 ldd r24, Y+1 ; 0x01
30e: 9a 81 ldd r25, Y+2 ; 0x02
310: 84 30 cpi r24, 0x04 ; 4
312: 91 05 cpc r25, r1
314: 09 f4 brne .+2 ; 0x318 <__vector_11+0xb2>
316: 50 c0 rjmp .+160 ; 0x3b8 <__vector_11+0x152>
318: 29 81 ldd r18, Y+1 ; 0x01
31a: 3a 81 ldd r19, Y+2 ; 0x02
31c: 25 30 cpi r18, 0x05 ; 5
31e: 31 05 cpc r19, r1
320: 09 f4 brne .+2 ; 0x324 <__vector_11+0xbe>
322: 4e c0 rjmp .+156 ; 0x3c0 <__vector_11+0x15a>
324: 8e c0 rjmp .+284 ; 0x442 <__vector_11+0x1dc>
326: 89 81 ldd r24, Y+1 ; 0x01
328: 9a 81 ldd r25, Y+2 ; 0x02
32a: 89 30 cpi r24, 0x09 ; 9
32c: 91 05 cpc r25, r1
32e: 21 f1 breq .+72 ; 0x378 <__vector_11+0x112>
330: 29 81 ldd r18, Y+1 ; 0x01
332: 3a 81 ldd r19, Y+2 ; 0x02
334: 2a 30 cpi r18, 0x0A ; 10
336: 31 05 cpc r19, r1
338: 6c f4 brge .+26 ; 0x354 <__vector_11+0xee>
33a: 89 81 ldd r24, Y+1 ; 0x01
33c: 9a 81 ldd r25, Y+2 ; 0x02
33e: 87 30 cpi r24, 0x07 ; 7
340: 91 05 cpc r25, r1
342: 09 f4 brne .+2 ; 0x346 <__vector_11+0xe0>
344: 48 c0 rjmp .+144 ; 0x3d6 <__vector_11+0x170>
346: 29 81 ldd r18, Y+1 ; 0x01
348: 3a 81 ldd r19, Y+2 ; 0x02
34a: 28 30 cpi r18, 0x08 ; 8
34c: 31 05 cpc r19, r1
34e: 09 f4 brne .+2 ; 0x352 <__vector_11+0xec>
350: 50 c0 rjmp .+160 ; 0x3f2 <__vector_11+0x18c>
352: 77 c0 rjmp .+238 ; 0x442 <__vector_11+0x1dc>
354: 89 81 ldd r24, Y+1 ; 0x01
356: 9a 81 ldd r25, Y+2 ; 0x02
358: 8b 30 cpi r24, 0x0B ; 11
35a: 91 05 cpc r25, r1
35c: e1 f1 breq .+120 ; 0x3d6 <__vector_11+0x170>
35e: 29 81 ldd r18, Y+1 ; 0x01
360: 3a 81 ldd r19, Y+2 ; 0x02
362: 2b 30 cpi r18, 0x0B ; 11
364: 31 05 cpc r19, r1
366: 0c f4 brge .+2 ; 0x36a <__vector_11+0x104>
368: 53 c0 rjmp .+166 ; 0x410 <__vector_11+0x1aa>
36a: 89 81 ldd r24, Y+1 ; 0x01
36c: 9a 81 ldd r25, Y+2 ; 0x02
36e: 8c 30 cpi r24, 0x0C ; 12
370: 91 05 cpc r25, r1
372: 09 f4 brne .+2 ; 0x376 <__vector_11+0x110>
374: 5b c0 rjmp .+182 ; 0x42c <__vector_11+0x1c6>
376: 65 c0 rjmp .+202 ; 0x442 <__vector_11+0x1dc>
{
case 1:
case 9:
SetPortIRLow();
378: 80 91 32 00 lds r24, 0x0032
37c: 8f 7d andi r24, 0xDF ; 223
37e: 80 93 32 00 sts 0x0032, r24
sendIRintervaltimecount=TIMER0_9MS;
382: 80 e1 ldi r24, 0x10 ; 16
384: 80 93 79 00 sts 0x0079, r24
sendIRstate++;
388: 80 91 77 00 lds r24, 0x0077
38c: 8f 5f subi r24, 0xFF ; 255
38e: 80 93 77 00 sts 0x0077, r24
break;
392: 57 c0 rjmp .+174 ; 0x442 <__vector_11+0x1dc>
case 2:
SetPortIRHigh();
394: 80 91 32 00 lds r24, 0x0032
398: 80 62 ori r24, 0x20 ; 32
39a: 80 93 32 00 sts 0x0032, r24
sendIRintervaltimecount=TIMER0_4500US;
39e: 88 e0 ldi r24, 0x08 ; 8
3a0: 80 93 79 00 sts 0x0079, r24
sendIRstate++;
3a4: 80 91 77 00 lds r24, 0x0077
3a8: 8f 5f subi r24, 0xFF ; 255
3aa: 80 93 77 00 sts 0x0077, r24
break;
3ae: 49 c0 rjmp .+146 ; 0x442 <__vector_11+0x1dc>
case 3:
SendIRByte(IRCUSTOMCODEH);
3b0: 80 e1 ldi r24, 0x10 ; 16
3b2: 0e 94 e2 00 call 0x1c4 <SendIRByte>
break;
3b6: 45 c0 rjmp .+138 ; 0x442 <__vector_11+0x1dc>
case 4:
SendIRByte(IRCUSTOMCODEL);
3b8: 8f ee ldi r24, 0xEF ; 239
3ba: 0e 94 e2 00 call 0x1c4 <SendIRByte>
break;
3be: 41 c0 rjmp .+130 ; 0x442 <__vector_11+0x1dc>
case 5:
SendIRByte(sendIRdata);
3c0: 80 91 82 00 lds r24, 0x0082
3c4: 0e 94 e2 00 call 0x1c4 <SendIRByte>
break;
3c8: 3c c0 rjmp .+120 ; 0x442 <__vector_11+0x1dc>
case 6:
SendIRByte(~sendIRdata);
3ca: 80 91 82 00 lds r24, 0x0082
3ce: 80 95 com r24
3d0: 0e 94 e2 00 call 0x1c4 <SendIRByte>
break;
3d4: 36 c0 rjmp .+108 ; 0x442 <__vector_11+0x1dc>
case 7:
case 11:
SetPortIRLow();
3d6: 80 91 32 00 lds r24, 0x0032
3da: 8f 7d andi r24, 0xDF ; 223
3dc: 80 93 32 00 sts 0x0032, r24
sendIRintervaltimecount=TIMER0_560US;
3e0: 81 e0 ldi r24, 0x01 ; 1
3e2: 80 93 79 00 sts 0x0079, r24
sendIRstate++;
3e6: 80 91 77 00 lds r24, 0x0077
3ea: 8f 5f subi r24, 0xFF ; 255
3ec: 80 93 77 00 sts 0x0077, r24
break;
3f0: 28 c0 rjmp .+80 ; 0x442 <__vector_11+0x1dc>
case 8:
SetPortIRHigh();
3f2: 80 91 32 00 lds r24, 0x0032
3f6: 80 62 ori r24, 0x20 ; 32
3f8: 80 93 32 00 sts 0x0032, r24
sendIRintervaltimecount=sendIRintervaltimecounttemp;
3fc: 80 91 71 00 lds r24, 0x0071
400: 80 93 79 00 sts 0x0079, r24
sendIRstate++;
404: 80 91 77 00 lds r24, 0x0077
408: 8f 5f subi r24, 0xFF ; 255
40a: 80 93 77 00 sts 0x0077, r24
break;
40e: 19 c0 rjmp .+50 ; 0x442 <__vector_11+0x1dc>
case 10:
SetPortIRHigh();
410: 80 91 32 00 lds r24, 0x0032
414: 80 62 ori r24, 0x20 ; 32
416: 80 93 32 00 sts 0x0032, r24
sendIRintervaltimecount=TIMER0_2250US;
41a: 84 e0 ldi r24, 0x04 ; 4
41c: 80 93 79 00 sts 0x0079, r24
sendIRstate++;
420: 80 91 77 00 lds r24, 0x0077
424: 8f 5f subi r24, 0xFF ; 255
426: 80 93 77 00 sts 0x0077, r24
break;
42a: 0b c0 rjmp .+22 ; 0x442 <__vector_11+0x1dc>
case 12:
SetPortIRHigh();
42c: 80 91 32 00 lds r24, 0x0032
430: 80 62 ori r24, 0x20 ; 32
432: 80 93 32 00 sts 0x0032, r24
sendIRintervaltimecount=TIMER0_96190us;
436: 8c ea ldi r24, 0xAC ; 172
438: 80 93 79 00 sts 0x0079, r24
sendIRstate=9; //重復發送
43c: 89 e0 ldi r24, 0x09 ; 9
43e: 80 93 77 00 sts 0x0077, r24
442: 22 96 adiw r28, 0x02 ; 2
444: f8 94 cli
446: de bf out 0x3e, r29 ; 62
448: cd bf out 0x3d, r28 ; 61
44a: df 91 pop r29
44c: cf 91 pop r28
44e: ff 91 pop r31
450: ef 91 pop r30
452: bf 91 pop r27
454: af 91 pop r26
456: 9f 91 pop r25
458: 8f 91 pop r24
45a: 7f 91 pop r23
45c: 6f 91 pop r22
45e: 5f 91 pop r21
460: 4f 91 pop r20
462: 3f 91 pop r19
464: 2f 91 pop r18
466: 0f 90 pop r0
468: 0f be out 0x3f, r0 ; 63
46a: 0f 90 pop r0
46c: 1f 90 pop r1
46e: 18 95 reti
00000470 <ir_get_bit>:
BYTE irKeyRptTimes;
static void ir_get_bit(char bit)
{
470: cf 93 push r28
472: df 93 push r29
474: cd b7 in r28, 0x3d ; 61
476: de b7 in r29, 0x3e ; 62
478: 21 97 sbiw r28, 0x01 ; 1
47a: 0f b6 in r0, 0x3f ; 63
47c: f8 94 cli
47e: de bf out 0x3e, r29 ; 62
480: 0f be out 0x3f, r0 ; 63
482: cd bf out 0x3d, r28 ; 61
484: 89 83 std Y+1, r24 ; 0x01
irDataBuff[irByteIndex]<<=1;
486: 80 91 69 00 lds r24, 0x0069
48a: 99 27 eor r25, r25
48c: dc 01 movw r26, r24
48e: a3 59 subi r26, 0x93 ; 147
490: bf 4f sbci r27, 0xFF ; 255
492: 80 91 69 00 lds r24, 0x0069
496: 99 27 eor r25, r25
498: fc 01 movw r30, r24
49a: e3 59 subi r30, 0x93 ; 147
49c: ff 4f sbci r31, 0xFF ; 255
49e: 80 81 ld r24, Z
4a0: 88 0f add r24, r24
4a2: 8c 93 st X, r24
if(bit)
4a4: 89 81 ldd r24, Y+1 ; 0x01
4a6: 88 23 and r24, r24
4a8: 81 f0 breq .+32 ; 0x4ca <ir_get_bit+0x5a>
irDataBuff[irByteIndex] |= 1;
4aa: 80 91 69 00 lds r24, 0x0069
4ae: 99 27 eor r25, r25
4b0: dc 01 movw r26, r24
4b2: a3 59 subi r26, 0x93 ; 147
4b4: bf 4f sbci r27, 0xFF ; 255
4b6: 80 91 69 00 lds r24, 0x0069
4ba: 99 27 eor r25, r25
4bc: fc 01 movw r30, r24
4be: e3 59 subi r30, 0x93 ; 147
4c0: ff 4f sbci r31, 0xFF ; 255
4c2: 80 81 ld r24, Z
4c4: 81 60 ori r24, 0x01 ; 1
4c6: 8c 93 st X, r24
4c8: 10 c0 rjmp .+32 ; 0x4ea <ir_get_bit+0x7a>
else
irDataBuff[irByteIndex] &= 0xFE;
4ca: 80 91 69 00 lds r24, 0x0069
4ce: 99 27 eor r25, r25
4d0: dc 01 movw r26, r24
4d2: a3 59 subi r26, 0x93 ; 147
4d4: bf 4f sbci r27, 0xFF ; 255
4d6: 80 91 69 00 lds r24, 0x0069
4da: 99 27 eor r25, r25
4dc: fc 01 movw r30, r24
4de: e3 59 subi r30, 0x93 ; 147
4e0: ff 4f sbci r31, 0xFF ; 255
4e2: 9e ef ldi r25, 0xFE ; 254
4e4: 80 81 ld r24, Z
4e6: 89 23 and r24, r25
4e8: 8c 93 st X, r24
irBitIndex++;
4ea: 80 91 6a 00 lds r24, 0x006A
4ee: 8f 5f subi r24, 0xFF ; 255
4f0: 80 93 6a 00 sts 0x006A, r24
if(irBitIndex%8==0)
4f4: 80 91 6a 00 lds r24, 0x006A
4f8: 87 70 andi r24, 0x07 ; 7
4fa: 88 23 and r24, r24
4fc: 29 f4 brne .+10 ; 0x508 <ir_get_bit+0x98>
irByteIndex++;
4fe: 80 91 69 00 lds r24, 0x0069
502: 8f 5f subi r24, 0xFF ; 255
504: 80 93 69 00 sts 0x0069, r24
if(irBitIndex==32)//累計到32個,則發送遙控器接收完成標志
508: 80 91 6a 00 lds r24, 0x006A
50c: 80 32 cpi r24, 0x20 ; 32
50e: 29 f5 brne .+74 ; 0x55a <ir_get_bit+0xea>
{
if(irDataBuff[0]==REMOTE_ADDR&&irDataBuff[2]==~irDataBuff[3])//廠家碼校驗
510: 80 91 6d 00 lds r24, 0x006D
514: 80 31 cpi r24, 0x10 ; 16
516: f9 f4 brne .+62 ; 0x556 <ir_get_bit+0xe6>
518: 80 91 6f 00 lds r24, 0x006F
51c: 28 2f mov r18, r24
51e: 33 27 eor r19, r19
520: 80 91 70 00 lds r24, 0x0070
524: 99 27 eor r25, r25
526: 80 95 com r24
528: 90 95 com r25
52a: 28 17 cp r18, r24
52c: 39 07 cpc r19, r25
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -