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

📄 remote.lst

📁 硬盘MP3播放器-MEGA128-VS1001K-USB-遥控-LCD-ICCAVR代码-硬盘-支持FAT32-单面PCB 第二部分
💻 LST
📖 第 1 页 / 共 4 页
字号:
    0394 E090      LDI	R25,0
    0395 0E28      ADD	R2,R24
    0396 1E39      ADC	R3,R25
    0397 9100006B  LDS	R16,0x6B
    0399 2711      CLR	R17
    039A 0D02      ADD	R16,R2
    039B 1D13      ADC	R17,R3
    039C D541      RCALL	_strlen
    039D 2F40      MOV	R20,R16
(0299) if (j > 14) j = 14;
    039E E08E      LDI	R24,0xE
    039F 1780      CP	R24,R16
    03A0 F408      BCC	0x03A2
    03A1 E04E      LDI	R20,0xE
(0300) memcpy(&buffer[0],&Line[LinePtr][i],j);
    03A2 2E24      MOV	R2,R20
    03A3 2433      CLR	R3
    03A4 8239      STD	Y+1,R3
    03A5 8228      STD	Y+0,R2
    03A6 91100063  LDS	R17,0x63
    03A8 E208      LDI	R16,0x28
    03A9 0201      MULS	R16,R17
    03AA 0110      MOVW	R2,R0
    03AB ED8B      LDI	R24,0xDB
    03AC E090      LDI	R25,0
    03AD 0E28      ADD	R2,R24
    03AE 1E39      ADC	R3,R25
    03AF 9120006B  LDS	R18,0x6B
    03B1 2733      CLR	R19
    03B2 0D22      ADD	R18,R2
    03B3 1D33      ADC	R19,R3
    03B4 E60E      LDI	R16,0x6E
    03B5 E010      LDI	R17,0
    03B6 D519      RCALL	_memcpy
(0301) buffer[13] = 0x00;
    03B7 2422      CLR	R2
    03B8 9220007B  STS	0x7B,R2
(0302) LcdGotoXY(2,2+LinePtr);
    03BA 91200063  LDS	R18,0x63
    03BC 5F2E      SUBI	R18,0xFE
    03BD E002      LDI	R16,2
    03BE D233      RCALL	_LcdGotoXY
(0303) LcdStr(1,&buffer[0]);
    03BF E62E      LDI	R18,0x6E
    03C0 E030      LDI	R19,0
    03C1 E001      LDI	R16,1
    03C2 D369      RCALL	_LcdStr
(0304) i++;
    03C3 9180006B  LDS	R24,0x6B
    03C5 5F8F      SUBI	R24,0xFF
    03C6 9380006B  STS	0x6B,R24
(0305) }
    03C8 9622      ADIW	R28,2
    03C9 D58F      RCALL	pop_gset1
    03CA D5C5      RCALL	pop_lset
    03CB 9518      RETI
_int0_isr:
  i                    --> Y+1
    03CC D5AC      RCALL	push_lset
(0306) 
(0307) //*************************************
(0308) // void int0_isr(void)
(0309) //*************************************
(0310) #pragma interrupt_handler int0_isr:2
(0311) void int0_isr(void)
(0312) {
(0313) static unsigned char LastKey;
(0314) unsigned char i;
(0315) 
(0316) TimeOut = 0;
    03CD 2422      CLR	R2
    03CE 2433      CLR	R3
    03CF 92300061  STS	0x61,R3
    03D1 92200060  STS	0x60,R2
(0317) 
(0318) delay_ms(10);
    03D3 E00A      LDI	R16,0xA
    03D4 E010      LDI	R17,0
    03D5 D037      RCALL	_delay_ms
(0319) Key = ScanKey();
    03D6 D004      RCALL	_ScanKey
    03D7 93000062  STS	0x62,R16
(0320) }
    03D9 D5B6      RCALL	pop_lset
    03DA 9518      RETI
(0321) 
(0322) /**********************************************************
(0323) 
(0324) Name:			void ScanKey(void)
(0325) 
(0326) Description:	ScanKeyPad
(0327) 
(0328) Input:			none
(0329) 
(0330) Output:			none
(0331) 
(0332) Misc:			
(0333) 
(0334) **********************************************************/	
(0335) unsigned char ScanKey()
(0336) {
(0337) if ((!(PINC & SHIFT)) && (!(PINC & UP)) && (!(PINC & DOWN))) return RESET;
_ScanKey:
    03DB 999C      SBIC	0x13,4
    03DC C006      RJMP	0x03E3
    03DD 999D      SBIC	0x13,5
    03DE C004      RJMP	0x03E3
    03DF 999A      SBIC	0x13,2
    03E0 C002      RJMP	0x03E3
    03E1 E206      LDI	R16,0x26
    03E2 C029      RJMP	0x040C
(0338) 
(0339) if ((!(PINC & SHIFT)) && (!(PINC & UP)))    return SHIFT_UP;
    03E3 999C      SBIC	0x13,4
    03E4 C004      RJMP	0x03E9
    03E5 999D      SBIC	0x13,5
    03E6 C002      RJMP	0x03E9
    03E7 E900      LDI	R16,0x90
    03E8 C023      RJMP	0x040C
(0340) if ((!(PINC & SHIFT)) && (!(PINC & DOWN)))  return SHIFT_DOWN;
    03E9 999C      SBIC	0x13,4
    03EA C004      RJMP	0x03EF
    03EB 999A      SBIC	0x13,2
    03EC C002      RJMP	0x03EF
    03ED E804      LDI	R16,0x84
    03EE C01D      RJMP	0x040C
(0341) if ((!(PINC & SHIFT)) && (!(PINC & RIGHT))) return SHIFT_RIGHT;
    03EF 999C      SBIC	0x13,4
    03F0 C004      RJMP	0x03F5
    03F1 999B      SBIC	0x13,3
    03F2 C002      RJMP	0x03F5
    03F3 E808      LDI	R16,0x88
    03F4 C017      RJMP	0x040C
(0342) if ((!(PINC & SHIFT)) && (!(PINC & LEFT)))  return SHIFT_LEFT;
    03F5 999C      SBIC	0x13,4
    03F6 C004      RJMP	0x03FB
    03F7 9999      SBIC	0x13,1
    03F8 C002      RJMP	0x03FB
    03F9 E802      LDI	R16,0x82
    03FA C011      RJMP	0x040C
(0343) 
(0344) if (!(PINC & UP))     return UP;
    03FB 999D      SBIC	0x13,5
    03FC C002      RJMP	0x03FF
    03FD E200      LDI	R16,0x20
    03FE C00D      RJMP	0x040C
(0345) if (!(PINC & DOWN))   return DOWN;
    03FF 999A      SBIC	0x13,2
    0400 C002      RJMP	0x0403
    0401 E004      LDI	R16,4
    0402 C009      RJMP	0x040C
(0346) if (!(PINC & RIGHT))  return RIGHT;
    0403 999B      SBIC	0x13,3
    0404 C002      RJMP	0x0407
    0405 E008      LDI	R16,0x8
    0406 C005      RJMP	0x040C
(0347) if (!(PINC & LEFT))   return LEFT;
    0407 9999      SBIC	0x13,1
    0408 C002      RJMP	0x040B
    0409 E002      LDI	R16,2
    040A C001      RJMP	0x040C
(0348) 
(0349) return NONE;
    040B 2700      CLR	R16
    040C 9508      RET
_delay_ms:
  j                    --> R20
  i                    --> R22
  ms                   --> R16
    040D D55F      RCALL	push_gset2
(0350) }
(0351) 
(0352) //******************************************************************
(0353) //*	Delay millisecond Function
(0354) //*   
(0355) //*   Clock = 1Mhz
(0356) //******************************************************************
(0357) void delay_ms(int ms)
(0358) {
(0359) int i,j;
(0360) 
(0361) for (j=0;j<ms;j++) 
    040E 2744      CLR	R20
    040F 2755      CLR	R21
    0410 C00B      RJMP	0x041C
(0362) 	{
(0363) 	for (i=0;i<130;i++);
    0411 2766      CLR	R22
    0412 2777      CLR	R23
    0413 5F6F      SUBI	R22,0xFF
    0414 4F7F      SBCI	R23,0xFF
    0415 3862      CPI	R22,0x82
    0416 E0E0      LDI	R30,0
    0417 077E      CPC	R23,R30
    0418 F3D4      BLT	0x0413
(0364) 	WDR();
    0419 95A8      WDR
    041A 5F4F      SUBI	R20,0xFF
    041B 4F5F      SBCI	R21,0xFF
    041C 1740      CP	R20,R16
    041D 0751      CPC	R21,R17
    041E F394      BLT	0x0411
(0365) 	}
(0366) }
    041F D52E      RCALL	pop_gset2
    0420 9508      RET
_uart0_rx_isr:
  i                    --> R22
  ch                   --> R20
    0421 922A      ST	R2,-Y
    0422 923A      ST	R3,-Y
    0423 924A      ST	R4,-Y
    0424 930A      ST	R16,-Y
    0425 931A      ST	R17,-Y
    0426 932A      ST	R18,-Y
    0427 933A      ST	R19,-Y
    0428 938A      ST	R24,-Y
    0429 939A      ST	R25,-Y
    042A 93EA      ST	R30,-Y
    042B 93FA      ST	R31,-Y
    042C B62F      IN	R2,0x3F
    042D 922A      ST	R2,-Y
    042E D53E      RCALL	push_gset2
(0367) 
(0368) //*************************************
(0369) // void uart0_rx_isr(void)  
(0370) //
(0371) // manchester encoded byte
(0372) //*************************************
(0373) #pragma interrupt_handler uart0_rx_isr:12
(0374) void uart0_rx_isr(void)
(0375) {
(0376) unsigned char ch;
(0377) unsigned char i;
(0378) static unsigned char Error;
(0379) static unsigned char Decoded;
(0380) static unsigned char Qte;
(0381) 
(0382) ch = UDR;  //uart has received a character in UDR
    042F B14C      IN	R20,0x0C
(0383) 
(0384) if (ch == 0xf0) 
    0430 3F40      CPI	R20,0xF0
    0431 F431      BNE	0x0438
(0385)    {
(0386)    Qte = 0;
    0432 2422      CLR	R2
    0433 9220007F  STS	0x7F,R2
(0387)    Error = FALSE;
    0435 9220007D  STS	0x7D,R2
(0388)    return;
    0437 C06C      RJMP	0x04A4
(0389)    }
(0390)    
(0391) if ((ch == 0x0f) && (Error == FALSE)) 
    0438 304F      CPI	R20,0xF
    0439 F4A9      BNE	0x044F
    043A 9020007D  LDS	R2,0x7D
    043C 2022      TST	R2
    043D F489      BNE	0x044F
(0392)    {
(0393)    RxData[Qte/2] = 0x00;
    043E E022      LDI	R18,2
    043F E030      LDI	R19,0
    0440 9100007F  LDS	R16,0x7F
    0442 2711      CLR	R17
    0443 D4BD      RCALL	div16s
    0444 01F8      MOVW	R30,R16
    0445 E88B      LDI	R24,0x8B
    0446 E090      LDI	R25,0
    0447 0FE8      ADD	R30,R24
    0448 1FF9      ADC	R31,R25
    0449 2422      CLR	R2
    044A 8220      STD	Z+0,R2
(0394)    NewMessage = TRUE;
    044B E081      LDI	R24,1
    044C 93800065  STS	0x65,R24
(0395)    return;
    044E C055      RJMP	0x04A4
(0396)    }
(0397) 
(0398) Decoded = 0x00;
    044F 2422      CLR	R2
    0450 9220007E  STS	0x7E,R2
(0399) 
(0400) for (i=0;i<4;i++)
    0452 2766      CLR	R22
    0453 C01D      RJMP	0x0471
(0401) 	{
(0402) 	Decoded >>= 1;
    0454 9020007E  LDS	R2,0x7E
    0456 9426      LSR	R2
    0457 9220007E  STS	0x7E,R2
(0403) 	if ((ch & 0x03) == 0x02) Decoded |= 0x08;
    0459 2F84      MOV	R24,R20
    045A 7083      ANDI	R24,3
    045B 3082      CPI	R24,2
    045C F429      BNE	0x0462
    045D 2D82      MOV	R24,R2
    045E 6088      ORI	R24,0x8
    045F 9380007E  STS	0x7E,R24
    0461 C00C      RJMP	0x046E
(0404) 	else if ((ch & 0x03) == 0x01) Decoded = Decoded;
    0462 2F84      MOV	R24,R20
    0463 7083      ANDI	R24,3
    0464 3081      CPI	R24,1
    0465 F429      BNE	0x046B
    0466 9020007E  LDS	R2,0x7E
    0468 9220007E  STS	0x7E,R2
    046A C003      RJMP	0x046E
(0405) 	else Error = TRUE;
    046B E081      LDI	R24,1
    046C 9380007D  STS	0x7D,R24
(0406) 	ch >>= 2;
    046E 9546      LSR	R20
    046F 9546      LSR	R20
    0470 9563      INC	R22
    0471 3064      CPI	R22,4
    0472 F308      BCS	0x0454
(0407) 	}
(0408) 
(0409) if (Qte <= (MAXLEN * 2)) 
    0473 E580      LDI	R24,0x50
    0474 9020007F  LDS	R2,0x7F
    0476 1582      CP	R24,R2
    0477 F138      BCS	0x049F
(0410)    {
(0411)    if ((Qte % 2) == 0) RxData[Qte/2] = Decoded;
    0478 E012      LDI	R17,2
    0479 2D02      MOV	R16,R2
    047A D4BB      RCALL	mod8u
    047B 2300      TST	R16
    047C F479      BNE	0x048C
    047D E022      LDI	R18,2
    047E E030      LDI	R19,0
    047F 9100007F  LDS	R16,0x7F
    0481 2711      CLR	R17
    0482 D47E      RCALL	div16s
    0483 01F8      MOVW	R30,R16
    0484 E88B      LDI	R24,0x8B
    0485 E090      LDI	R25,0
    0486 0FE8      ADD	R30,R24
    0487 1FF9      ADC	R31,R25
    0488 9020007E  LDS	R2,0x7E
    048A 8220      STD	Z+0,R2
    048B C013      RJMP	0x049F
(0412)    else RxData[Qte/2] += (Decoded << 4);
    048C E022      LDI	R18,2
    048D E030      LDI	R19,0
    048E 9100007F  LDS	R16,0x7F
    0490 2711      CLR	R17
    0491 D46F      RCALL	div16s
    0492 0118      MOVW	R2,R16
    0493 E88B      LDI	R24,0x8B
    0494 E090      LDI	R25,0
    0495 0E28      ADD	R2,R24
    0496 1E39      ADC	R3,R25
    0497 9180007E  LDS	R24,0x7E
    0499 708F      ANDI	R24,0xF
    049A 9582      SWAP	R24
    049B 01F1      MOVW	R30,R2
    049C 8040      LDD	R4,Z+0
    049D 0E48      ADD	R4,R24
    049E 8240      STD	Z+0,R4
(0413)    }
(0414) Qte++;
    049F 9180007F  LDS	R24,0x7F
    04A1 5F8F      SUBI	R24,0xFF
    04A2 9380007F  STS	0x7F,R24
(0415) }
    04A4 D4A9      RCALL	pop_gset2
    04A5 9029      LD	R2,Y+
    04A6 BE2F      OUT	0x3F,R2
    04A7 91F9      LD	R31,Y+
    04A8 91E9      LD	R30,Y+
    04A9 9199      LD	R25,Y+
    04AA 9189      LD	R24,Y+
    04AB 9139      LD	R19,Y+
    04AC 9129      LD	R18,Y+
    04AD 9119      LD	R17,Y+
    04AE 9109      LD	R16,Y+
    04AF 9049      LD	R4,Y+
    04B0 9039      LD	R3,Y+
    04B1 9029      LD	R2,Y+
    04B2 9518      RETI
_AnalyseData:
  i                    --> R20
    04B3 D4A2      RCALL	push_gset1
    04B4 9722      SBIW	R28,2
(0416) 
(0417) //*************************************
(0418) // void AnalyseData(void)
(0419) //*************************************
(0420) void AnalyseData(void)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -