⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remote.lst

📁 硬盘MP3播放器-MEGA128-VS1001K-USB-遥控-LCD-ICCAVR代码-硬盘-支持FAT32-单面PCB 第二部分
💻 LST
📖 第 1 页 / 共 4 页
字号:
    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 + -