📄 me.lst
字号:
0166 2711 CLR R17
0167 DA11 RCALL _glcdn_WriteData
(0072) glcdn_WriteData(Color2);
0168 91000061 LDS R16,0x61
016A 2711 CLR R17
016B DA0D RCALL _glcdn_WriteData
016C 94E3 INC R14
016D 880A LDD R0,Y+18
016E 140E CP R0,R14
016F F7A0 BCC 0x0164
0170 94A3 INC R10
0171 154A CP R20,R10
0172 F778 BCC 0x0162
(0073) }
(0074) }
(0075) }
(0076) }
0173 9624 ADIW R28,4
0174 DB20 RCALL pop_gset5
0175 9624 ADIW R28,4
0176 9508 RET
_glcdFillRect:
t --> R14
t --> R14
y2 --> R12
x2 --> R10
y1 --> R22
x1 --> R20
0177 DB3F RCALL push_gset5
0178 2F62 MOV R22,R18
0179 2F40 MOV R20,R16
017A 9723 SBIW R28,3
017B 84AD LDD R10,Y+13
017C 84CF LDD R12,Y+15
(0077)
(0078) void glcdFillRect(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) {
(0079)
(0080) glcdDoCheckCoord(x1, x2);
017D 16A4 CP R10,R20
017E F418 BCC 0x0182
017F 2EE4 MOV R14,R20
0180 2D4A MOV R20,R10
0181 2CAE MOV R10,R14
(0081) glcdDoCheckCoord(y1, y2);
0182 16C6 CP R12,R22
0183 F418 BCC 0x0187
0184 2EE6 MOV R14,R22
0185 2D6C MOV R22,R12
0186 2CCE MOV R12,R14
(0082) //RGB(r,g,b);
(0083) glcdDoFillRect(x1, y1, x2, y2);
0187 82CA STD Y+2,R12
0188 82A8 STD Y+0,R10
0189 2F26 MOV R18,R22
018A 2F04 MOV R16,R20
018B DF5A RCALL _glcdDoFillRect
(0084) }
018C 9623 ADIW R28,3
018D DB07 RCALL pop_gset5
018E 9508 RET
_glcdRectangle:
t --> R14
t --> R14
y2 --> R12
x2 --> R10
y1 --> R22
x1 --> R20
018F DB27 RCALL push_gset5
0190 2F62 MOV R22,R18
0191 2F40 MOV R20,R16
0192 9723 SBIW R28,3
0193 84AD LDD R10,Y+13
0194 84CF LDD R12,Y+15
(0085)
(0086) void glcdRectangle(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) {
(0087)
(0088) glcdDoCheckCoord(x1, x2);
0195 16A4 CP R10,R20
0196 F418 BCC 0x019A
0197 2EE4 MOV R14,R20
0198 2D4A MOV R20,R10
0199 2CAE MOV R10,R14
(0089) glcdDoCheckCoord(y1, y2);
019A 16C6 CP R12,R22
019B F418 BCC 0x019F
019C 2EE6 MOV R14,R22
019D 2D6C MOV R22,R12
019E 2CCE MOV R12,R14
(0090) if (cfg&0x8000) {
019F 9020006B LDS R2,_cfg
01A1 9030006C LDS R3,_cfg+1
01A3 FE37 SBRS R3,7
01A4 C016 RJMP 0x01BB
(0091) RGBToChar(cfg);
01A5 0181 MOVW R16,R2
01A6 DA14 RCALL _RGBToChar
(0092) glcdDoFillRect(x1, y1, x2, y1);
01A7 836A STD Y+2,R22
01A8 82A8 STD Y+0,R10
01A9 2F26 MOV R18,R22
01AA 2F04 MOV R16,R20
01AB DF3A RCALL _glcdDoFillRect
(0093) glcdDoFillRect(x2, y1, x2, y2);
01AC 82CA STD Y+2,R12
01AD 82A8 STD Y+0,R10
01AE 2F26 MOV R18,R22
01AF 2D0A MOV R16,R10
01B0 DF35 RCALL _glcdDoFillRect
(0094) glcdDoFillRect(x1, y2, x2, y2);
01B1 82CA STD Y+2,R12
01B2 82A8 STD Y+0,R10
01B3 2D2C MOV R18,R12
01B4 2F04 MOV R16,R20
01B5 DF30 RCALL _glcdDoFillRect
(0095) glcdDoFillRect(x1, y1, x1, y2);
01B6 82CA STD Y+2,R12
01B7 8348 STD Y+0,R20
01B8 2F26 MOV R18,R22
01B9 2F04 MOV R16,R20
01BA DF2B RCALL _glcdDoFillRect
(0096) }
(0097) if (cbk&0x8000) {
01BB 9020006D LDS R2,_cbk
01BD 9030006E LDS R3,_cbk+1
01BF FE37 SBRS R3,7
01C0 C015 RJMP 0x01D6
(0098) RGBToChar(cbk);
01C1 0181 MOVW R16,R2
01C2 D9F8 RCALL _RGBToChar
(0099) glcdDoFillRect(++x1, ++y1, --x2, --y2);
01C3 2D8C MOV R24,R12
01C4 5081 SUBI R24,1
01C5 2E28 MOV R2,R24
01C6 2EC8 MOV R12,R24
01C7 822A STD Y+2,R2
01C8 2D8A MOV R24,R10
01C9 5081 SUBI R24,1
01CA 2E28 MOV R2,R24
01CB 2EA8 MOV R10,R24
01CC 8228 STD Y+0,R2
01CD 2F86 MOV R24,R22
01CE 5F8F SUBI R24,0xFF
01CF 2F68 MOV R22,R24
01D0 2F28 MOV R18,R24
01D1 2F84 MOV R24,R20
01D2 5F8F SUBI R24,0xFF
01D3 2F48 MOV R20,R24
01D4 2F08 MOV R16,R24
01D5 DF10 RCALL _glcdDoFillRect
(0100) }
(0101) }
01D6 9623 ADIW R28,3
01D7 DABD RCALL pop_gset5
01D8 9508 RET
_glcdFrame:
t --> R14
t --> R14
y2 --> R12
x2 --> R10
y1 --> R22
x1 --> R20
01D9 DADD RCALL push_gset5
01DA 2F62 MOV R22,R18
01DB 2F40 MOV R20,R16
01DC 9723 SBIW R28,3
01DD 84AD LDD R10,Y+13
01DE 84CF LDD R12,Y+15
(0102)
(0103) void glcdFrame(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) {
(0104)
(0105) glcdDoCheckCoord(x1, x2);
01DF 16A4 CP R10,R20
01E0 F418 BCC 0x01E4
01E1 2EE4 MOV R14,R20
01E2 2D4A MOV R20,R10
01E3 2CAE MOV R10,R14
(0106) glcdDoCheckCoord(y1, y2);
01E4 16C6 CP R12,R22
01E5 F418 BCC 0x01E9
01E6 2EE6 MOV R14,R22
01E7 2D6C MOV R22,R12
01E8 2CCE MOV R12,R14
(0107)
(0108) if (csh&0x8000) {
01E9 90200067 LDS R2,_csh
01EB 90300068 LDS R3,_csh+1
01ED FE37 SBRS R3,7
01EE C01B RJMP 0x020A
(0109) RGBToChar(csh);
01EF 0181 MOVW R16,R2
01F0 D9CA RCALL _RGBToChar
(0110) glcdDoFillRect(x1 + 4, y2, x2 - 2, y2);
01F1 82CA STD Y+2,R12
01F2 2D8A MOV R24,R10
01F3 5082 SUBI R24,2
01F4 8388 STD Y+0,R24
01F5 2D2C MOV R18,R12
01F6 2F04 MOV R16,R20
01F7 5F0C SUBI R16,0xFC
01F8 DEED RCALL _glcdDoFillRect
(0111) glcdDoFillRect(x2, y1 +4, x2, y2 -2);
01F9 2D8C MOV R24,R12
01FA 5082 SUBI R24,2
01FB 838A STD Y+2,R24
01FC 82A8 STD Y+0,R10
01FD 2F26 MOV R18,R22
01FE 5F2C SUBI R18,0xFC
01FF 2D0A MOV R16,R10
0200 DEE5 RCALL _glcdDoFillRect
(0112) x2--;
0201 94AA DEC R10
(0113) y2--;
0202 94CA DEC R12
(0114) glcdDoFillRect(x2 -2, y2 -2, x2, y2);
0203 82CA STD Y+2,R12
0204 82A8 STD Y+0,R10
0205 2D2C MOV R18,R12
0206 5022 SUBI R18,2
0207 2D0A MOV R16,R10
0208 5002 SUBI R16,2
0209 DEDC RCALL _glcdDoFillRect
(0115) }
(0116) if (cfr&0x8000) {
020A 90200069 LDS R2,_cfr
020C 9030006A LDS R3,_cfr+1
020E FE37 SBRS R3,7
020F C032 RJMP 0x0242
(0117) RGBToChar(cfr);
0210 0181 MOVW R16,R2
0211 D9A9 RCALL _RGBToChar
(0118) glcdDoFillRect(x1 +2, y1, x2 -2, y1);
0212 836A STD Y+2,R22
0213 2D8A MOV R24,R10
0214 5082 SUBI R24,2
0215 8388 STD Y+0,R24
0216 2F26 MOV R18,R22
0217 2F04 MOV R16,R20
0218 5F0E SUBI R16,0xFE
0219 DECC RCALL _glcdDoFillRect
(0119) glcdDoFillRect(x1 +2, y2, x2 -2, y2);
021A 82CA STD Y+2,R12
021B 2D8A MOV R24,R10
021C 5082 SUBI R24,2
021D 8388 STD Y+0,R24
021E 2D2C MOV R18,R12
021F 2F04 MOV R16,R20
0220 5F0E SUBI R16,0xFE
0221 DEC4 RCALL _glcdDoFillRect
(0120) glcdDoFillRect(x2, y1 +2, x2, y2 -2);
0222 2D8C MOV R24,R12
0223 5082 SUBI R24,2
0224 838A STD Y+2,R24
0225 82A8 STD Y+0,R10
0226 2F26 MOV R18,R22
0227 5F2E SUBI R18,0xFE
0228 2D0A MOV R16,R10
0229 DEBC RCALL _glcdDoFillRect
(0121) glcdDoFillRect(x1, y1 +2, x1, y2 -2);
022A 2D8C MOV R24,R12
022B 5082 SUBI R24,2
022C 838A STD Y+2,R24
022D 8348 STD Y+0,R20
022E 2F26 MOV R18,R22
022F 5F2E SUBI R18,0xFE
0230 2F04 MOV R16,R20
0231 DEB4 RCALL _glcdDoFillRect
(0122) x1++;
0232 9543 INC R20
(0123) y1++;
0233 9563 INC R22
(0124) x2--;
0234 94AA DEC R10
(0125) y2--;
0235 94CA DEC R12
(0126) glcdSetPixel(x1, y1);
0236 2F26 MOV R18,R22
0237 2F04 MOV R16,R20
0238 DE6E RCALL _glcdSetPixel
(0127) glcdSetPixel(x2, y1);
0239 2F26 MOV R18,R22
023A 2D0A MOV R16,R10
023B DE6B RCALL _glcdSetPixel
(0128) glcdSetPixel(x1, y2);
023C 2D2C MOV R18,R12
023D 2F04 MOV R16,R20
023E DE68 RCALL _glcdSetPixel
(0129) glcdSetPixel(x2, y2);
023F 2D2C MOV R18,R12
0240 2D0A MOV R16,R10
0241 DE65 RCALL _glcdSetPixel
(0130) }
(0131) if (cbk&0x8000) {
0242 9020006D LDS R2,_cbk
0244 9030006E LDS R3,_cbk+1
0246 FE37 SBRS R3,7
0247 C01A RJMP 0x0262
(0132) RGBToChar(cbk);
0248 0181 MOVW R16,R2
0249 D971 RCALL _RGBToChar
(0133) glcdDoFillRect(x1, y1 +1, x1, y2 -1);
024A 2D8C MOV R24,R12
024B 5081 SUBI R24,1
024C 838A STD Y+2,R24
024D 8348 STD Y+0,R20
024E 2F26 MOV R18,R22
024F 5F2F SUBI R18,0xFF
0250 2F04 MOV R16,R20
0251 DE94 RCALL _glcdDoFillRect
(0134) glcdDoFillRect(x2, y1 +1, x2, y2 -1);
0252 2D8C MOV R24,R12
0253 5081 SUBI R24,1
0254 838A STD Y+2,R24
0255 82A8 STD Y+0,R10
0256 2F26 MOV R18,R22
0257 5F2F SUBI R18,0xFF
0258 2D0A MOV R16,R10
0259 DE8C RCALL _glcdDoFillRect
(0135) glcdDoFillRect(x1 +1, y1, x2 -1, y2);
025A 82CA STD Y+2,R12
025B 2D8A MOV R24,R10
025C 5081 SUBI R24,1
025D 8388 STD Y+0,R24
025E 2F26 MOV R18,R22
025F 2F04 MOV R16,R20
0260 5F0F SUBI R16,0xFF
0261 DE84 RCALL _glcdDoFillRect
(0136) }
(0137) }
0262 9623 ADIW R28,3
0263 DA31 RCALL pop_gset5
0264 9508 RET
_glcdLine:
t --> R14
t --> R14
t --> R14
t --> R20
t --> R22
t --> Y+15
t --> Y+14
t --> Y+13
t --> R20
t --> R20
t --> R20
swap --> Y+12
sx --> Y+11
i --> Y+10
dy --> Y+9
y3 --> Y+8
x3 --> Y+7
sy --> Y+6
dx --> Y+5
e --> Y+3
y2 --> R8
x2 --> R6
y1 --> Y+28
x1 --> Y+26
0265 D9E2 RCALL push_arg4
0266 DA50 RCALL push_gset5
0267 9760 SBIW R28,0x10
0268 8C6E LDD R6,Y+30
0269 A088 LDD R8,Y+32
(0138)
(0139) void glcdLine(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) {
(0140) unsigned char swap,i;
(0141) unsigned char dx, dy, sx, sy;
(0142) int e;
(0143) unsigned char x3;
(0144) unsigned char y3;
(0145) if (cfg&0x8000) {
026A 9020006B LDS R2,_cfg
026C 9030006C LDS R3,_cfg+1
026E FE37 SBRS R3,7
026F C106 RJMP 0x0376
(0146) RGBToChar(cfg);
0270 0181 MOVW R16,R2
0271 926F PUSH R6
0272 928F PUSH R8
0273 D947 RCALL _RGBToChar
0274 908F POP R8
0275 906F POP R6
(0147) if ((x1 == x2) | (y1 == y2)) {
0276 8C0A LDD R0,Y+26
0277 1406 CP R0,R6
0278 F419 BNE 0x027C
0279 E061 LDI R22,1
027A E070 LDI R23,0
027B C002 RJMP 0x027E
027C 2766 CLR R22
027D 2777 CLR R23
027E 8C0C LDD R0,Y+28
027F 1408 CP R0,R8
0280 F419 BNE 0x0284
0281 E041 LDI R20,1
0282 E050 LDI R21,0
0283 C002 RJMP 0x0286
0284 2744 CLR R20
0285 2755 CLR R21
0286 011B MOVW R2,R22
0287 2A24 OR R2,R20
0288 2A35 OR R3,R21
0289 2022 TST R2
028A F411 BNE 0x028D
028B 2033 TST R3
028C F051 BEQ 0x0297
(0148) glcdFillRect(x1, y1, x2, y2);
028D 828A STD Y+2,R8
028E 8268 STD Y+0,R6
028F 8D2C LDD R18,Y+28
0290 8D0A LDD R16,Y+26
0291 926F PUSH R6
0292 928F PUSH R8
0293 DEE3 RCALL _glcdFillRect
0294 908F POP R8
0295 906F POP R6
(0149) } else {
0296 C0DF RJMP 0x0376
(0150)
(0151)
(0152)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -