📄 me.lst
字号:
__text_start:
__start:
0136 E5CF LDI R28,0x5F
0137 E0D4 LDI R29,4
0138 BFCD OUT 0x3D,R28
0139 BFDE OUT 0x3E,R29
013A 51C0 SUBI R28,0x10
013B 40D0 SBCI R29,0
013C EA0A LDI R16,0xAA
013D 8308 STD Y+0,R16
013E 2400 CLR R0
013F E6E7 LDI R30,0x67
0140 E0F0 LDI R31,0
0141 E010 LDI R17,0
0142 38E9 CPI R30,0x89
0143 07F1 CPC R31,R17
0144 F011 BEQ 0x0147
0145 9201 ST R0,Z+
0146 CFFB RJMP 0x0142
0147 8300 STD Z+0,R16
0148 E6E4 LDI R30,0x64
0149 E0F2 LDI R31,2
014A E6A0 LDI R26,0x60
014B E0B0 LDI R27,0
014C E012 LDI R17,2
014D 36EB CPI R30,0x6B
014E 07F1 CPC R31,R17
014F F021 BEQ 0x0154
0150 95C8 LPM
0151 9631 ADIW R30,1
0152 920D ST R0,X+
0153 CFF9 RJMP 0x014D
0154 940E0E23 CALL _main
_exit:
0156 CFFF RJMP _exit
_sc_cbk:
tm --> Y+8
b --> Y+6
g --> R22
r --> R20
0157 940E101D CALL push_gset2
0159 2F62 MOV R22,R18
015A 2F40 MOV R20,R16
015B 9722 SBIW R28,2
015C 802E LDD R2,Y+6
015D 2433 CLR R3
015E 8239 STD Y+1,R3
015F 8228 STD Y+0,R2
0160 2F26 MOV R18,R22
0161 2733 CLR R19
0162 2F04 MOV R16,R20
0163 2711 CLR R17
0164 940E0B1B CALL _RGB
0166 0118 MOVW R2,R16
0167 E02F LDI R18,0xF
0168 E030 LDI R19,0
0169 8508 LDD R16,Y+8
016A 8519 LDD R17,Y+9
016B 940E105B CALL lsl16
016D 2A20 OR R2,R16
016E 2A31 OR R3,R17
016F 92300070 STS _cobk+1,R3
0171 9220006F STS _cobk,R2
0173 9622 ADIW R28,2
0174 940E0FFA CALL pop_gset2
0176 9508 RET
_sc_ctext:
0177 940E101D CALL push_gset2
0179 2F62 MOV R22,R18
017A 2F40 MOV R20,R16
017B 9722 SBIW R28,2
017C 802E LDD R2,Y+6
017D 2433 CLR R3
017E 8239 STD Y+1,R3
017F 8228 STD Y+0,R2
0180 2F26 MOV R18,R22
0181 2733 CLR R19
0182 2F04 MOV R16,R20
0183 2711 CLR R17
0184 940E0B1B CALL _RGB
0186 0118 MOVW R2,R16
0187 E02F LDI R18,0xF
0188 E030 LDI R19,0
0189 8508 LDD R16,Y+8
018A 8519 LDD R17,Y+9
018B 940E105B CALL lsl16
018D 2A20 OR R2,R16
018E 2A31 OR R3,R17
018F 92300068 STS _cotext+1,R3
0191 92200067 STS _cotext,R2
0193 9622 ADIW R28,2
0194 940E0FFA CALL pop_gset2
0196 9508 RET
_sc_cfg:
tm --> Y+8
b --> Y+6
g --> R22
r --> R20
0197 940E101D CALL push_gset2
0199 2F62 MOV R22,R18
019A 2F40 MOV R20,R16
019B 9722 SBIW R28,2
019C 802E LDD R2,Y+6
019D 2433 CLR R3
019E 8239 STD Y+1,R3
019F 8228 STD Y+0,R2
01A0 2F26 MOV R18,R22
01A1 2733 CLR R19
01A2 2F04 MOV R16,R20
01A3 2711 CLR R17
01A4 940E0B1B CALL _RGB
01A6 0118 MOVW R2,R16
01A7 E02F LDI R18,0xF
01A8 E030 LDI R19,0
01A9 8508 LDD R16,Y+8
01AA 8519 LDD R17,Y+9
01AB 940E105B CALL lsl16
FILE: E:\电子\ICCAVR\6610ME~1\lcd6610.h
(0001) //--------Nokia 6610 LCD-----ICCAVR----------
(0002) #include "ascii.h"
(0003) //-----6610 Command -------------------------
(0004) #define GLCD_PIXELX 130
(0005) #define GLCD_PIXELY 130
(0006) #define GLCD_X_START 0
(0007) #define GLCD_Y_START 0
(0008) #define GLCD_X_END GLCD_PIXELY-1
(0009) #define GLCD_Y_END GLCD_PIXELY-1
(0010) #define ADDRX 0x75
(0011) #define ADDRY 0x15
(0012) #define MEMWRITE 0x5C
(0013) //-------------------------------------------
(0014)
(0015) #define csl asm("cbi 0x12,1") //PB0
(0016) #define csh asm("sbi 0x12,1")
(0017)
(0018) #define restl asm("cbi 0x12,0") //PB4
(0019) #define resth asm("sbi 0x12,0")
(0020)
(0021) #define sclkl asm("cbi 0x18,5") //PB5
(0022) #define sclkh asm("sbi 0x18,5")
(0023)
(0024) #define sdatal asm("cbi 0x18,3") //PB3
(0025) #define sdatah asm("sbi 0x18,3")
(0026) #define glcdDoSwapCoord(x, y) {unsigned char t = x; x = y; y = t;}
(0027) #define glcdDoCheckCoord(x, y) {if (x > y) {glcdDoSwapCoord(x, y)}}
(0028) #define glcdSetRect(r,x1,y1,x2,y2) {r.X1 = x1; r.Y1 = y1; r.X2 = x2; r.Y2 = y2;}
(0029)
(0030) typedef struct {
(0031) unsigned char X1;
(0032) unsigned char Y1;
(0033) unsigned char X2;
(0034) unsigned char Y2;
(0035) } glcdRect_t;
(0036)
(0037) glcdRect_t glcd_Clip;
(0038)
(0039) unsigned char Color1=0,Color2=0;
(0040) unsigned char backgroundColor = 0,b2=0;
(0041) unsigned char memAccessCtrl=0,zx=0,zy=0;
(0042) char st[20];
(0043) unsigned int cobk,cofg,cofr,cosh,cotext;
(0044)
(0045) void sc_cbk(unsigned char r,unsigned char g,unsigned char b,unsigned int tm)
(0046) {cobk= RGB(r,g,b)|(tm<<15);
01AD 2A20 OR R2,R16
01AE 2A31 OR R3,R17
01AF 9230006E STS _cofg+1,R3
01B1 9220006D STS _cofg,R2
01B3 9622 ADIW R28,2
01B4 940E0FFA CALL pop_gset2
01B6 9508 RET
_sc_cfr:
tm --> Y+8
b --> Y+6
g --> R22
r --> R20
01B7 940E101D CALL push_gset2
01B9 2F62 MOV R22,R18
01BA 2F40 MOV R20,R16
01BB 9722 SBIW R28,2
01BC 802E LDD R2,Y+6
01BD 2433 CLR R3
01BE 8239 STD Y+1,R3
01BF 8228 STD Y+0,R2
01C0 2F26 MOV R18,R22
01C1 2733 CLR R19
(0047)
(0048) }
01C2 2F04 MOV R16,R20
01C3 2711 CLR R17
01C4 940E0B1B CALL _RGB
01C6 0118 MOVW R2,R16
01C7 E02F LDI R18,0xF
01C8 E030 LDI R19,0
(0049)
(0050) void sc_ctext(unsigned char r,unsigned char g,unsigned char b,unsigned int tm)
(0051) {cotext= RGB(r,g,b)|(tm<<15);
(0052)
01C9 8508 LDD R16,Y+8
01CA 8519 LDD R17,Y+9
01CB 940E105B CALL lsl16
01CD 2A20 OR R2,R16
01CE 2A31 OR R3,R17
01CF 9230006C STS _cofr+1,R3
01D1 9220006B STS _cofr,R2
01D3 9622 ADIW R28,2
01D4 940E0FFA CALL pop_gset2
01D6 9508 RET
_sc_csh:
tm --> Y+8
b --> Y+6
g --> R22
r --> R20
01D7 940E101D CALL push_gset2
01D9 2F62 MOV R22,R18
01DA 2F40 MOV R20,R16
01DB 9722 SBIW R28,2
01DC 802E LDD R2,Y+6
01DD 2433 CLR R3
(0053) }
(0054)
01DE 8239 STD Y+1,R3
01DF 8228 STD Y+0,R2
01E0 2F26 MOV R18,R22
01E1 2733 CLR R19
01E2 2F04 MOV R16,R20
01E3 2711 CLR R17
01E4 940E0B1B CALL _RGB
(0055) void sc_cfg(unsigned char r,unsigned char g,unsigned char b,unsigned int tm)
(0056) {
(0057) cofg= RGB(r,g,b)|(tm<<15);
(0058)
01E6 0118 MOVW R2,R16
01E7 E02F LDI R18,0xF
01E8 E030 LDI R19,0
01E9 8508 LDD R16,Y+8
01EA 8519 LDD R17,Y+9
01EB 940E105B CALL lsl16
01ED 2A20 OR R2,R16
01EE 2A31 OR R3,R17
01EF 9230006A STS _cosh+1,R3
01F1 92200069 STS _cosh,R2
01F3 9622 ADIW R28,2
01F4 940E0FFA CALL pop_gset2
01F6 9508 RET
_glcdSetPixel:
y --> R22
x --> Y+10
01F7 940E0FAD CALL push_arg4
01F9 940E1029 CALL push_gset5
(0059) }
01FB 2F62 MOV R22,R18
01FC 90200085 LDS R2,_glcd_Clip
01FE 840A LDD R0,Y+10
01FF 1402 CP R0,R2
0200 F018 BCS 0x0204
(0060)
(0061) void sc_cfr(unsigned char r,unsigned char g,unsigned char b,unsigned int tm)
(0062) {
(0063) cofr= RGB(r,g,b)|(tm<<15);
0201 E041 LDI R20,1
0202 E050 LDI R21,0
0203 C002 RJMP 0x0206
0204 2744 CLR R20
0205 2755 CLR R21
0206 90200087 LDS R2,_glcd_Clip+2
0208 840A LDD R0,Y+10
0209 1420 CP R2,R0
020A F020 BCS 0x020F
020B E081 LDI R24,1
020C E090 LDI R25,0
020D 017C MOVW R14,R24
020E C002 RJMP 0x0211
020F 24EE CLR R14
0210 24FF CLR R15
0211 90200086 LDS R2,_glcd_Clip+1
0213 1562 CP R22,R2
0214 F020 BCS 0x0219
0215 E081 LDI R24,1
(0064) }
0216 E090 LDI R25,0
0217 016C MOVW R12,R24
0218 C002 RJMP 0x021B
0219 24CC CLR R12
021A 24DD CLR R13
021B 90200088 LDS R2,_glcd_Clip+3
(0065)
(0066) void sc_csh(unsigned char r,unsigned char g,unsigned char b,unsigned int tm)
(0067) {
(0068) cosh= RGB(r,g,b)|(tm<<15);
021D 1626 CP R2,R22
021E F020 BCS 0x0223
021F E081 LDI R24,1
0220 E090 LDI R25,0
0221 015C MOVW R10,R24
0222 C002 RJMP 0x0225
0223 24AA CLR R10
0224 24BB CLR R11
0225 011A MOVW R2,R20
0226 202E AND R2,R14
0227 203F AND R3,R15
0228 202C AND R2,R12
0229 203D AND R3,R13
022A 202A AND R2,R10
022B 203B AND R3,R11
022C 2022 TST R2
022D F411 BNE 0x0230
022E 2033 TST R3
022F F031 BEQ 0x0236
0230 2F26 MOV R18,R22
0231 2733 CLR R19
0232 850A LDD R16,Y+10
0233 2711 CLR R17
0234 940E0B4D CALL _point
0236 940E1003 CALL pop_gset5
0238 9624 ADIW R28,4
0239 9508 RET
_glcdn_Delay:
d --> Y+0
ld --> Y+8
023A 940E0FAD CALL push_arg4
023C 940E101D CALL push_gset2
023E 9724 SBIW R28,4
023F E040 LDI R20,0
0240 E050 LDI R21,0
0241 E060 LDI R22,0
0242 E070 LDI R23,0
0243 01FE MOVW R30,R28
0244 8340 STD Z+0,R20
0245 8351 STD Z+1,R21
0246 8362 STD Z+2,R22
0247 8373 STD Z+3,R23
0248 C018 RJMP 0x0261
0249 0000 NOP
024A 0000 NOP
024B 0000 NOP
024C 0000 NOP
024D 0000 NOP
024E 0000 NOP
024F E041 LDI R20,1
(0069) }
0250 E050 LDI R21,0
0251 E060 LDI R22,0
0252 E070 LDI R23,0
0253 01FE MOVW R30,R28
0254 8020 LDD R2,Z+0
(0070)
(0071) void glcdSetPixel(unsigned char x, unsigned char y)
0255 8031 LDD R3,Z+1
0256 8042 LDD R4,Z+2
0257 8053 LDD R5,Z+3
0258 0E24 ADD R2,R20
0259 1E35 ADC R3,R21
025A 1E46 ADC R4,R22
(0072) {
(0073) if ((x >= glcd_Clip.X1) & (x <= glcd_Clip.X2) & (y >= glcd_Clip.Y1) & (y <= glcd_Clip.Y2)) {
(0074) point(x,y);
(0075) }
(0076) }
(0077)
025B 1E57 ADC R5,R23
025C 01FE MOVW R30,R28
025D 8220 STD Z+0,R2
025E 8231 STD Z+1,R3
025F 8242 STD Z+2,R4
0260 8253 STD Z+3,R5
0261 01FE MOVW R30,R28
0262 8420 LDD R2,Z+8
0263 8431 LDD R3,Z+9
0264 8442 LDD R4,Z+10
(0078)
(0079) void glcdn_Delay(long ld)
0265 8453 LDD R5,Z+11
(0080) {
0266 01FE MOVW R30,R28
(0081) long d;
0267 8060 LDD R6,Z+0
(0082) for(d=0;d<ld;d++)
0268 8071 LDD R7,Z+1
(0083) {
0269 8082 LDD R8,Z+2
(0084) NOP();
026A 8093 LDD R9,Z+3
026B 1462 CP R6,R2
026C 0473 CPC R7,R3
026D 0484 CPC R8,R4
026E 0495 CPC R9,R5
026F F40C BGE 0x0271
0270 CFD8 RJMP 0x0249
0271 9624 ADIW R28,4
0272 940E0FFA CALL pop_gset2
0274 9624 ADIW R28,4
0275 9508 RET
_glcdDoFillRect:
y --> R10
x --> R14
y2 --> R20
x2 --> Y+18
y1 --> Y+16
x1 --> Y+14
0276 940E0FAD CALL push_arg4
0278 940E1029 CALL push_gset5
027A 9724 SBIW R28,4
027B 894C LDD R20,Y+20
027C 90200087 LDS R2,_glcd_Clip+2
027E 840E LDD R0,Y+14
027F 1420 CP R2,R0
0280 F420 BCC 0x0285
0281 E081 LDI R24,1
0282 E090 LDI R25,0
0283 016C MOVW R12,R24
0284 C002 RJMP 0x0287
0285 24CC CLR R12
0286 24DD CLR R13
0287 90200085 LDS R2,_glcd_Clip
0289 880A LDD R0,Y+18
028A 1402 CP R0,R2
028B F420 BCC 0x0290
028C E081 LDI R24,1
(0085) NOP();
(0086) NOP();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -