📄 winctrler.lss
字号:
292: 69 f4 brne .+26 ; 0x2ae <main+0xc6>
294: 80 91 08 01 lds r24, 0x0108
298: 8d 7f andi r24, 0xFD ; 253
29a: 80 93 08 01 sts 0x0108, r24
29e: 84 e0 ldi r24, 0x04 ; 4
2a0: 80 93 09 01 sts 0x0109, r24
2a4: 80 91 08 01 lds r24, 0x0108
2a8: 84 60 ori r24, 0x04 ; 4
2aa: 80 93 08 01 sts 0x0108, r24
2ae: 80 91 08 01 lds r24, 0x0108
2b2: 80 ff sbrs r24, 0
2b4: 3f c0 rjmp .+126 ; 0x334 <__stack+0x35>
2b6: 80 91 08 01 lds r24, 0x0108
2ba: 8e 7f andi r24, 0xFE ; 254
2bc: 80 93 08 01 sts 0x0108, r24
2c0: 80 91 06 01 lds r24, 0x0106
2c4: 88 23 and r24, r24
2c6: 29 f0 breq .+10 ; 0x2d2 <main+0xea>
2c8: 80 91 06 01 lds r24, 0x0106
2cc: 81 50 subi r24, 0x01 ; 1
2ce: 80 93 06 01 sts 0x0106, r24
2d2: 35 9b sbis 0x06, 5 ; 6
2d4: 03 c0 rjmp .+6 ; 0x2dc <main+0xf4>
2d6: 10 92 03 01 sts 0x0103, r1
2da: 03 c0 rjmp .+6 ; 0x2e2 <main+0xfa>
2dc: 82 e0 ldi r24, 0x02 ; 2
2de: 80 93 03 01 sts 0x0103, r24
2e2: 80 91 08 01 lds r24, 0x0108
2e6: 81 fd sbrc r24, 1
2e8: 16 c0 rjmp .+44 ; 0x316 <__stack+0x17>
2ea: 33 99 sbic 0x06, 3 ; 6
2ec: 06 c0 rjmp .+12 ; 0x2fa <main+0x112>
2ee: 81 e0 ldi r24, 0x01 ; 1
2f0: 80 93 09 01 sts 0x0109, r24
2f4: 82 e0 ldi r24, 0x02 ; 2
2f6: 80 93 05 01 sts 0x0105, r24
2fa: 34 99 sbic 0x06, 4 ; 6
2fc: 05 c0 rjmp .+10 ; 0x308 <__stack+0x9>
2fe: 82 e0 ldi r24, 0x02 ; 2
300: 80 93 09 01 sts 0x0109, r24
304: 80 93 05 01 sts 0x0105, r24
308: 33 9b sbis 0x06, 3 ; 6
30a: 05 c0 rjmp .+10 ; 0x316 <__stack+0x17>
30c: 34 9b sbis 0x06, 4 ; 6
30e: 03 c0 rjmp .+6 ; 0x316 <__stack+0x17>
310: 84 e0 ldi r24, 0x04 ; 4
312: 80 93 09 01 sts 0x0109, r24
316: 80 91 05 01 lds r24, 0x0105
31a: 88 23 and r24, r24
31c: 31 f0 breq .+12 ; 0x32a <__stack+0x2b>
31e: 80 91 05 01 lds r24, 0x0105
322: 81 50 subi r24, 0x01 ; 1
324: 80 93 05 01 sts 0x0105, r24
328: 05 c0 rjmp .+10 ; 0x334 <__stack+0x35>
32a: 80 91 08 01 lds r24, 0x0108
32e: 84 60 ori r24, 0x04 ; 4
330: 80 93 08 01 sts 0x0108, r24
334: 32 99 sbic 0x06, 2 ; 6
336: 08 c0 rjmp .+16 ; 0x348 <__stack+0x49>
338: 84 e0 ldi r24, 0x04 ; 4
33a: 80 93 09 01 sts 0x0109, r24
33e: 80 91 08 01 lds r24, 0x0108
342: 84 60 ori r24, 0x04 ; 4
344: 80 93 08 01 sts 0x0108, r24
348: 80 91 09 01 lds r24, 0x0109
34c: 88 23 and r24, r24
34e: 29 f0 breq .+10 ; 0x35a <__stack+0x5b>
350: 80 91 09 01 lds r24, 0x0109
354: af de rcall .-674 ; 0xb4 <MotoDriver>
356: 80 93 09 01 sts 0x0109, r24
35a: 80 91 08 01 lds r24, 0x0108
35e: 82 fd sbrc r24, 2
360: eb de rcall .-554 ; 0x138 <EnPowerDownMode>
362: 88 95 sleep
364: 71 cf rjmp .-286 ; 0x248 <main+0x60>
00000366 <__vector_16>:
366: 1f 92 push r1
368: 0f 92 push r0
36a: 0f b6 in r0, 0x3f ; 63
36c: 0f 92 push r0
36e: 11 24 eor r1, r1
370: 8f 93 push r24
372: 8f ef ldi r24, 0xFF ; 255
374: 86 bd out 0x26, r24 ; 38
376: 80 91 07 01 lds r24, 0x0107
37a: 8f 5f subi r24, 0xFF ; 255
37c: 80 93 07 01 sts 0x0107, r24
380: 80 91 07 01 lds r24, 0x0107
384: 8a 30 cpi r24, 0x0A ; 10
386: 38 f0 brcs .+14 ; 0x396 <__vector_16+0x30>
388: 80 91 08 01 lds r24, 0x0108
38c: 81 60 ori r24, 0x01 ; 1
38e: 80 93 08 01 sts 0x0108, r24
392: 10 92 07 01 sts 0x0107, r1
396: 8f 91 pop r24
398: 0f 90 pop r0
39a: 0f be out 0x3f, r0 ; 63
39c: 0f 90 pop r0
39e: 1f 90 pop r1
3a0: 18 95 reti
000003a2 <__vector_1>:
3a2: 1f 92 push r1
3a4: 0f 92 push r0
3a6: 0f b6 in r0, 0x3f ; 63
3a8: 0f 92 push r0
3aa: 11 24 eor r1, r1
3ac: 0f 90 pop r0
3ae: 0f be out 0x3f, r0 ; 63
3b0: 0f 90 pop r0
3b2: 1f 90 pop r1
3b4: 18 95 reti
000003b6 <WDT_off>:
}
void WDT_off(void)
{
/*MCUSR 中的WDRF 清零*/
MCUSR = 0x00;
3b6: 14 be out 0x34, r1 ; 52
/* 置位WDCE 与WDE */
WDTCSR = (1<<WDCE) | (1<<WDE);
3b8: 88 e1 ldi r24, 0x18 ; 24
3ba: 80 93 60 00 sts 0x0060, r24
/* 关闭WDT */
WDTCSR = 0x06;
3be: 86 e0 ldi r24, 0x06 ; 6
3c0: 80 93 60 00 sts 0x0060, r24
3c4: 08 95 ret
000003c6 <ICEInit>:
//#define interrupt_handler SIGNAL
//*pragma interrupt_handler IceInt:6 // 中断程序说明
void ICEInit(void) // T/C1初始化
{
TIMSK1 = (BV(ICIE1));//0x20; // 使能捕获中断
3c6: 80 e2 ldi r24, 0x20 ; 32
3c8: 80 93 6f 00 sts 0x006F, r24
TCCR1A = 0x00; // T/C1时钟与系统相同,本文使用系统AVR内部自带1MHz振荡源.
3cc: 10 92 80 00 sts 0x0080, r1
// T/C1时钟周期为1μs
TCCR1B = 0x81; // 使能噪音抑制,下降沿触发中断
3d0: 81 e8 ldi r24, 0x81 ; 129
3d2: 80 93 81 00 sts 0x0081, r24
3d6: 08 95 ret
000003d8 <__vector_10>:
}
BOOL bCollectData = 0; // 采集数据开始标志
byte bData;
TIMER_INTERRUPT_HANDLER(SIG_INPUT_CAPTURE1)
{
3d8: 1f 92 push r1
3da: 0f 92 push r0
3dc: 0f b6 in r0, 0x3f ; 63
3de: 0f 92 push r0
3e0: 11 24 eor r1, r1
3e2: 2f 93 push r18
3e4: 3f 93 push r19
3e6: 4f 93 push r20
3e8: 5f 93 push r21
3ea: 8f 93 push r24
3ec: 9f 93 push r25
3ee: ef 93 push r30
3f0: ff 93 push r31
static uint oldFall;
uint newFall;
uint temp;
newFall = ICR1;
3f2: 80 91 86 00 lds r24, 0x0086
3f6: 90 91 87 00 lds r25, 0x0087
temp = newFall - oldFall; // 计算脉冲加间隔的时间
3fa: 20 91 01 01 lds r18, 0x0101
3fe: 30 91 02 01 lds r19, 0x0102
402: ac 01 movw r20, r24
404: 42 1b sub r20, r18
406: 53 0b sbc r21, r19
408: 9a 01 movw r18, r20
oldFall = newFall;
40a: 90 93 02 01 sts 0x0102, r25
40e: 80 93 01 01 sts 0x0101, r24
if (temp > 1100 && temp < 1300 && bCollectData) // "0"信号
412: ca 01 movw r24, r20
414: 8d 54 subi r24, 0x4D ; 77
416: 94 40 sbci r25, 0x04 ; 4
418: 87 3c cpi r24, 0xC7 ; 199
41a: 91 05 cpc r25, r1
41c: 38 f4 brcc .+14 ; 0x42c <__vector_10+0x54>
41e: 80 91 00 01 lds r24, 0x0100
422: 88 23 and r24, r24
424: 19 f0 breq .+6 ; 0x42c <__vector_10+0x54>
{
temp = 0;
426: 20 e0 ldi r18, 0x00 ; 0
428: 30 e0 ldi r19, 0x00 ; 0
42a: 1f c0 rjmp .+62 ; 0x46a <__vector_10+0x92>
bitcnt++;
}
else if (temp > 1700 && temp < 1900 && bCollectData) //“1”信号
42c: c9 01 movw r24, r18
42e: 85 5a subi r24, 0xA5 ; 165
430: 96 40 sbci r25, 0x06 ; 6
432: 87 3c cpi r24, 0xC7 ; 199
434: 91 05 cpc r25, r1
436: 38 f4 brcc .+14 ; 0x446 <__vector_10+0x6e>
438: 80 91 00 01 lds r24, 0x0100
43c: 88 23 and r24, r24
43e: 19 f0 breq .+6 ; 0x446 <__vector_10+0x6e>
{
temp = 1;
440: 21 e0 ldi r18, 0x01 ; 1
442: 30 e0 ldi r19, 0x00 ; 0
444: 12 c0 rjmp .+36 ; 0x46a <__vector_10+0x92>
bitcnt++;
}
else if (temp > 2400 && temp < 2600) // header信号
446: 21 56 subi r18, 0x61 ; 97
448: 39 40 sbci r19, 0x09 ; 9
44a: 27 3c cpi r18, 0xC7 ; 199
44c: 31 05 cpc r19, r1
44e: 40 f4 brcc .+16 ; 0x460 <__vector_10+0x88>
{
bitcnt = 0;
450: 10 92 17 01 sts 0x0117, r1
bData = 0;
454: 10 92 15 01 sts 0x0115, r1
bCollectData = 1;
458: 81 e0 ldi r24, 0x01 ; 1
45a: 80 93 00 01 sts 0x0100, r24
//WorkTimer = 2;
//WakeForSleepTimer = 3;
return; // 返回,等待下次开始接收
45e: 39 c0 rjmp .+114 ; 0x4d2 <__vector_10+0xfa>
}
else // 干扰信号
{
bitcnt = 0;
460: 10 92 17 01 sts 0x0117, r1
bData = 0;
464: 10 92 15 01 sts 0x0115, r1
return;
468: 34 c0 rjmp .+104 ; 0x4d2 <__vector_10+0xfa>
46a: 80 91 17 01 lds r24, 0x0117
46e: 8f 5f subi r24, 0xFF ; 255
470: 80 93 17 01 sts 0x0117, r24
}
if (bCollectData && bitcnt > 0)
474: 80 91 00 01 lds r24, 0x0100
478: 88 23 and r24, r24
47a: 59 f1 breq .+86 ; 0x4d2 <__vector_10+0xfa>
47c: 90 91 17 01 lds r25, 0x0117
480: 99 23 and r25, r25
482: 39 f1 breq .+78 ; 0x4d2 <__vector_10+0xfa>
484: 80 91 15 01 lds r24, 0x0115
{
if (bitcnt < 2) // 开始接1位
488: 92 30 cpi r25, 0x02 ; 2
48a: 28 f4 brcc .+10 ; 0x496 <__vector_10+0xbe>
{
bData |= (byte)temp;
48c: 82 2b or r24, r18
bData = bData << 1;
48e: 88 0f add r24, r24
490: 80 93 15 01 sts 0x0115, r24
494: 1e c0 rjmp .+60 ; 0x4d2 <__vector_10+0xfa>
}
else // 接收完最后一位
{
bData |= (byte)temp;
496: 98 2f mov r25, r24
498: 92 2b or r25, r18
49a: 90 93 15 01 sts 0x0115, r25
// 数据入队
if (++IRKeyCodeHead >= KEYBUFLENGTH )
49e: 80 91 16 01 lds r24, 0x0116
4a2: 8f 5f subi r24, 0xFF ; 255
4a4: 80 93 16 01 sts 0x0116, r24
4a8: 80 91 16 01 lds r24, 0x0116
4ac: 8a 30 cpi r24, 0x0A ; 10
4ae: 10 f0 brcs .+4 ; 0x4b4 <__vector_10+0xdc>
IRKeyCodeHead = 0;
4b0: 10 92 16 01 sts 0x0116, r1
IRKeyCodeBuf[IRKeyCodeHead] = bData;
4b4: 80 91 16 01 lds r24, 0x0116
4b8: e8 2f mov r30, r24
4ba: ff 27 eor r31, r31
4bc: e5 5f subi r30, 0xF5 ; 245
4be: fe 4f sbci r31, 0xFE ; 254
4c0: 90 83 st Z, r25
bCollectData = 0;
4c2: 10 92 00 01 sts 0x0100, r1
WorkTimer = 2;
4c6: 82 e0 ldi r24, 0x02 ; 2
4c8: 80 93 06 01 sts 0x0106, r24
WakeForSleepTimer = 3;
4cc: 83 e0 ldi r24, 0x03 ; 3
4ce: 80 93 05 01 sts 0x0105, r24
4d2: ff 91 pop r31
4d4: ef 91 pop r30
4d6: 9f 91 pop r25
4d8: 8f 91 pop r24
4da: 5f 91 pop r21
4dc: 4f 91 pop r20
4de: 3f 91 pop r19
4e0: 2f 91 pop r18
4e2: 0f 90 pop r0
4e4: 0f be out 0x3f, r0 ; 63
4e6: 0f 90 pop r0
4e8: 1f 90 pop r1
4ea: 18 95 reti
000004ec <GetIRKey>:
}
}
//WorkTimer = 2;
//WakeForSleepTimer = 3;
/*
bitcnt++;
// 数据入队
if (++IRKeyCodeHead >= KEYBUFLENGTH )
IRKeyCodeHead = 0;
IRKeyCodeBuf[IRKeyCodeHead] = bitcnt;*/
}
byte GetIRKey(void)
{
if (IRKeyCodeTail != IRKeyCodeHead)
4ec: 90 91 0a 01 lds r25, 0x010A
4f0: 80 91 16 01 lds r24, 0x0116
4f4: 98 17 cp r25, r24
4f6: a1 f0 breq .+40 ; 0x520 <GetIRKey+0x34>
{
if (++IRKeyCodeTail >= KEYBUFLENGTH)
4f8: 80 91 0a 01 lds r24, 0x010A
4fc: 8f 5f subi r24, 0xFF ; 255
4fe: 80 93 0a 01 sts 0x010A, r24
502: 80 91 0a 01 lds r24, 0x010A
506: 8a 30 cpi r24, 0x0A ; 10
508: 10 f0 brcs .+4 ; 0x50e <GetIRKey+0x22>
IRKeyCodeTail = 0;
50a: 10 92 0a 01 sts 0x010A, r1
return (IRKeyCodeBuf[IRKeyCodeTail]);
50e: 80 91 0a 01 lds r24, 0x010A
512: e8 2f mov r30, r24
514: ff 27 eor r31, r31
516: e5 5f subi r30, 0xF5 ; 245
518: fe 4f sbci r31, 0xFE ; 254
51a: 80 81 ld r24, Z
51c: 99 27 eor r25, r25
51e: 08 95 ret
}
else
{
return (0xff);
520: 8f ef ldi r24, 0xFF ; 255
522: 90 e0 ldi r25, 0x00 ; 0
}
}
524: 08 95 ret
00000526 <__udivmodsi4>:
526: a1 e2 ldi r26, 0x21 ; 33
528: 1a 2e mov r1, r26
52a: aa 1b sub r26, r26
52c: bb 1b sub r27, r27
52e: fd 01 movw r30, r26
530: 0d c0 rjmp .+26 ; 0x54c <__udivmodsi4_ep>
00000532 <__udivmodsi4_loop>:
532: aa 1f adc r26, r26
534: bb 1f adc r27, r27
536: ee 1f adc r30, r30
538: ff 1f adc r31, r31
53a: a2 17 cp r26, r18
53c: b3 07 cpc r27, r19
53e: e4 07 cpc r30, r20
540: f5 07 cpc r31, r21
542: 20 f0 brcs .+8 ; 0x54c <__udivmodsi4_ep>
544: a2 1b sub r26, r18
546: b3 0b sbc r27, r19
548: e4 0b sbc r30, r20
54a: f5 0b sbc r31, r21
0000054c <__udivmodsi4_ep>:
54c: 66 1f adc r22, r22
54e: 77 1f adc r23, r23
550: 88 1f adc r24, r24
552: 99 1f adc r25, r25
554: 1a 94 dec r1
556: 69 f7 brne .-38 ; 0x532 <__udivmodsi4_loop>
558: 60 95 com r22
55a: 70 95 com r23
55c: 80 95 com r24
55e: 90 95 com r25
560: 9b 01 movw r18, r22
562: ac 01 movw r20, r24
564: bd 01 movw r22, r26
566: cf 01 movw r24, r30
568: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -