⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 me.lst

📁 LCD彩显驱动 nokia 6100 LCD
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    0017 E5CF      LDI	R28,0x5F
    0018 E0D4      LDI	R29,4
    0019 BFCD      OUT	0x3D,R28
    001A BFDE      OUT	0x3E,R29
    001B 51C0      SUBI	R28,0x10
    001C 40D0      SBCI	R29,0
    001D EA0A      LDI	R16,0xAA
    001E 8308      STD	Y+0,R16
    001F 2400      CLR	R0
    0020 E6E7      LDI	R30,0x67
    0021 E0F0      LDI	R31,0
    0022 E010      LDI	R17,0
    0023 37E3      CPI	R30,0x73
    0024 07F1      CPC	R31,R17
    0025 F011      BEQ	0x0028
    0026 9201      ST	R0,Z+
    0027 CFFB      RJMP	0x0023
    0028 8300      STD	Z+0,R16
    0029 E2E6      LDI	R30,0x26
    002A E0F0      LDI	R31,0
    002B E6A0      LDI	R26,0x60
    002C E0B0      LDI	R27,0
    002D E010      LDI	R17,0
    002E 32ED      CPI	R30,0x2D
    002F 07F1      CPC	R31,R17
    0030 F021      BEQ	0x0035
    0031 95C8      LPM
    0032 9631      ADIW	R30,1
    0033 920D      ST	R0,X+
    0034 CFF9      RJMP	0x002E
    0035 D81A      RCALL	_main
_exit:
    0036 CFFF      RJMP	_exit
_sc_cbk:
  tm                   --> Y+8
  b                    --> Y+6
  g                    --> R22
  r                    --> R20
    0037 DC76      RCALL	push_gset2
    0038 2F62      MOV	R22,R18
    0039 2F40      MOV	R20,R16
    003A 9722      SBIW	R28,2
FILE: E:\电子\ICCAVR\6610ME~1\lcd6610.c
(0001) 
(0002) #define SCREEN_WIDTH            132   // Nokia6100, wobei aber nur 1,1-130,130 sichtbar sind. Denoch ben鰐igen wir vollen
(0003) #define SCREEN_HEIGHT           132   // Zugriff auf den RAM wenn wir zB. das Scrolling nutzen wollen
(0004) #define SCREEN_LEFT             1
(0005) #define SCREEN_TOP              1
(0006) #define SCREEN_RIGHT            (SCREEN_WIDTH -2)
(0007) #define SCREEN_BOTTOM           (SCREEN_HEIGHT -2)
(0008) 
(0009) typedef struct {
(0010)     unsigned char X1;
(0011)     unsigned char Y1;
(0012)     unsigned char X2;
(0013)     unsigned char Y2;
(0014) } glcdRect_t;
(0015) 
(0016) glcdRect_t      glcd_Clip;
(0017) #define glcdDoSwapCoord(x, y) {unsigned char t = x; x = y; y = t;}
(0018) #define glcdDoCheckCoord(x, y) {if (x > y) {glcdDoSwapCoord(x, y)}}
(0019) #define glcdSetRect(r,x1,y1,x2,y2) {r.X1 = x1; r.Y1 = y1; r.X2 = x2; r.Y2 = y2;}
(0020) 
(0021) unsigned char Color1=0,Color2=0;
(0022) unsigned char backgroundColor = RED,b2=0;
(0023) unsigned char memAccessCtrl=0,zx=0,zy=0;
(0024) int  cbk,cfg,cfr,csh;
(0025) 
(0026) void sc_cbk(unsigned char r,unsigned char g,unsigned char b,unsigned int tm) 
(0027) {cbk= RGB(r,g,b)|(tm<<15);
    003B 802E      LDD	R2,Y+6
    003C 2433      CLR	R3
    003D 8239      STD	Y+1,R3
    003E 8228      STD	Y+0,R2
    003F 2F26      MOV	R18,R22
    0040 2733      CLR	R19
    0041 2F04      MOV	R16,R20
    0042 2711      CLR	R17
    0043 DB4F      RCALL	_RGB
    0044 0118      MOVW	R2,R16
    0045 E02F      LDI	R18,0xF
    0046 E030      LDI	R19,0
    0047 8508      LDD	R16,Y+8
    0048 8519      LDD	R17,Y+9
    0049 DC9E      RCALL	lsl16
    004A 2A20      OR	R2,R16
    004B 2A31      OR	R3,R17
    004C 9230006E  STS	_cbk+1,R3
    004E 9220006D  STS	_cbk,R2
(0028) 
(0029) }
    0050 9622      ADIW	R28,2
    0051 DC3F      RCALL	pop_gset2
    0052 9508      RET
_sc_cfg:
  tm                   --> Y+8
  b                    --> Y+6
  g                    --> R22
  r                    --> R20
    0053 DC5A      RCALL	push_gset2
    0054 2F62      MOV	R22,R18
    0055 2F40      MOV	R20,R16
    0056 9722      SBIW	R28,2
(0030) 
(0031) void sc_cfg(unsigned char r,unsigned char g,unsigned char b,unsigned int tm) 
(0032) {
(0033) cfg= RGB(r,g,b)|(tm<<15);
    0057 802E      LDD	R2,Y+6
    0058 2433      CLR	R3
    0059 8239      STD	Y+1,R3
    005A 8228      STD	Y+0,R2
    005B 2F26      MOV	R18,R22
    005C 2733      CLR	R19
    005D 2F04      MOV	R16,R20
    005E 2711      CLR	R17
    005F DB33      RCALL	_RGB
    0060 0118      MOVW	R2,R16
    0061 E02F      LDI	R18,0xF
    0062 E030      LDI	R19,0
    0063 8508      LDD	R16,Y+8
    0064 8519      LDD	R17,Y+9
    0065 DC82      RCALL	lsl16
    0066 2A20      OR	R2,R16
    0067 2A31      OR	R3,R17
    0068 9230006C  STS	_cfg+1,R3
    006A 9220006B  STS	_cfg,R2
(0034) 
(0035) }
    006C 9622      ADIW	R28,2
    006D DC23      RCALL	pop_gset2
    006E 9508      RET
_sc_cfr:
  tm                   --> Y+8
  b                    --> Y+6
  g                    --> R22
  r                    --> R20
    006F DC3E      RCALL	push_gset2
    0070 2F62      MOV	R22,R18
    0071 2F40      MOV	R20,R16
    0072 9722      SBIW	R28,2
(0036) 
(0037) void sc_cfr(unsigned char r,unsigned char g,unsigned char b,unsigned int tm) 
(0038) {
(0039) cfr= RGB(r,g,b)|(tm<<15);
    0073 802E      LDD	R2,Y+6
    0074 2433      CLR	R3
    0075 8239      STD	Y+1,R3
    0076 8228      STD	Y+0,R2
    0077 2F26      MOV	R18,R22
    0078 2733      CLR	R19
    0079 2F04      MOV	R16,R20
    007A 2711      CLR	R17
    007B DB17      RCALL	_RGB
    007C 0118      MOVW	R2,R16
    007D E02F      LDI	R18,0xF
    007E E030      LDI	R19,0
    007F 8508      LDD	R16,Y+8
    0080 8519      LDD	R17,Y+9
    0081 DC66      RCALL	lsl16
    0082 2A20      OR	R2,R16
    0083 2A31      OR	R3,R17
    0084 9230006A  STS	_cfr+1,R3
    0086 92200069  STS	_cfr,R2
(0040) }
    0088 9622      ADIW	R28,2
    0089 DC07      RCALL	pop_gset2
    008A 9508      RET
_sc_csh:
  tm                   --> Y+8
  b                    --> Y+6
  g                    --> R22
  r                    --> R20
    008B DC22      RCALL	push_gset2
    008C 2F62      MOV	R22,R18
    008D 2F40      MOV	R20,R16
    008E 9722      SBIW	R28,2
(0041) 
(0042) void sc_csh(unsigned char r,unsigned char g,unsigned char b,unsigned int tm) 
(0043) {
(0044) csh= RGB(r,g,b)|(tm<<15);
    008F 802E      LDD	R2,Y+6
    0090 2433      CLR	R3
    0091 8239      STD	Y+1,R3
    0092 8228      STD	Y+0,R2
    0093 2F26      MOV	R18,R22
    0094 2733      CLR	R19
    0095 2F04      MOV	R16,R20
    0096 2711      CLR	R17
    0097 DAFB      RCALL	_RGB
    0098 0118      MOVW	R2,R16
    0099 E02F      LDI	R18,0xF
    009A E030      LDI	R19,0
    009B 8508      LDD	R16,Y+8
    009C 8519      LDD	R17,Y+9
    009D DC4A      RCALL	lsl16
    009E 2A20      OR	R2,R16
    009F 2A31      OR	R3,R17
    00A0 92300068  STS	_csh+1,R3
    00A2 92200067  STS	_csh,R2
(0045) }
    00A4 9622      ADIW	R28,2
    00A5 DBEB      RCALL	pop_gset2
    00A6 9508      RET
_glcdSetPixel:
  y                    --> R22
  x                    --> Y+10
    00A7 DBA0      RCALL	push_arg4
    00A8 DC0E      RCALL	push_gset5
    00A9 2F62      MOV	R22,R18
(0046) 
(0047) void glcdSetPixel(unsigned char x, unsigned char y) {
(0048) 
(0049)     if ((x >= glcd_Clip.X1) & (x <= glcd_Clip.X2) & (y >= glcd_Clip.Y1) & (y <= glcd_Clip.Y2)) {
    00AA 9020006F  LDS	R2,_glcd_Clip
    00AC 840A      LDD	R0,Y+10
    00AD 1402      CP	R0,R2
    00AE F018      BCS	0x00B2
    00AF E041      LDI	R20,1
    00B0 E050      LDI	R21,0
    00B1 C002      RJMP	0x00B4
    00B2 2744      CLR	R20
    00B3 2755      CLR	R21
    00B4 90200071  LDS	R2,_glcd_Clip+2
    00B6 840A      LDD	R0,Y+10
    00B7 1420      CP	R2,R0
    00B8 F020      BCS	0x00BD
    00B9 E081      LDI	R24,1
    00BA E090      LDI	R25,0
    00BB 017C      MOVW	R14,R24
    00BC C002      RJMP	0x00BF
    00BD 24EE      CLR	R14
    00BE 24FF      CLR	R15
    00BF 90200070  LDS	R2,_glcd_Clip+1
    00C1 1562      CP	R22,R2
    00C2 F020      BCS	0x00C7
    00C3 E081      LDI	R24,1
    00C4 E090      LDI	R25,0
    00C5 016C      MOVW	R12,R24
    00C6 C002      RJMP	0x00C9
    00C7 24CC      CLR	R12
    00C8 24DD      CLR	R13
    00C9 90200072  LDS	R2,_glcd_Clip+3
    00CB 1626      CP	R2,R22
    00CC F020      BCS	0x00D1
    00CD E081      LDI	R24,1
    00CE E090      LDI	R25,0
    00CF 015C      MOVW	R10,R24
    00D0 C002      RJMP	0x00D3
    00D1 24AA      CLR	R10
    00D2 24BB      CLR	R11
    00D3 011A      MOVW	R2,R20
    00D4 202E      AND	R2,R14
    00D5 203F      AND	R3,R15
    00D6 202C      AND	R2,R12
    00D7 203D      AND	R3,R13
    00D8 202A      AND	R2,R10
    00D9 203B      AND	R3,R11
    00DA 2022      TST	R2
    00DB F411      BNE	0x00DE
    00DC 2033      TST	R3
    00DD F029      BEQ	0x00E3
(0050) point(x,y);
    00DE 2F26      MOV	R18,R22
    00DF 2733      CLR	R19
    00E0 850A      LDD	R16,Y+10
    00E1 2711      CLR	R17
    00E2 DAE0      RCALL	_point
(0051)     }
(0052) }
    00E3 DBB1      RCALL	pop_gset5
    00E4 9624      ADIW	R28,4
    00E5 9508      RET
_glcdDoFillRect:
  y                    --> R10
  x                    --> R14
  y2                   --> R20
  x2                   --> Y+18
  y1                   --> Y+16
  x1                   --> Y+14
    00E6 DB61      RCALL	push_arg4
    00E7 DBCF      RCALL	push_gset5
    00E8 9724      SBIW	R28,4
    00E9 894C      LDD	R20,Y+20
(0053) 
(0054) void glcdDoFillRect(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) {
(0055) 
(0056)     char x, y;
(0057) 	//RGB(r,g,b);
(0058) 	
(0059)     if ((x1 > glcd_Clip.X2) | (x2 < glcd_Clip.X1) | (y1 > glcd_Clip.Y2) | (y2 < glcd_Clip.Y1)) {return;}
    00EA 90200071  LDS	R2,_glcd_Clip+2
    00EC 840E      LDD	R0,Y+14
    00ED 1420      CP	R2,R0
    00EE F420      BCC	0x00F3
    00EF E081      LDI	R24,1
    00F0 E090      LDI	R25,0
    00F1 016C      MOVW	R12,R24
    00F2 C002      RJMP	0x00F5
    00F3 24CC      CLR	R12
    00F4 24DD      CLR	R13
    00F5 9020006F  LDS	R2,_glcd_Clip
    00F7 880A      LDD	R0,Y+18
    00F8 1402      CP	R0,R2
    00F9 F420      BCC	0x00FE
    00FA E081      LDI	R24,1
    00FB E090      LDI	R25,0
    00FC 017C      MOVW	R14,R24
    00FD C002      RJMP	0x0100
    00FE 24EE      CLR	R14
    00FF 24FF      CLR	R15
    0100 90200072  LDS	R2,_glcd_Clip+3
    0102 8808      LDD	R0,Y+16
    0103 1420      CP	R2,R0
    0104 F420      BCC	0x0109
    0105 E081      LDI	R24,1
    0106 E090      LDI	R25,0
    0107 015C      MOVW	R10,R24
    0108 C002      RJMP	0x010B
    0109 24AA      CLR	R10
    010A 24BB      CLR	R11
    010B 90200070  LDS	R2,_glcd_Clip+1
    010D 1542      CP	R20,R2
    010E F418      BCC	0x0112
    010F E061      LDI	R22,1
    0110 E070      LDI	R23,0
    0111 C002      RJMP	0x0114
    0112 2766      CLR	R22
    0113 2777      CLR	R23
    0114 0116      MOVW	R2,R12
    0115 282E      OR	R2,R14
    0116 283F      OR	R3,R15
    0117 282A      OR	R2,R10
    0118 283B      OR	R3,R11
    0119 2A26      OR	R2,R22
    011A 2A37      OR	R3,R23
    011B 2022      TST	R2
    011C F411      BNE	0x011F
    011D 2033      TST	R3
    011E F009      BEQ	0x0120
    011F C053      RJMP	0x0173
(0060)     if (x1 < glcd_Clip.X1) {x1 = glcd_Clip.X1;}
    0120 9020006F  LDS	R2,_glcd_Clip
    0122 840E      LDD	R0,Y+14
    0123 1402      CP	R0,R2
    0124 F408      BCC	0x0126
    0125 862E      STD	Y+14,R2
(0061)     if (y1 < glcd_Clip.Y1) {y1 = glcd_Clip.Y1;}
    0126 90200070  LDS	R2,_glcd_Clip+1
    0128 8808      LDD	R0,Y+16
    0129 1402      CP	R0,R2
    012A F408      BCC	0x012C
    012B 8A28      STD	Y+16,R2
(0062)     if (x2 > glcd_Clip.X2) {x2 = glcd_Clip.X2;}
    012C 90200071  LDS	R2,_glcd_Clip+2
    012E 880A      LDD	R0,Y+18
    012F 1420      CP	R2,R0
    0130 F408      BCC	0x0132
    0131 8A2A      STD	Y+18,R2
(0063)     if (y2 > glcd_Clip.Y2) {y2 = glcd_Clip.Y2;}
    0132 90200072  LDS	R2,_glcd_Clip+3
    0134 1624      CP	R2,R20
    0135 F408      BCC	0x0137
    0136 2D42      MOV	R20,R2
(0064)    
(0065)     if ((x1 <= x2) & (y1 <= y2))
    0137 880A      LDD	R0,Y+18
    0138 850E      LDD	R16,Y+14
    0139 1600      CP	R0,R16
    013A F018      BCS	0x013E
    013B E061      LDI	R22,1
    013C E070      LDI	R23,0
    013D C002      RJMP	0x0140
    013E 2766      CLR	R22
    013F 2777      CLR	R23
    0140 8808      LDD	R0,Y+16
    0141 1540      CP	R20,R0
    0142 F020      BCS	0x0147
    0143 E081      LDI	R24,1
    0144 E090      LDI	R25,0
    0145 015C      MOVW	R10,R24
    0146 C002      RJMP	0x0149
    0147 24AA      CLR	R10
    0148 24BB      CLR	R11
    0149 011B      MOVW	R2,R22
    014A 202A      AND	R2,R10
    014B 203B      AND	R3,R11
    014C 2022      TST	R2
    014D F411      BNE	0x0150
    014E 2033      TST	R3
    014F F119      BEQ	0x0173
(0066)      {
(0067)       glcdn_SetPageArea(x1,x2,y1,y2);
    0150 2E24      MOV	R2,R20
    0151 2433      CLR	R3
    0152 823B      STD	Y+3,R3
    0153 822A      STD	Y+2,R2
    0154 8828      LDD	R2,Y+16
    0155 2433      CLR	R3
    0156 8239      STD	Y+1,R3
    0157 8228      STD	Y+0,R2
    0158 892A      LDD	R18,Y+18
    0159 2733      CLR	R19
    015A 850E      LDD	R16,Y+14
    015B 2711      CLR	R17
    015C D9BB      RCALL	_glcdn_SetPageArea
(0068)       glcdn_WriteCommand(MEMWRITE);
    015D E50C      LDI	R16,0x5C
    015E E010      LDI	R17,0
    015F DA26      RCALL	_glcdn_WriteCommand
(0069)       for (y = y1; y <= y2; y++) {
    0160 88A8      LDD	R10,Y+16
    0161 C00F      RJMP	0x0171
(0070)         for (x = x1; x <= x2; x++) {
    0162 84EE      LDD	R14,Y+14
    0163 C009      RJMP	0x016D
(0071) 		glcdn_WriteData(Color1);
    0164 91000060  LDS	R16,0x60

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -