📄 3510i.lst
字号:
(0344) LCD_SendData(0x06);
1B21 E006 LDI R16,6
1B22 DEC8 RCALL _LCD_SendData
(0345) LCD_SendData(0x08);
1B23 E008 LDI R16,0x8
1B24 DEC6 RCALL _LCD_SendData
(0346) LCD_SendData(0x0f);
1B25 E00F LDI R16,0xF
1B26 DEC4 RCALL _LCD_SendData
(0347) //blue
(0348) LCD_SendData(0x00);
1B27 2700 CLR R16
1B28 DEC2 RCALL _LCD_SendData
(0349) LCD_SendData(0x03);
1B29 E003 LDI R16,3
1B2A DEC0 RCALL _LCD_SendData
(0350) LCD_SendData(0x06);
1B2B E006 LDI R16,6
1B2C DEBE RCALL _LCD_SendData
(0351) LCD_SendData(0x0f);
1B2D E00F LDI R16,0xF
1B2E DEBC RCALL _LCD_SendData
(0352) LCD_DataOver();
1B2F 9AC4 SBI 0x18,4
(0353)
(0354) LCD_SendCommand(0x25); //write contrast
1B30 E205 LDI R16,0x25
1B31 DE7B RCALL _LCD_SendCommand
(0355) LCD_SendData(71);
1B32 E407 LDI R16,0x47
1B33 DEB7 RCALL _LCD_SendData
(0356) LCD_DataOver();
1B34 9AC4 SBI 0x18,4
(0357)
(0358) LCD_BGColor = 0x00;
1B35 2422 CLR R2
1B36 922000BE STS _LCD_BGColor,R2
(0359) LCD_PenColor = 0xff;
1B38 EF8F LDI R24,0xFF
1B39 938000BD STS _LCD_PenColor,R24
1B3B 940E1E73 CALL pop_gset3x
1B3D 9508 RET
_LCD_ClearScreen:
y --> R10
x --> R12
1B3E 940E1E88 CALL push_gset4x
(0360) }
(0361)
(0362) void LCD_ClearScreen(void)
(0363) {
(0364) uchar x, y;
(0365) LCD_SendCommand(0x2a); //column address set
1B40 E20A LDI R16,0x2A
1B41 DE6B RCALL _LCD_SendCommand
(0366) LCD_SendData(0);
1B42 2700 CLR R16
1B43 DEA7 RCALL _LCD_SendData
(0367) LCD_SendData(97);
1B44 E601 LDI R16,0x61
1B45 DEA5 RCALL _LCD_SendData
(0368) LCD_DataOver();
1B46 9AC4 SBI 0x18,4
(0369)
(0370) LCD_SendCommand(0x2b); //page address set
1B47 E20B LDI R16,0x2B
1B48 DE64 RCALL _LCD_SendCommand
(0371) LCD_SendData(0);
1B49 2700 CLR R16
1B4A DEA0 RCALL _LCD_SendData
(0372) LCD_SendData(66);
1B4B E402 LDI R16,0x42
1B4C DE9E RCALL _LCD_SendData
(0373) LCD_DataOver();
1B4D 9AC4 SBI 0x18,4
(0374)
(0375) LCD_SendCommand(0x2c); //memory write
1B4E E20C LDI R16,0x2C
1B4F DE5D RCALL _LCD_SendCommand
(0376) for(y = 0; y < 67; y ++)
1B50 24AA CLR R10
1B51 C00A RJMP 0x1B5C
(0377) for(x = 0; x < 98; x ++)
1B52 24CC CLR R12
1B53 C004 RJMP 0x1B58
(0378) LCD_SendData(LCD_BGColor);
1B54 910000BE LDS R16,_LCD_BGColor
1B56 DE94 RCALL _LCD_SendData
1B57 94C3 INC R12
1B58 2D8C MOV R24,R12
1B59 3682 CPI R24,0x62
1B5A F3C8 BCS 0x1B54
1B5B 94A3 INC R10
1B5C 2D8A MOV R24,R10
1B5D 3483 CPI R24,0x43
1B5E F398 BCS 0x1B52
(0379) LCD_DataOver();
1B5F 9AC4 SBI 0x18,4
1B60 940E1E7F CALL pop_gset4x
1B62 9508 RET
_LCD_ReadPixel:
y --> R10
x --> R14
b --> R12
y2 --> Y+12
x2 --> Y+10
y1 --> R14
x1 --> Y+6
1B63 940E1E56 CALL push_arg4
1B65 940E1E8C CALL push_gset5x
1B67 2EE2 MOV R14,R18
1B68 84CE LDD R12,Y+14
1B69 84DF LDD R13,Y+15
(0380) }
(0381)
(0382) void LCD_ReadPixel(uchar x1, uchar y1, uchar x2, uchar y2, uchar *b)
(0383) {
(0384) uchar x, y;
(0385) LCD_SendCommand(0x2a); //column address set
1B6A E20A LDI R16,0x2A
1B6B DE41 RCALL _LCD_SendCommand
(0386) LCD_SendData(x1);
1B6C 810E LDD R16,Y+6
1B6D DE7D RCALL _LCD_SendData
(0387) LCD_SendData(x2);
1B6E 850A LDD R16,Y+10
1B6F DE7B RCALL _LCD_SendData
(0388) LCD_DataOver();
1B70 9AC4 SBI 0x18,4
(0389)
(0390) LCD_SendCommand(0x2b); //page address set
1B71 E20B LDI R16,0x2B
1B72 DE3A RCALL _LCD_SendCommand
(0391) LCD_SendData(y1);
1B73 2D0E MOV R16,R14
1B74 DE76 RCALL _LCD_SendData
(0392) LCD_SendData(y2);
1B75 850C LDD R16,Y+12
1B76 DE74 RCALL _LCD_SendData
(0393) LCD_DataOver();
1B77 9AC4 SBI 0x18,4
(0394)
(0395) LCD_SendCommand(0x2e); //RAM data read
1B78 E20E LDI R16,0x2E
1B79 DE33 RCALL _LCD_SendCommand
(0396)
(0397) for(y = y1; y <= y2; y ++)
1B7A 2CAE MOV R10,R14
1B7B C00C RJMP 0x1B88
(0398) for(x = x1; x <= x2; x ++)
1B7C 80EE LDD R14,Y+6
1B7D C006 RJMP 0x1B84
(0399) {
(0400) LCD_ReadDummy();
1B7E DEAA RCALL _LCD_ReadDummy
(0401) *(b ++) = LCD_ReadData();
1B7F DEAF RCALL _LCD_ReadData
1B80 01F6 MOVW R30,R12
1B81 9301 ST R16,Z+
1B82 016F MOVW R12,R30
1B83 94E3 INC R14
1B84 840A LDD R0,Y+10
1B85 140E CP R0,R14
1B86 F7B8 BCC 0x1B7E
1B87 94A3 INC R10
1B88 840C LDD R0,Y+12
1B89 140A CP R0,R10
1B8A F788 BCC 0x1B7C
(0402) }
(0403) LCD_DataOver();
1B8B 9AC4 SBI 0x18,4
(0404)
(0405) LCD_SendCommand(0x00); //NOP
1B8C 2700 CLR R16
1B8D DE1F RCALL _LCD_SendCommand
(0406) LCD_SendData(0x00);
1B8E 2700 CLR R16
1B8F DE5B RCALL _LCD_SendData
(0407) LCD_DataOver();
1B90 9AC4 SBI 0x18,4
1B91 940E1E82 CALL pop_gset5x
1B93 9624 ADIW R28,4
1B94 9508 RET
_LCD_WritePixel:
y --> R10
x --> R14
y2 --> R12
x2 --> Y+12
y1 --> Y+10
x1 --> Y+8
b --> Y+6
1B95 940E1E56 CALL push_arg4
1B97 940E1E8C CALL push_gset5x
1B99 84CE LDD R12,Y+14
(0408) }
(0409)
(0410) void LCD_WritePixel(const unsigned char *b, uchar x1, uchar y1, uchar x2, uchar y2)
(0411) {
(0412) uchar x, y;
(0413) LCD_SendCommand(0x2a); //column address set
1B9A E20A LDI R16,0x2A
1B9B DE11 RCALL _LCD_SendCommand
(0414) LCD_SendData(x1);
1B9C 8508 LDD R16,Y+8
1B9D DE4D RCALL _LCD_SendData
(0415) LCD_SendData(x2);
1B9E 850C LDD R16,Y+12
1B9F DE4B RCALL _LCD_SendData
(0416) LCD_DataOver();
1BA0 9AC4 SBI 0x18,4
(0417)
(0418) LCD_SendCommand(0x2b); //page address set
1BA1 E20B LDI R16,0x2B
1BA2 DE0A RCALL _LCD_SendCommand
(0419) LCD_SendData(y1);
1BA3 850A LDD R16,Y+10
1BA4 DE46 RCALL _LCD_SendData
(0420) LCD_SendData(y2);
1BA5 2D0C MOV R16,R12
1BA6 DE44 RCALL _LCD_SendData
(0421) LCD_DataOver();
1BA7 9AC4 SBI 0x18,4
(0422)
(0423) LCD_SendCommand(0x2c); //memory write
1BA8 E20C LDI R16,0x2C
1BA9 DE03 RCALL _LCD_SendCommand
(0424) for(y = y1; y <= y2; y ++)
1BAA 84AA LDD R10,Y+10
1BAB C010 RJMP 0x1BBC
(0425) for(x = x1; x <= x2; x ++)
1BAC 84E8 LDD R14,Y+8
1BAD C00A RJMP 0x1BB8
(0426) {
(0427) LCD_SendData(*(b ++));
1BAE 802E LDD R2,Y+6
1BAF 803F LDD R3,Y+7
1BB0 01C1 MOVW R24,R2
1BB1 9601 ADIW R24,1
1BB2 839F STD Y+7,R25
1BB3 838E STD Y+6,R24
1BB4 01F1 MOVW R30,R2
1BB5 9104 LPM R16,0(Z)
1BB6 DE34 RCALL _LCD_SendData
1BB7 94E3 INC R14
1BB8 840C LDD R0,Y+12
1BB9 140E CP R0,R14
1BBA F798 BCC 0x1BAE
1BBB 94A3 INC R10
1BBC 14CA CP R12,R10
1BBD F770 BCC 0x1BAC
(0428) ///LCD_SendData(*(b ++));
(0429) ///LCD_SendData(*(b ++));
(0430) }
(0431) LCD_DataOver();
1BBE 9AC4 SBI 0x18,4
1BBF 940E1E82 CALL pop_gset5x
1BC1 9624 ADIW R28,4
1BC2 9508 RET
_LCD_WriteEnglishChar:
temp --> Y+0
row --> R10
line --> R12
y --> R14
x --> Y+56
c --> Y+54
1BC3 940E1E56 CALL push_arg4
1BC5 940E1E8C CALL push_gset5x
1BC7 97E0 SBIW R28,0x30
1BC8 ACEA LDD R14,Y+58
(0432) }
(0433)
(0434) void LCD_WriteEnglishChar(uchar c, uchar x, uchar y)
(0435) {
(0436) uchar row,line;
(0437) uchar temp[6][8];
(0438) c-=32;
1BC9 A98E LDD R24,Y+54
1BCA 5280 SUBI R24,0x20
1BCB AB8E STD Y+54,R24
(0439) for(row=0;row<6;row++)
1BCC 24AA CLR R10
1BCD C036 RJMP 0x1C04
(0440) {
(0441) for(line=0;line<8;line++)
1BCE 24CC CLR R12
1BCF C02F RJMP 0x1BFF
(0442) {
(0443) if(get_bit(font6x8[c][row],line))
1BD0 E086 LDI R24,6
1BD1 A80E LDD R0,Y+54
1BD2 9D80 MUL R24,R0
1BD3 0110 MOVW R2,R0
1BD4 E782 LDI R24,0x72
1BD5 E29B LDI R25,0x2B
1BD6 0E28 ADD R2,R24
1BD7 1E39 ADC R3,R25
1BD8 2DEA MOV R30,R10
1BD9 27FF CLR R31
1BDA 0DE2 ADD R30,R2
1BDB 1DF3 ADC R31,R3
1BDC 91E4 LPM R30,0(Z)
1BDD E001 LDI R16,1
1BDE 2D1C MOV R17,R12
1BDF 940E1E99 CALL lsl8
1BE1 23E0 AND R30,R16
1BE2 F071 BEQ 0x1BF1
(0444) temp[row][line]=LCD_PenColor;
1BE3 E088 LDI R24,0x8
1BE4 9D8A MUL R24,R10
1BE5 0110 MOVW R2,R0
1BE6 01CE MOVW R24,R28
1BE7 0E28 ADD R2,R24
1BE8 1E39 ADC R3,R25
1BE9 2DEC MOV R30,R12
1BEA 27FF CLR R31
1BEB 0DE2 ADD R30,R2
1BEC 1DF3 ADC R31,R3
1BED 902000BD LDS R2,_LCD_PenColor
1BEF 8220 STD Z+0,R2
1BF0 C00D RJMP 0x1BFE
(0445) else
(0446) temp[row][line]=LCD_BGColor;
1BF1 E088 LDI R24,0x8
1BF2 9D8A MUL R24,R10
1BF3 0110 MOVW R2,R0
1BF4 01CE MOVW R24,R28
1BF5 0E28 ADD R2,R24
1BF6 1E39 ADC R3,R25
1BF7 2DEC MOV R30,R12
1BF8 27FF CLR R31
1BF9 0DE2 ADD R30,R2
1BFA 1DF3 ADC R31,R3
1BFB 902000BE LDS R2,_LCD_BGColor
1BFD 8220 STD Z+0,R2
1BFE 94C3 INC R12
1BFF 2D8C MOV R24,R12
1C00 3088 CPI R24,0x8
1C01 F408 BCC 0x1C03
1C02 CFCD RJMP 0x1BD0
1C03 94A3 INC R10
1C04 2D8A MOV R24,R10
1C05 3086 CPI R24,6
1C06 F408 BCC 0x1C08
1C07 CFC6 RJMP 0x1BCE
(0447) }
(0448) }
(0449) LCD_SendCommand(0x2a); //column address set
1C08 E20A LDI R16,0x2A
1C09 DDA3 RCALL _LCD_SendCommand
(0450) LCD_SendData(x);
1C0A AD08 LDD R16,Y+56
1C0B DDDF RCALL _LCD_SendData
(0451) LCD_SendData(x+5);
1C0C AD08 LDD R16,Y+56
1C0D 5F0B SUBI R16,0xFB
1C0E DDDC RCALL _LCD_SendData
(0452) LCD_DataOver();
1C0F 9AC4 SBI 0x18,4
(0453)
(0454) LCD_SendCommand(0x2b); //page address set
1C10 E20B LDI R16,0x2B
1C11 DD9B RCALL _LCD_SendCommand
(0455) LCD_SendData(y);
1C12 2D0E MOV R16,R14
1C13 DDD7 RCALL _LCD_SendData
(0456) LCD_SendData(y+7);
1C14 2D0E MOV R16,R14
1C15 5F09 SUBI R16,0xF9
1C16 DDD4 RCALL _LCD_SendData
(0457) LCD_DataOver();
1C17 9AC4 SBI 0x18,4
(0458)
(0459) LCD_SendCommand(0x2c);
1C18 E20C LDI R16,0x2C
1C19 DD93 RCALL _LCD_SendCommand
(0460) for(row=0;row<8;row++)
1C1A 24AA CLR R10
1C1B C013 RJMP 0x1C2F
(0461) for(line=0;line<6;line++)
1C1C 24CC CLR R12
1C1D C00D RJMP 0x1C2B
(0462) LCD_SendData(temp[line][row]);
1C1E E088 LDI R24,0x8
1C1F 9D8C MUL R24,R12
1C20 0110 MOVW R2,R0
1C21 01CE MOVW R24,R28
1C22 0E28 ADD R2,R24
1C23 1E39 ADC R3,R25
1C24 2DEA MOV R30,R10
1C25 27FF CLR R31
1C26 0DE2 ADD R30,R2
1C27 1DF3 ADC R31,R3
1C28 8100 LDD R16,Z+0
1C29 DDC1 RCALL _LCD_SendData
1C2A 94C3 INC R12
1C2B 2D8C MOV R24,R12
1C2C 3086 CPI R24,6
1C2D F380 BCS 0x1C1E
1C2E 94A3 INC R10
1C2F 2D8A MOV R24,R10
1C30 3088 CPI R24,0x8
1C31 F350 BCS 0x1C1C
(0463) LCD_DataOver();
1C32 9AC4 SBI 0x18,4
1C33 96E0 ADIW R28,0x30
1C34 940E1E82 CALL pop_gset5x
1C36 9624 ADIW R28,4
1C37 9508 RET
_LCD_WriteEnglishString:
y --> R10
x --> R12
string --> R14
1C38 940E1E8C CALL push_gset5x
1C3A 2EC2 MOV R12,R18
1C3B 0178 MOVW R14,R16
1C3C 9721 SBIW R28,1
1C3D 80AF LDD R10,Y+7
(0464) }
(0465) void
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -