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

📄 remote.lst

📁 硬盘MP3播放器-MEGA128-VS1001K-USB-遥控-LCD-ICCAVR代码-硬盘-支持FAT32-单面PCB 第二部分
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0421) {
(0422) unsigned char i;
(0423) 
(0424) TIMSK &= ~0x01;		   // Timer0 overflow interrupt disable
    04B5 B789      IN	R24,0x39
    04B6 7F8E      ANDI	R24,0xFE
    04B7 BF89      OUT	0x39,R24
(0425) if (RxData[0] == 0x80) // Clear Screen
    04B8 9180008B  LDS	R24,_RxData
    04BA 3880      CPI	R24,0x80
    04BB F549      BNE	0x04E5
(0426)    {
(0427)    for (i=0;i<14;i++)
    04BC 2744      CLR	R20
    04BD C025      RJMP	0x04E3
(0428) 	  	  {
(0429) 	  	  Line[0][i] = 0x00;
    04BE ED8B      LDI	R24,0xDB
    04BF E090      LDI	R25,0
    04C0 2FE4      MOV	R30,R20
    04C1 27FF      CLR	R31
    04C2 0FE8      ADD	R30,R24
    04C3 1FF9      ADC	R31,R25
    04C4 2422      CLR	R2
    04C5 8220      STD	Z+0,R2
(0430) 	  	  Line[1][i] = 0x00;
    04C6 E083      LDI	R24,3
    04C7 E091      LDI	R25,1
    04C8 2FE4      MOV	R30,R20
    04C9 27FF      CLR	R31
    04CA 0FE8      ADD	R30,R24
    04CB 1FF9      ADC	R31,R25
    04CC 8220      STD	Z+0,R2
(0431) 	  	  Line[2][i] = 0x00;
    04CD E28B      LDI	R24,0x2B
    04CE E091      LDI	R25,1
    04CF 2FE4      MOV	R30,R20
    04D0 27FF      CLR	R31
    04D1 0FE8      ADD	R30,R24
    04D2 1FF9      ADC	R31,R25
    04D3 8220      STD	Z+0,R2
(0432) 	  	  Line[3][i] = 0x00;
    04D4 E583      LDI	R24,0x53
    04D5 E091      LDI	R25,1
    04D6 2FE4      MOV	R30,R20
    04D7 27FF      CLR	R31
    04D8 0FE8      ADD	R30,R24
    04D9 1FF9      ADC	R31,R25
    04DA 8220      STD	Z+0,R2
(0433) 	  	  Line[4][i] = 0x00;
    04DB E78B      LDI	R24,0x7B
    04DC E091      LDI	R25,1
    04DD 2FE4      MOV	R30,R20
    04DE 27FF      CLR	R31
    04DF 0FE8      ADD	R30,R24
    04E0 1FF9      ADC	R31,R25
    04E1 8220      STD	Z+0,R2
    04E2 9543      INC	R20
    04E3 304E      CPI	R20,0xE
    04E4 F2C8      BCS	0x04BE
(0434) 		  }
(0435)    }
(0436)    
(0437) if (RxData[0] == 0x81) strncpy(&Line[0][0],&RxData[1],MAXLEN);
    04E5 9180008B  LDS	R24,_RxData
    04E7 3881      CPI	R24,0x81
    04E8 F449      BNE	0x04F2
    04E9 E288      LDI	R24,0x28
    04EA E090      LDI	R25,0
    04EB 8399      STD	Y+1,R25
    04EC 8388      STD	Y+0,R24
    04ED E82C      LDI	R18,0x8C
    04EE E030      LDI	R19,0
    04EF ED0B      LDI	R16,0xDB
    04F0 E010      LDI	R17,0
    04F1 D3F8      RCALL	_strncpy
(0438) if (RxData[0] == 0x82) strncpy(&Line[1][0],&RxData[1],MAXLEN);
    04F2 9180008B  LDS	R24,_RxData
    04F4 3882      CPI	R24,0x82
    04F5 F449      BNE	0x04FF
    04F6 E288      LDI	R24,0x28
    04F7 E090      LDI	R25,0
    04F8 8399      STD	Y+1,R25
    04F9 8388      STD	Y+0,R24
    04FA E82C      LDI	R18,0x8C
    04FB E030      LDI	R19,0
    04FC E003      LDI	R16,3
    04FD E011      LDI	R17,1
    04FE D3EB      RCALL	_strncpy
(0439) if (RxData[0] == 0x83) strncpy(&Line[2][0],&RxData[1],MAXLEN);
    04FF 9180008B  LDS	R24,_RxData
    0501 3883      CPI	R24,0x83
    0502 F449      BNE	0x050C
    0503 E288      LDI	R24,0x28
    0504 E090      LDI	R25,0
    0505 8399      STD	Y+1,R25
    0506 8388      STD	Y+0,R24
    0507 E82C      LDI	R18,0x8C
    0508 E030      LDI	R19,0
    0509 E20B      LDI	R16,0x2B
    050A E011      LDI	R17,1
    050B D3DE      RCALL	_strncpy
(0440) if (RxData[0] == 0x84) strncpy(&Line[3][0],&RxData[1],MAXLEN);
    050C 9180008B  LDS	R24,_RxData
    050E 3884      CPI	R24,0x84
    050F F449      BNE	0x0519
    0510 E288      LDI	R24,0x28
    0511 E090      LDI	R25,0
    0512 8399      STD	Y+1,R25
    0513 8388      STD	Y+0,R24
    0514 E82C      LDI	R18,0x8C
    0515 E030      LDI	R19,0
    0516 E503      LDI	R16,0x53
    0517 E011      LDI	R17,1
    0518 D3D1      RCALL	_strncpy
(0441) if (RxData[0] == 0x85) strncpy(&Line[4][0],&RxData[1],MAXLEN);
    0519 9180008B  LDS	R24,_RxData
    051B 3885      CPI	R24,0x85
    051C F449      BNE	0x0526
    051D E288      LDI	R24,0x28
    051E E090      LDI	R25,0
    051F 8399      STD	Y+1,R25
    0520 8388      STD	Y+0,R24
    0521 E82C      LDI	R18,0x8C
    0522 E030      LDI	R19,0
    0523 E70B      LDI	R16,0x7B
    0524 E011      LDI	R17,1
    0525 D3C4      RCALL	_strncpy
(0442) 
(0443) if (RxData[0] == 0x90) ListType = SONG;
    0526 9180008B  LDS	R24,_RxData
    0528 3980      CPI	R24,0x90
    0529 F419      BNE	0x052D
    052A 2422      CLR	R2
    052B 92200064  STS	0x64,R2
(0444) if (RxData[0] == 0x91) ListType = DIR;
    052D 9180008B  LDS	R24,_RxData
    052F 3981      CPI	R24,0x91
    0530 F419      BNE	0x0534
    0531 E081      LDI	R24,1
    0532 93800064  STS	0x64,R24
(0445) if (RxData[0] == 0x92) ListType = PLAY;
    0534 9180008B  LDS	R24,_RxData
    0536 3982      CPI	R24,0x92
    0537 F419      BNE	0x053B
    0538 E082      LDI	R24,2
    0539 93800064  STS	0x64,R24
(0446) 
(0447) if ((RxData[0] > 0xa0) && (RxData[0] < 0xa6)) LinePtr = RxData[0] - 0xa1;
    053B EA80      LDI	R24,0xA0
    053C 9020008B  LDS	R2,_RxData
    053E 1582      CP	R24,R2
    053F F430      BCC	0x0546
    0540 2D82      MOV	R24,R2
    0541 3A86      CPI	R24,0xA6
    0542 F418      BCC	0x0546
    0543 5A81      SUBI	R24,0xA1
    0544 93800063  STS	0x63,R24
(0448) 
(0449) if (RxData[0] == 0xb0) Refresh = TRUE;
    0546 9180008B  LDS	R24,_RxData
    0548 3B80      CPI	R24,0xB0
    0549 F419      BNE	0x054D
    054A E081      LDI	R24,1
    054B 93800066  STS	0x66,R24
(0450) 
(0451) TIMSK |= 0x01;  	  // Timer0 overflow interrupt enable
    054D B789      IN	R24,0x39
    054E 6081      ORI	R24,1
    054F BF89      OUT	0x39,R24
(0452) }
    0550 9622      ADIW	R28,2
    0551 D407      RCALL	pop_gset1
    0552 9508      RET
_SendKey:
  i                    --> R20
  ch                   --> R20
    0553 D402      RCALL	push_gset1
    0554 2F40      MOV	R20,R16
(0453) 
(0454) //*************************************
(0455) // void Send(unsigned char ch)
(0456) //*************************************
(0457) void SendKey(unsigned char ch)
(0458) {
(0459) unsigned char i;
(0460) 
(0461) UCSRB &= ~0x80;  		// Disable RX interrupt
    0555 9857      CBI	0x0A,7
(0462) TxChar(0x55);			// Setup AGC
    0556 E505      LDI	R16,0x55
    0557 D00F      RCALL	_TxChar
(0463) TxChar(0x55);			// Setup AGC
    0558 E505      LDI	R16,0x55
    0559 D00D      RCALL	_TxChar
(0464) TxChar(0xf0);			// Start of Frame
    055A EF00      LDI	R16,0xF0
    055B D00B      RCALL	_TxChar
(0465) TxChar(ch);				// Send value
    055C 2F04      MOV	R16,R20
    055D D009      RCALL	_TxChar
(0466) TxChar(~ch);			// Send value
    055E 2F04      MOV	R16,R20
    055F 9500      COM	R16
    0560 D006      RCALL	_TxChar
(0467) TxChar(0x0f);			// End of Frame
    0561 E00F      LDI	R16,0xF
    0562 D004      RCALL	_TxChar
(0468) 
(0469) i = UDR;  				// Clear uart received character 
    0563 B14C      IN	R20,0x0C
(0470) UCSRB |= 0x80;			// Enable RX interrupt
    0564 9A57      SBI	0x0A,7
(0471) }
    0565 D3F3      RCALL	pop_gset1
    0566 9508      RET
(0472) 
(0473) //*************************************
(0474) // void TxChar(unsigned char ch)
(0475) //*************************************
(0476) void TxChar(unsigned char ch)
(0477) {
(0478) TIMSK &= ~0x01;
_TxChar:
  ch                   --> R16
    0567 B789      IN	R24,0x39
    0568 7F8E      ANDI	R24,0xFE
    0569 BF89      OUT	0x39,R24
(0479) while (!(UCSRA & 0x20));      // Wait for empty transmit buffer
    056A 9B5D      SBIS	0x0B,5
    056B CFFE      RJMP	0x056A
(0480) TCCR1A = 0x40; 	 			  // Enable 38khz
    056C E480      LDI	R24,0x40
    056D BD8F      OUT	0x2F,R24
(0481) UDR = ch;	  		   		  // Write char
    056E B90C      OUT	0x0C,R16
(0482) while (!(UCSRA & 0x40));      // Wait for transmit finish
    056F 9B5E      SBIS	0x0B,6
    0570 CFFE      RJMP	0x056F
(0483) UCSRA = 0x40;  	 			  // Clear transmit finish flag
    0571 E480      LDI	R24,0x40
    0572 B98B      OUT	0x0B,R24
(0484) TCCR1A = 0x00;				  // Disable 38khz
    0573 2422      CLR	R2
    0574 BC2F      OUT	0x2F,R2
(0485) TIMSK |= 0x01;
    0575 B789      IN	R24,0x39
    0576 6081      ORI	R24,1
    0577 BF89      OUT	0x39,R24
(0486) }
    0578 9508      RET
_LcdPower:
  stat                 --> R20
    0579 D3DC      RCALL	push_gset1
    057A 2F40      MOV	R20,R16
FILE: C:\DATA\MP3\Remote\Code\NokiaLCD.c
(0001) /*--------------------------------------------------------------------------------------------------
(0002) 
(0003)   Name         :  NokiaLCD.c
(0004) 
(0005)   Description  :  This is a driver for the Nokia 84x48 graphic LCD.
(0006) 
(0007)   Author       :  2003-03-08 - Sylvain Bissonnette
(0008) 
(0009)   History      :  2003-02-08 - First release (v0.1) derived from Sylvain Bissonnette code base.
(0010)                   2003-03-09 - v0.2, Louis Frigon: 2x fonts support.
(0011)                   2003-03-20 - v0.3: Serialization optimized,
(0012) 				  
(0013)   Info		   :  Max RAM    - 512 byte
(0014)   			   :  Max Stack  - 10  byte
(0015) 
(0016) --------------------------------------------------------------------------------------------------*/
(0017) #include <macros.h>
(0018) #include <iom8v.h>
(0019) //#include <stdio.h>
(0020) 
(0021) #include "NokiaLCD.h"
(0022) 
(0023) #define LCD_FIRMWARE_VERSION       0.3
(0024) 
(0025) /*--------------------------------------------------------------------------------------------------
(0026)                                 Private function prototypes
(0027) --------------------------------------------------------------------------------------------------*/
(0028) //  Function prototypes are mandatory otherwise the compiler generates unreliable code.
(0029) 
(0030) static void LcdSend    ( byte data, LcdCmdData cd );
(0031) static void Delay      ( void );
(0032) 
(0033) /*--------------------------------------------------------------------------------------------------
(0034)                                      Character generator
(0035) 
(0036)              This table defines the standard ASCII characters in a 5x7 dot format.
(0037) --------------------------------------------------------------------------------------------------*/
(0038) static const byte FontLookup [][5] =
(0039) {
(0040)     { 0x00, 0x00, 0x00, 0x00, 0x00 },  // sp
(0041)     { 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !
(0042)     { 0x00, 0x07, 0x00, 0x07, 0x00 },   // "
(0043)     { 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // #
(0044)     { 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $
(0045)     { 0xc4, 0xc8, 0x10, 0x26, 0x46 },   // %
(0046)     { 0x36, 0x49, 0x55, 0x22, 0x50 },   // &
(0047)     { 0x00, 0x05, 0x03, 0x00, 0x00 },   // '
(0048)     { 0x00, 0x1c, 0x22, 0x41, 0x00 },   // (
(0049)     { 0x00, 0x41, 0x22, 0x1c, 0x00 },   // )
(0050)     { 0x14, 0x08, 0x3E, 0x08, 0x14 },   // *
(0051)     { 0x08, 0x08, 0x3E, 0x08, 0x08 },   // +
(0052)     { 0x00, 0x00, 0x50, 0x30, 0x00 },   // ,
(0053)     { 0x10, 0x10, 0x10, 0x10, 0x10 },   // -
(0054)     { 0x00, 0x60, 0x60, 0x00, 0x00 },   // .
(0055)     { 0x20, 0x10, 0x08, 0x04, 0x02 },   // /
(0056)     { 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0
(0057)     { 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1
(0058)     { 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2
(0059)     { 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3
(0060)     { 0x18, 0x14, 0x12, 0x7F, 0x10 },   // 4
(0061)     { 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5
(0062)     { 0x3C, 0x4A, 0x49, 0x49, 0x30 },   // 6
(0063)     { 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7
(0064)     { 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8
(0065)     { 0x06, 0x49, 0x49, 0x29, 0x1E },   // 9
(0066)     { 0x00, 0x36, 0x36, 0x00, 0x00 },   // :
(0067)     { 0x00, 0x56, 0x36, 0x00, 0x00 },   // ;
(0068)     { 0x08, 0x14, 0x22, 0x41, 0x00 },   // <
(0069)     { 0x14, 0x14, 0x14, 0x14, 0x14 },   // =
(0070)     { 0x00, 0x41, 0x22, 0x14, 0x08 },   // >
(0071)     { 0x02, 0x01, 0x51, 0x09, 0x06 },   // ?
(0072)     { 0x32, 0x49, 0x59, 0x51, 0x3E },   // @
(0073)     { 0x7E, 0x11, 0x11, 0x11, 0x7E },   // A
(0074)     { 0x7F, 0x49, 0x49, 0x49, 0x36 },   // B
(0075)     { 0x3E, 0x41, 0x41, 0x41, 0x22 },   // C
(0076)     { 0x7F, 0x41, 0x41, 0x22, 0x1C },   // D
(0077)     { 0x7F, 0x49, 0x49, 0x49, 0x41 },   // E
(0078)     { 0x7F, 0x09, 0x09, 0x09, 0x01 },   // F
(0079)     { 0x3E, 0x41, 0x49, 0x49, 0x7A },   // G
(0080)     { 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H
(0081)     { 0x00, 0x41, 0x7F, 0x41, 0x00 },   // I
(0082)     { 0x20, 0x40, 0x41, 0x3F, 0x01 },   // J
(0083)     { 0x7F, 0x08, 0x14, 0x22, 0x41 },   // K
(0084)     { 0x7F, 0x40, 0x40, 0x40, 0x40 },   // L
(0085)     { 0x7F, 0x02, 0x0C, 0x02, 0x7F },   // M
(0086)     { 0x7F, 0x04, 0x08, 0x10, 0x7F },   // N
(0087)     { 0x3E, 0x41, 0x41, 0x41, 0x3E },   // O
(0088)     { 0x7F, 0x09, 0x09, 0x09, 0x06 },   // P
(0089)     { 0x3E, 0x41, 0x51, 0x21, 0x5E },   // Q
(0090)     { 0x7F, 0x09, 0x19, 0x29, 0x46 },   // R
(0091)     { 0x46, 0x49, 0x49, 0x49, 0x31 },   // S
(0092)     { 0x01, 0x01, 0x7F, 0x01, 0x01 },   // T
(0093)     { 0x3F, 0x40, 0x40, 0x40, 0x3F },   // U
(0094)     { 0x1F, 0x20, 0x40, 0x20, 0x1F },   // V
(0095)     { 0x3F, 0x40, 0x38, 0x40, 0x3F },   // W
(0096)     { 0x63, 0x14, 0x08, 0x14, 0x63 },   // X
(0097)     { 0x07, 0x08, 0x70, 0x08, 0x07 },   // Y
(0098)     { 0x61, 0x51, 0x49, 0x45, 0x43 },   // Z
(0099)     { 0x00, 0x7F, 0x41, 0x41, 0x00 },   // [
(0100)     { 0x02, 0x04, 0x08, 0x10, 0x20 },   // back slash
(0101)     { 0x00, 0x41, 0x41, 0x7f, 0x00 },   // ]
(0102)     { 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^
(0103)     { 0x40, 0x40, 0x40, 0x40, 0x40 },   // _
(0104)     { 0x00, 0x01, 0x02, 0x04, 0x00 },   // '
(0105)     { 0x20, 0x54, 0x54, 0x54, 0x78 },   // a
(0106)     { 0x7F, 0x48, 0x44, 0x44, 0x38 },   // b
(0107)     { 0x38, 0x44, 0x44, 0x44, 0x20 },   // c
(0108)     { 0x38, 0x44, 0x44, 0x48, 0x7F },   // d
(0109)     { 0x38, 0x54, 0x54, 0x54, 0x18 },   // e
(0110)     { 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f
(0111)     { 0x0C, 0x52, 0x52, 0x52, 0x3E },   // g
(0112)     { 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h
(0113)     { 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i
(0114)     { 0x20, 0x40, 0x44, 0x3D, 0x00 },   // j
(0115)     { 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k
(0116)     { 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l
(0117)     { 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m
(0118)     { 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n
(0119)     { 0x38, 0x44, 0x44, 0x44, 0x38 },   // o
(0120)     { 0x7C, 0x14, 0x14, 0x14, 0x08 },   // p
(0121)     { 0x08, 0x14, 0x14, 0x18, 0x7C },   // q
(0122)     { 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r
(0123)     { 0x48, 0x54, 0x54, 0x54, 0x20 },   // s
(0124)     { 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t
(0125)     { 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u
(0126)     { 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v
(0127)     { 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w
(0128)     { 0x44, 0x28, 0x10, 0x28, 0x44 },   // x
(0129)     { 0x0C, 0x50, 0x50, 0x50, 0x3C },   // y
(0130)     { 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z
(0131)     { 0x00, 0x08, 0x36, 0x41, 0x00 },   // {
(0132)     { 0x00, 0x00, 0x7f, 0x00, 0x00 },   // |
(0133)     { 0x00, 0x41, 0x36, 0x08, 0x00 },   // }
(0134)     { 0x04, 0x02, 0x04, 0x08, 0x04 },   // ~
(0135)     { 0x00, 0x00, 0x36, 0x00, 0x00 },   // 

⌨️ 快捷键说明

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