📄 remote.lst
字号:
026F BF89 OUT 0x39,R24
(0175)
(0176) MCUCR = 0xa0; // Power Down MCU and int0 low level
0270 EA80 LDI R24,0xA0
0271 BF85 OUT 0x35,R24
(0177) SLEEP();
0272 9588 SLEEP
(0178)
(0179) TimeOut = 0;
0273 2422 CLR R2
0274 2433 CLR R3
0275 92300061 STS 0x61,R3
0277 92200060 STS 0x60,R2
(0180) LcdPower(TRUE);
0279 E001 LDI R16,1
027A D2FE RCALL _LcdPower
(0181) LcdContrast(Cont);
027B 91000069 LDS R16,0x69
027D D347 RCALL _LcdContrast
(0182) PORTD |= VRX; // Enable Receiver
027E 9A94 SBI 0x12,4
(0183) Presentation();
027F D018 RCALL _Presentation
(0184) LineDisplay();
0280 D04C RCALL _LineDisplay
(0185) TIMSK |= 0x01; // Timer0 overflow interrupt enable
0281 B789 IN R24,0x39
0282 6081 ORI R24,1
0283 BF89 OUT 0x39,R24
(0186) MCUCR = 0x02; // int0 on falling eage level
0284 E082 LDI R24,2
0285 BF85 OUT 0x35,R24
0286 CF45 RJMP 0x01CC
(0187) }
(0188) }
(0189) }
0287 9622 ADIW R28,2
0288 9508 RET
__StackOverflowed:
c --> R20
0289 D6CC RCALL push_gset1
028A 2F40 MOV R20,R16
(0190)
(0191) //*************************************
(0192) // void _StackOverflowed(char c)
(0193) //*************************************
(0194) void _StackOverflowed(char c)
(0195) {
(0196) CLI();
028B 94F8 BCLR 7
(0197) LcdClear();
028C D346 RCALL _LcdClear
(0198) LcdGotoXY(1,3);
028D E023 LDI R18,3
028E E001 LDI R16,1
028F D362 RCALL _LcdGotoXY
(0199) LcdStrConst(1,"Stack Crash...\0");
0290 E62C LDI R18,0x6C
0291 E030 LDI R19,0
0292 E001 LDI R16,1
0293 D4A7 RCALL _LcdStrConst
(0200) LcdUpdate();
0294 D5A5 RCALL _LcdUpdate
(0201) while(1);
0295 CFFF RJMP 0x0295
(0202) }
0296 D6C2 RCALL pop_gset1
0297 9508 RET
_Presentation:
i --> R20
0298 D6BD RCALL push_gset1
0299 9725 SBIW R28,5
(0203)
(0204) //*************************************
(0205) // void Presentation(void)
(0206) //*************************************
(0207) void Presentation(void)
(0208) {
(0209) unsigned char i;
(0210)
(0211) LcdClear();
029A D338 RCALL _LcdClear
(0212) LcdGotoXY(3,1);
029B E021 LDI R18,1
029C E003 LDI R16,3
029D D354 RCALL _LcdGotoXY
(0213) LcdStrConst(1,"MP3 Player" );
029E E621 LDI R18,0x61
029F E030 LDI R19,0
02A0 E001 LDI R16,1
02A1 D499 RCALL _LcdStrConst
(0214) for (i=0;i<9;i++) LcdLine(0,i,83,i,PIXEL_XOR);
02A2 2744 CLR R20
02A3 C009 RJMP 0x02AD
02A4 E082 LDI R24,2
02A5 838C STD Y+4,R24
02A6 834A STD Y+2,R20
02A7 E583 LDI R24,0x53
02A8 8388 STD Y+0,R24
02A9 2F24 MOV R18,R20
02AA 2700 CLR R16
02AB D4FF RCALL _LcdLine
02AC 9543 INC R20
02AD 3049 CPI R20,0x9
02AE F3A8 BCS 0x02A4
(0215) LcdGotoXY(5,3);
02AF E023 LDI R18,3
02B0 E005 LDI R16,5
02B1 D340 RCALL _LcdGotoXY
(0216) LcdStrConst(1,"Sylvain");
02B2 E529 LDI R18,0x59
02B3 E030 LDI R19,0
02B4 E001 LDI R16,1
02B5 D485 RCALL _LcdStrConst
(0217) LcdGotoXY(3,4);
02B6 E024 LDI R18,4
02B7 E003 LDI R16,3
02B8 D339 RCALL _LcdGotoXY
(0218) LcdStrConst(1,"Bissonnette");
02B9 E42D LDI R18,0x4D
02BA E030 LDI R19,0
02BB E001 LDI R16,1
02BC D47E RCALL _LcdStrConst
(0219) LcdGotoXY(4,6);
02BD E026 LDI R18,6
02BE E004 LDI R16,4
02BF D332 RCALL _LcdGotoXY
(0220) LcdStrConst(1,"Ver : 1.0");
02C0 E423 LDI R18,0x43
02C1 E030 LDI R19,0
02C2 E001 LDI R16,1
02C3 D477 RCALL _LcdStrConst
(0221) LcdUpdate();
02C4 D575 RCALL _LcdUpdate
(0222) delay_ms(1000);
02C5 EE08 LDI R16,0xE8
02C6 E013 LDI R17,3
02C7 D145 RCALL _delay_ms
(0223) LcdClear();
02C8 D30A RCALL _LcdClear
(0224) LcdUpdate();
02C9 D570 RCALL _LcdUpdate
(0225) }
02CA 9625 ADIW R28,5
02CB D68D RCALL pop_gset1
02CC 9508 RET
_LineDisplay:
buffer --> Y+5
i --> R20
02CD D688 RCALL push_gset1
02CE 9763 SBIW R28,0x13
(0226)
(0227) //*************************************
(0228) // void LineDisplay(void)
(0229) //*************************************
(0230) void LineDisplay(void)
(0231) {
(0232) unsigned char i;
(0233) char buffer[14];
(0234)
(0235) LcdClear();
02CF D303 RCALL _LcdClear
(0236) LcdGotoXY(3,1);
02D0 E021 LDI R18,1
02D1 E003 LDI R16,3
02D2 D31F RCALL _LcdGotoXY
(0237) if (ListType == SONG) LcdStrConst(1,"Song List" );
02D3 90200064 LDS R2,0x64
02D5 2022 TST R2
02D6 F421 BNE 0x02DB
02D7 E329 LDI R18,0x39
02D8 E030 LDI R19,0
02D9 E001 LDI R16,1
02DA D460 RCALL _LcdStrConst
(0238) if (ListType == DIR) LcdStrConst(1,"Dir List" );
02DB 91800064 LDS R24,0x64
02DD 3081 CPI R24,1
02DE F421 BNE 0x02E3
02DF E22F LDI R18,0x2F
02E0 E030 LDI R19,0
02E1 E001 LDI R16,1
02E2 D458 RCALL _LcdStrConst
(0239) if (ListType == PLAY) LcdStrConst(1," Playing" );
02E3 91800064 LDS R24,0x64
02E5 3082 CPI R24,2
02E6 F421 BNE 0x02EB
02E7 E226 LDI R18,0x26
02E8 E030 LDI R19,0
02E9 E001 LDI R16,1
02EA D450 RCALL _LcdStrConst
(0240) for (i=1;i<8;i++) LcdLine(0,i,83,i,PIXEL_XOR);
02EB E041 LDI R20,1
02EC C009 RJMP 0x02F6
02ED E082 LDI R24,2
02EE 838C STD Y+4,R24
02EF 834A STD Y+2,R20
02F0 E583 LDI R24,0x53
02F1 8388 STD Y+0,R24
02F2 2F24 MOV R18,R20
02F3 2700 CLR R16
02F4 D4B6 RCALL _LcdLine
02F5 9543 INC R20
02F6 3048 CPI R20,0x8
02F7 F3A8 BCS 0x02ED
(0241)
(0242) for (i=0;i<5;i++)
02F8 2744 CLR R20
02F9 C01B RJMP 0x0315
(0243) {
(0244) memcpy(&buffer[0],&Line[i][0],13);
02FA E08D LDI R24,0xD
02FB E090 LDI R25,0
02FC 8399 STD Y+1,R25
02FD 8388 STD Y+0,R24
02FE E288 LDI R24,0x28
02FF 9F84 MUL R24,R20
0300 0190 MOVW R18,R0
0301 ED8B LDI R24,0xDB
0302 E090 LDI R25,0
0303 0F28 ADD R18,R24
0304 1F39 ADC R19,R25
0305 018E MOVW R16,R28
0306 5F0B SUBI R16,0xFB
0307 4F1F SBCI R17,0xFF
0308 D5C7 RCALL _memcpy
(0245) buffer[13] = 0x00;
0309 2422 CLR R2
030A 8A2A STD Y+18,R2
(0246) LcdGotoXY(2,2+i);
030B 2F24 MOV R18,R20
030C 5F2E SUBI R18,0xFE
030D E002 LDI R16,2
030E D2E3 RCALL _LcdGotoXY
(0247) LcdStr(1,&buffer[0]);
030F 019E MOVW R18,R28
0310 5F2B SUBI R18,0xFB
0311 4F3F SBCI R19,0xFF
0312 E001 LDI R16,1
0313 D418 RCALL _LcdStr
0314 9543 INC R20
0315 3045 CPI R20,5
0316 F318 BCS 0x02FA
(0248) }
(0249) LcdGotoXY(1,2+LinePtr);
0317 91200063 LDS R18,0x63
0319 5F2E SUBI R18,0xFE
031A E001 LDI R16,1
031B D2D6 RCALL _LcdGotoXY
(0250) LcdChr(1,134); // c'est la fleche
031C E826 LDI R18,0x86
031D E001 LDI R16,1
031E D2E3 RCALL _LcdChr
(0251) }
031F 9663 ADIW R28,0x13
0320 D638 RCALL pop_gset1
0321 9508 RET
_timer0_ovf_isr:
j --> R20
0322 D656 RCALL push_lset
0323 D632 RCALL push_gset1
0324 9722 SBIW R28,2
(0252)
(0253) //*************************************
(0254) // void timer1_ovf_isr(void)
(0255) //
(0256) // 3.8 Hit/Second
(0257) //*************************************
(0258) #pragma interrupt_handler timer0_ovf_isr:10
(0259) void timer0_ovf_isr(void)
(0260) {
(0261)
(0262) static unsigned char tick = 0;
(0263) static unsigned char i = 0;
(0264) static unsigned char LastLinePtr = 0;
(0265) static char buffer[14];
(0266) unsigned char j;
(0267)
(0268) if (LinePtr != LastLinePtr) // if line ptr change
0325 9020006C LDS R2,0x6C
0327 90300063 LDS R3,0x63
0329 1432 CP R3,R2
032A F041 BEQ 0x0333
(0269) {
(0270) LineDisplay();
032B DFA1 RCALL _LineDisplay
(0271) i = 0;
032C 2422 CLR R2
032D 9220006B STS 0x6B,R2
(0272) LastLinePtr = LinePtr;
032F 90200063 LDS R2,0x63
0331 9220006C STS 0x6C,R2
(0273) }
(0274)
(0275) if (Refresh == TRUE)
0333 91800066 LDS R24,0x66
0335 3081 CPI R24,1
0336 F431 BNE 0x033D
(0276) {
(0277) LineDisplay();
0337 DF95 RCALL _LineDisplay
(0278) i = 0;
0338 2422 CLR R2
0339 9220006B STS 0x6B,R2
(0279) Refresh = FALSE;
033B 92200066 STS 0x66,R2
(0280) }
(0281)
(0282) if (UpdateLcd == TRUE) LcdUpdate();
033D 9180008A LDS R24,_UpdateLcd
033F 3081 CPI R24,1
0340 F409 BNE 0x0342
0341 D4F8 RCALL _LcdUpdate
(0283)
(0284) tick++;
0342 9180006A LDS R24,0x6A
0344 5F8F SUBI R24,0xFF
0345 9380006A STS 0x6A,R24
(0285) if (tick < 6) return;
0347 3086 CPI R24,6
0348 F408 BCC 0x034A
0349 C07E RJMP 0x03C8
(0286) tick = 0;
034A 2422 CLR R2
034B 9220006A STS 0x6A,R2
(0287)
(0288) #ifndef NOTIMEOUT
(0289) TimeOut++;
034D 91800060 LDS R24,0x60
034F 91900061 LDS R25,0x61
0351 9601 ADIW R24,1
0352 93900061 STS 0x61,R25
0354 93800060 STS 0x60,R24
(0290) #endif
(0291) Light++;
0356 91800067 LDS R24,0x67
0358 91900068 LDS R25,0x68
035A 9601 ADIW R24,1
035B 93900068 STS 0x68,R25
035D 93800067 STS 0x67,R24
(0292)
(0293)
(0294) if (strlen(&Line[LinePtr][0]) < 14) return;
035F 91100063 LDS R17,0x63
0361 E208 LDI R16,0x28
0362 0201 MULS R16,R17
0363 0180 MOVW R16,R0
0364 ED8B LDI R24,0xDB
0365 E090 LDI R25,0
0366 0F08 ADD R16,R24
0367 1F19 ADC R17,R25
0368 D575 RCALL _strlen
0369 300E CPI R16,0xE
036A E0E0 LDI R30,0
036B 071E CPC R17,R30
036C F408 BCC 0x036E
036D C05A RJMP 0x03C8
(0295)
(0296) for (j=0;j<14;j++) buffer[j] = ' ';
036E 2744 CLR R20
036F C009 RJMP 0x0379
0370 E68E LDI R24,0x6E
0371 E090 LDI R25,0
0372 2FE4 MOV R30,R20
0373 27FF CLR R31
0374 0FE8 ADD R30,R24
0375 1FF9 ADC R31,R25
0376 E280 LDI R24,0x20
0377 8380 STD Z+0,R24
0378 9543 INC R20
0379 304E CPI R20,0xE
037A F3A8 BCS 0x0370
(0297) if (i > (strlen(&Line[LinePtr][0]))) i = 0;
037B 91100063 LDS R17,0x63
037D E208 LDI R16,0x28
037E 0201 MULS R16,R17
037F 0180 MOVW R16,R0
0380 ED8B LDI R24,0xDB
0381 E090 LDI R25,0
0382 0F08 ADD R16,R24
0383 1F19 ADC R17,R25
0384 D559 RCALL _strlen
0385 9020006B LDS R2,0x6B
0387 2433 CLR R3
0388 1502 CP R16,R2
0389 0513 CPC R17,R3
038A F418 BCC 0x038E
038B 2422 CLR R2
038C 9220006B STS 0x6B,R2
(0298) j = strlen(&Line[LinePtr][i]);
038E 91100063 LDS R17,0x63
0390 E208 LDI R16,0x28
0391 0201 MULS R16,R17
0392 0110 MOVW R2,R0
0393 ED8B LDI R24,0xDB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -