📄 me.lst
字号:
(0087) NOP();
028D E090 LDI R25,0
028E 017C MOVW R14,R24
028F C002 RJMP 0x0292
0290 24EE CLR R14
0291 24FF CLR R15
0292 90200088 LDS R2,_glcd_Clip+3
0294 8808 LDD R0,Y+16
(0088) NOP();
(0089) NOP();
(0090)
(0091) }
(0092) }
(0093)
(0094)
(0095)
(0096) void glcdDoFillRect(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) {
0295 1420 CP R2,R0
0296 F420 BCC 0x029B
0297 E081 LDI R24,1
0298 E090 LDI R25,0
0299 015C MOVW R10,R24
029A C002 RJMP 0x029D
029B 24AA CLR R10
029C 24BB CLR R11
029D 90200086 LDS R2,_glcd_Clip+1
029F 1542 CP R20,R2
02A0 F418 BCC 0x02A4
02A1 E061 LDI R22,1
02A2 E070 LDI R23,0
02A3 C002 RJMP 0x02A6
02A4 2766 CLR R22
02A5 2777 CLR R23
02A6 0116 MOVW R2,R12
02A7 282E OR R2,R14
02A8 283F OR R3,R15
02A9 282A OR R2,R10
02AA 283B OR R3,R11
02AB 2A26 OR R2,R22
02AC 2A37 OR R3,R23
02AD 2022 TST R2
02AE F411 BNE 0x02B1
02AF 2033 TST R3
02B0 F009 BEQ 0x02B2
02B1 C056 RJMP 0x0308
02B2 90200085 LDS R2,_glcd_Clip
02B4 840E LDD R0,Y+14
02B5 1402 CP R0,R2
02B6 F408 BCC 0x02B8
02B7 862E STD Y+14,R2
02B8 90200086 LDS R2,_glcd_Clip+1
02BA 8808 LDD R0,Y+16
02BB 1402 CP R0,R2
02BC F408 BCC 0x02BE
02BD 8A28 STD Y+16,R2
02BE 90200087 LDS R2,_glcd_Clip+2
02C0 880A LDD R0,Y+18
02C1 1420 CP R2,R0
02C2 F408 BCC 0x02C4
02C3 8A2A STD Y+18,R2
02C4 90200088 LDS R2,_glcd_Clip+3
02C6 1624 CP R2,R20
02C7 F408 BCC 0x02C9
02C8 2D42 MOV R20,R2
02C9 880A LDD R0,Y+18
02CA 850E LDD R16,Y+14
(0097)
02CB 1600 CP R0,R16
02CC F018 BCS 0x02D0
02CD E061 LDI R22,1
02CE E070 LDI R23,0
02CF C002 RJMP 0x02D2
02D0 2766 CLR R22
(0098) char x, y;
02D1 2777 CLR R23
02D2 8808 LDD R0,Y+16
02D3 1540 CP R20,R0
02D4 F020 BCS 0x02D9
02D5 E081 LDI R24,1
02D6 E090 LDI R25,0
(0099) //RGB(r,g,b);
02D7 015C MOVW R10,R24
02D8 C002 RJMP 0x02DB
02D9 24AA CLR R10
02DA 24BB CLR R11
02DB 011B MOVW R2,R22
02DC 202A AND R2,R10
(0100)
02DD 203B AND R3,R11
02DE 2022 TST R2
02DF F411 BNE 0x02E2
02E0 2033 TST R3
02E1 F131 BEQ 0x0308
(0101) if ((x1 > glcd_Clip.X2) | (x2 < glcd_Clip.X1) | (y1 > glcd_Clip.Y2) | (y2 < glcd_Clip.Y1)) {return;}
(0102) if (x1 < glcd_Clip.X1) {x1 = glcd_Clip.X1;}
02E2 2E24 MOV R2,R20
02E3 2433 CLR R3
02E4 823B STD Y+3,R3
02E5 822A STD Y+2,R2
02E6 8828 LDD R2,Y+16
02E7 2433 CLR R3
02E8 8239 STD Y+1,R3
02E9 8228 STD Y+0,R2
02EA 892A LDD R18,Y+18
02EB 2733 CLR R19
02EC 850E LDD R16,Y+14
02ED 2711 CLR R17
02EE D7AD RCALL _glcdn_SetPageArea
02EF E50C LDI R16,0x5C
02F0 E010 LDI R17,0
02F1 940E0B0E CALL _glcdn_WriteCommand
02F3 88A8 LDD R10,Y+16
02F4 C011 RJMP 0x0306
02F5 84EE LDD R14,Y+14
02F6 C00B RJMP 0x0302
02F7 91000060 LDS R16,0x60
02F9 2711 CLR R17
02FA 940E0B01 CALL _glcdn_WriteData
(0103) if (y1 < glcd_Clip.Y1) {y1 = glcd_Clip.Y1;}
(0104) if (x2 > glcd_Clip.X2) {x2 = glcd_Clip.X2;}
02FC 91000061 LDS R16,0x61
02FE 2711 CLR R17
02FF 940E0B01 CALL _glcdn_WriteData
0301 94E3 INC R14
0302 880A LDD R0,Y+18
0303 140E CP R0,R14
0304 F790 BCC 0x02F7
0305 94A3 INC R10
0306 154A CP R20,R10
0307 F768 BCC 0x02F5
(0105) if (y2 > glcd_Clip.Y2) {y2 = glcd_Clip.Y2;}
0308 9624 ADIW R28,4
0309 940E1003 CALL pop_gset5
(0106)
030B 9624 ADIW R28,4
030C 9508 RET
(0107) if ((x1 <= x2) & (y1 <= y2))
_glcdFillRect:
t --> R14
t --> R14
y2 --> R12
x2 --> R10
y1 --> R22
x1 --> R20
030D 940E1029 CALL push_gset5
(0108) {
030F 2F62 MOV R22,R18
0310 2F40 MOV R20,R16
0311 9723 SBIW R28,3
0312 84AD LDD R10,Y+13
(0109) glcdn_SetPageArea(x1,x2,y1,y2);
0313 84CF LDD R12,Y+15
0314 16A4 CP R10,R20
0315 F418 BCC 0x0319
0316 2EE4 MOV R14,R20
0317 2D4A MOV R20,R10
0318 2CAE MOV R10,R14
0319 16C6 CP R12,R22
031A F418 BCC 0x031E
031B 2EE6 MOV R14,R22
031C 2D6C MOV R22,R12
031D 2CCE MOV R12,R14
(0110) glcdn_WriteCommand(MEMWRITE);
(0111) for (y = y1; y <= y2; y++) {
(0112) for (x = x1; x <= x2; x++) {
(0113) glcdn_WriteData(Color1);
031E 82CA STD Y+2,R12
031F 82A8 STD Y+0,R10
0320 2F26 MOV R18,R22
0321 2F04 MOV R16,R20
0322 DF53 RCALL _glcdDoFillRect
0323 9623 ADIW R28,3
0324 940E1003 CALL pop_gset5
0326 9508 RET
_glcdRectangle:
t --> R14
t --> R14
y2 --> R12
x2 --> R10
y1 --> R22
x1 --> R20
0327 940E1029 CALL push_gset5
(0114) glcdn_WriteData(Color2);
(0115) }
(0116) }
(0117) }
0329 2F62 MOV R22,R18
032A 2F40 MOV R20,R16
032B 9723 SBIW R28,3
032C 84AD LDD R10,Y+13
(0118) }
032D 84CF LDD R12,Y+15
032E 16A4 CP R10,R20
032F F418 BCC 0x0333
0330 2EE4 MOV R14,R20
0331 2D4A MOV R20,R10
(0119)
(0120) void glcdFillRect(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) {
0332 2CAE MOV R10,R14
0333 16C6 CP R12,R22
0334 F418 BCC 0x0338
0335 2EE6 MOV R14,R22
0336 2D6C MOV R22,R12
(0121)
0337 2CCE MOV R12,R14
0338 9020006D LDS R2,_cofg
033A 9030006E LDS R3,_cofg+1
033C FE37 SBRS R3,7
033D C017 RJMP 0x0355
033E 0181 MOVW R16,R2
033F 940E0B45 CALL _RGBToChar
(0122) glcdDoCheckCoord(x1, x2);
(0123) glcdDoCheckCoord(y1, y2);
(0124) //RGB(r,g,b);
(0125) glcdDoFillRect(x1, y1, x2, y2);
0341 836A STD Y+2,R22
0342 82A8 STD Y+0,R10
0343 2F26 MOV R18,R22
0344 2F04 MOV R16,R20
(0126) }
0345 DF30 RCALL _glcdDoFillRect
0346 82CA STD Y+2,R12
0347 82A8 STD Y+0,R10
0348 2F26 MOV R18,R22
0349 2D0A MOV R16,R10
(0127)
034A DF2B RCALL _glcdDoFillRect
034B 82CA STD Y+2,R12
034C 82A8 STD Y+0,R10
034D 2D2C MOV R18,R12
034E 2F04 MOV R16,R20
034F DF26 RCALL _glcdDoFillRect
(0128) void glcdRectangle(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) {
0350 82CA STD Y+2,R12
0351 8348 STD Y+0,R20
(0129)
0352 2F26 MOV R18,R22
0353 2F04 MOV R16,R20
0354 DF21 RCALL _glcdDoFillRect
0355 9020006F LDS R2,_cobk
(0130) glcdDoCheckCoord(x1, x2);
0357 90300070 LDS R3,_cobk+1
0359 FE37 SBRS R3,7
035A C015 RJMP 0x0370
035B 0181 MOVW R16,R2
(0131) glcdDoCheckCoord(y1, y2);
035C D7E8 RCALL _RGBToChar
035D 2D8C MOV R24,R12
035E 5081 SUBI R24,1
035F 2E28 MOV R2,R24
0360 2EC8 MOV R12,R24
(0132) if (cofg&0x8000) {
0361 822A STD Y+2,R2
0362 2D8A MOV R24,R10
0363 5081 SUBI R24,1
0364 2E28 MOV R2,R24
0365 2EA8 MOV R10,R24
(0133) RGBToChar(cofg);
(0134) glcdDoFillRect(x1, y1, x2, y1);
0366 8228 STD Y+0,R2
0367 2F86 MOV R24,R22
0368 5F8F SUBI R24,0xFF
0369 2F68 MOV R22,R24
036A 2F28 MOV R18,R24
036B 2F84 MOV R24,R20
(0135) glcdDoFillRect(x2, y1, x2, y2);
036C 5F8F SUBI R24,0xFF
036D 2F48 MOV R20,R24
(0136) glcdDoFillRect(x1, y2, x2, y2);
036E 2F08 MOV R16,R24
036F DF06 RCALL _glcdDoFillRect
0370 9623 ADIW R28,3
0371 940E1003 CALL pop_gset5
0373 9508 RET
_glcdFrame:
t --> R14
t --> R14
y2 --> R12
x2 --> R10
y1 --> R22
x1 --> R20
0374 940E1029 CALL push_gset5
0376 2F62 MOV R22,R18
0377 2F40 MOV R20,R16
0378 9723 SBIW R28,3
0379 84AD LDD R10,Y+13
037A 84CF LDD R12,Y+15
037B 16A4 CP R10,R20
037C F418 BCC 0x0380
037D 2EE4 MOV R14,R20
037E 2D4A MOV R20,R10
037F 2CAE MOV R10,R14
0380 16C6 CP R12,R22
(0137) glcdDoFillRect(x1, y1, x1, y2);
(0138) }
0381 F418 BCC 0x0385
0382 2EE6 MOV R14,R22
0383 2D6C MOV R22,R12
0384 2CCE MOV R12,R14
0385 90200069 LDS R2,_cosh
0387 9030006A LDS R3,_cosh+1
0389 FE37 SBRS R3,7
(0139) if (cobk&0x8000) {
(0140) RGBToChar(cobk);
(0141) glcdDoFillRect(++x1, ++y1, --x2, --y2);
(0142) }
038A C01B RJMP 0x03A6
038B 0181 MOVW R16,R2
038C D7B8 RCALL _RGBToChar
038D 82CA STD Y+2,R12
038E 2D8A MOV R24,R10
(0143) }
038F 5082 SUBI R24,2
0390 8388 STD Y+0,R24
0391 2D2C MOV R18,R12
0392 2F04 MOV R16,R20
0393 5F0C SUBI R16,0xFC
(0144)
(0145) void glcdFrame(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) {
0394 DEE1 RCALL _glcdDoFillRect
0395 2D8C MOV R24,R12
0396 5082 SUBI R24,2
0397 838A STD Y+2,R24
0398 82A8 STD Y+0,R10
0399 2F26 MOV R18,R22
(0146)
039A 5F2C SUBI R18,0xFC
039B 2D0A MOV R16,R10
(0147) glcdDoCheckCoord(x1, x2);
039C DED9 RCALL _glcdDoFillRect
039D 94AA DEC R10
039E 94CA DEC R12
039F 82CA STD Y+2,R12
03A0 82A8 STD Y+0,R10
03A1 2D2C MOV R18,R12
03A2 5022 SUBI R18,2
03A3 2D0A MOV R16,R10
(0148) glcdDoCheckCoord(y1, y2);
03A4 5002 SUBI R16,2
03A5 DED0 RCALL _glcdDoFillRect
03A6 9020006B LDS R2,_cofr
03A8 9030006C LDS R3,_cofr+1
03AA FE37 SBRS R3,7
03AB C032 RJMP 0x03DE
(0149)
03AC 0181 MOVW R16,R2
(0150) if (cosh&0x8000) {
03AD D797 RCALL _RGBToChar
(0151) RGBToChar(cosh);
03AE 836A STD Y+2,R22
03AF 2D8A MOV R24,R10
03B0 5082 SUBI R24,2
03B1 8388 STD Y+0,R24
03B2 2F26 MOV R18,R22
03B3 2F04 MOV R16,R20
03B4 5F0E SUBI R16,0xFE
(0152) glcdDoFillRect(x1 + 4, y2, x2 - 2, y2);
(0153) glcdDoFillRect(x2, y1 +4, x2, y2 -2);
03B5 DEC0 RCALL _glcdDoFillRect
03B6 82CA STD Y+2,R12
03B7 2D8A MOV R24,R10
03B8 5082 SUBI R24,2
03B9 8388 STD Y+0,R24
03BA 2D2C MOV R18,R12
(0154) x2--;
03BB 2F04 MOV R16,R20
03BC 5F0E SUBI R16,0xFE
(0155) y2--;
03BD DEB8 RCALL _glcdDoFillRect
03BE 2D8C MOV R24,R12
03BF 5082 SUBI R24,2
03C0 838A STD Y+2,R24
03C1 82A8 STD Y+0,R10
03C2 2F26 MOV R18,R22
03C3 5F2E SUBI R18,0xFE
03C4 2D0A MOV R16,R10
(0156) glcdDoFillRect(x2 -2, y2 -2, x2, y2);
03C5 DEB0 RCALL _glcdDoFillRect
03C6 2D8C MOV R24,R12
03C7 5082 SUBI R24,2
03C8 838A STD Y+2,R24
03C9 8348 STD Y+0,R20
03CA 2F26 MOV R18,R22
03CB 5F2E SUBI R18,0xFE
03CC 2F04 MOV R16,R20
(0157) }
03CD DEA8 RCALL _glcdDoFillRect
03CE 9543 INC R20
03CF 9563 INC R22
03D0 94AA DEC R10
03D1 94CA DEC R12
03D2 2F26 MOV R18,R22
03D3 2F04 MOV R16,R20
03D4 DE22 RCALL _glcdSetPixel
(0158) if (cofr&0x8000) {
03D5 2F26 MOV R18,R22
03D6 2D0A MOV R16,R10
03D7 DE1F RCALL _glcdSetPixel
03D8 2D2C MOV R18,R12
03D9 2F04 MOV R16,R20
03DA DE1C RCALL _glcdSetPixel
03DB 2D2C MOV R18,R12
03DC 2D0A MOV R16,R10
(0159) RGBToChar(cofr);
03DD DE19 RCALL _glcdSetPixel
(0160) glcdDoFillRect(x1 +2, y1, x2 -2, y1);
03DE 9020006F LDS R2,_cobk
(0161) glcdDoFillRect(x1 +2, y2, x2 -2, y2);
03E0 90300070 LDS R3,_cobk+1
(0162) glcdDoFillRect(x2, y1 +2, x2, y2 -2);
(0163) glcdDoFillRect(x1, y1 +2, x1, y2 -2);
03E2 FE37 SBRS R3,7
03E3 C01A RJMP 0x03FE
(0164) x1++;
03E4 0181 MOVW R16,R2
03E5 D75F RCALL _RGBToChar
03E6 2D8C MOV R24,R12
(0165) y1++;
03E7 5081 SUBI R24,1
03E8 838A STD Y+2,R24
03E9 8348 STD Y+0,R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -