📄 remote.lst
字号:
(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 + -