📄 lcd_app.lst
字号:
1 .file "LCD_APP.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
7 .global __do_copy_data
8 .global __do_clear_bss
10 .text
11 .Ltext0:
98 .global LCD_print16
100 LCD_print16:
1:LCD\LCD_APP.c **** /*****************************************************/
2:LCD\LCD_APP.c **** /* File name : LCD_APP.c */
3:LCD\LCD_APP.c **** /* Description : application code of LCD_ASCII,LCD_GBK & ICON */
4:LCD\LCD_APP.c **** /* Platform : AVRStudio4.13 + WinAVR20070525 for AVR */
5:LCD\LCD_APP.c **** /* Author : Michael Zhang - 章其波 */
6:LCD\LCD_APP.c **** /* Email : sudazqb@163.com */
7:LCD\LCD_APP.c **** /* MSN : zhangqibo_1985@hotmail.com */
8:LCD\LCD_APP.c **** /* Date : 2007-2-2 */
9:LCD\LCD_APP.c **** /* NOT FOR COMMERCIAL USE, ALL RIGHT RESERVED! */
10:LCD\LCD_APP.c **** /*****************************************************/
11:LCD\LCD_APP.c **** /* Change Log: */
12:LCD\LCD_APP.c **** /* 20071109: add a faster display function for 3310 */
13:LCD\LCD_APP.c **** /* 20071021: add 6*12 tag display */
14:LCD\LCD_APP.c **** /* 20070202: original version */
15:LCD\LCD_APP.c **** /*****************************************************/
16:LCD\LCD_APP.c ****
17:LCD\LCD_APP.c **** #include"LCD_APP.h"
18:LCD\LCD_APP.c **** #include<avr/pgmspace.h>
19:LCD\LCD_APP.c **** #include"ICON.h"
20:LCD\LCD_APP.c ****
21:LCD\LCD_APP.c **** void Print_ICON_12(unsigned int x,unsigned int y,unsigned char ch)
22:LCD\LCD_APP.c **** {
23:LCD\LCD_APP.c **** unsigned char i,j;
24:LCD\LCD_APP.c **** unsigned char temp;
25:LCD\LCD_APP.c **** for(i=0;i<12;i++)
26:LCD\LCD_APP.c **** {
27:LCD\LCD_APP.c **** temp = pgm_read_byte(&ICON[ch][i]);
28:LCD\LCD_APP.c **** for(j=0;j<8;j++)
29:LCD\LCD_APP.c **** {
30:LCD\LCD_APP.c **** if(temp&(1<<j))OnePixel(x+i,y+j,1);
31:LCD\LCD_APP.c **** else OnePixel(x+i,y+j,0);
32:LCD\LCD_APP.c **** }
33:LCD\LCD_APP.c **** }
34:LCD\LCD_APP.c **** for(i=0;i<12;i++)
35:LCD\LCD_APP.c **** {
36:LCD\LCD_APP.c **** temp = pgm_read_byte(&ICON[ch][i+12]);
37:LCD\LCD_APP.c **** for(j=0;j<4;j++)
38:LCD\LCD_APP.c **** {
39:LCD\LCD_APP.c **** if(temp&(1<<j))OnePixel(x+i,y+j+8,1);
40:LCD\LCD_APP.c **** else OnePixel(x+i,y+j+8,0);
41:LCD\LCD_APP.c **** }
42:LCD\LCD_APP.c **** }
43:LCD\LCD_APP.c **** }
44:LCD\LCD_APP.c ****
45:LCD\LCD_APP.c **** void Print_ICON1_12(unsigned int x,unsigned int y,unsigned char ch)
46:LCD\LCD_APP.c **** {
47:LCD\LCD_APP.c **** unsigned char i,j;
48:LCD\LCD_APP.c **** unsigned char temp;
49:LCD\LCD_APP.c **** for(i=0;i<6;i++)
50:LCD\LCD_APP.c **** {
51:LCD\LCD_APP.c **** temp = pgm_read_byte(&ICON1[ch][i]);
52:LCD\LCD_APP.c **** for(j=0;j<8;j++)
53:LCD\LCD_APP.c **** {
54:LCD\LCD_APP.c **** if(temp&(1<<j))OnePixel(x+i,y+j,1);
55:LCD\LCD_APP.c **** else OnePixel(x+i,y+j,0);
56:LCD\LCD_APP.c **** }
57:LCD\LCD_APP.c **** }
58:LCD\LCD_APP.c **** for(i=0;i<6;i++)
59:LCD\LCD_APP.c **** {
60:LCD\LCD_APP.c **** temp = pgm_read_byte(&ICON1[ch][i+6]);
61:LCD\LCD_APP.c **** for(j=0;j<4;j++)
62:LCD\LCD_APP.c **** {
63:LCD\LCD_APP.c **** if(temp&(1<<j))OnePixel(x+i,y+j+8,1);
64:LCD\LCD_APP.c **** else OnePixel(x+i,y+j+8,0);
65:LCD\LCD_APP.c **** }
66:LCD\LCD_APP.c **** }
67:LCD\LCD_APP.c **** }
68:LCD\LCD_APP.c ****
69:LCD\LCD_APP.c **** unsigned char LCD_print12_P(unsigned int x,unsigned int y,const char *str)
70:LCD\LCD_APP.c **** {
71:LCD\LCD_APP.c **** unsigned int tempX = x,tempY = y;
72:LCD\LCD_APP.c **** unsigned int temp;
73:LCD\LCD_APP.c **** while((temp = pgm_read_byte(str))!=0)
74:LCD\LCD_APP.c **** {
75:LCD\LCD_APP.c **** if(temp == '\n')
76:LCD\LCD_APP.c **** {
77:LCD\LCD_APP.c **** if((MAX_X - tempX)<6)
78:LCD\LCD_APP.c **** {
79:LCD\LCD_APP.c **** tempX = 0;
80:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
81:LCD\LCD_APP.c **** else tempY += 12;
82:LCD\LCD_APP.c **** }
83:LCD\LCD_APP.c **** else if((MAX_Y - tempY)<24)return 1;
84:LCD\LCD_APP.c **** else
85:LCD\LCD_APP.c **** {
86:LCD\LCD_APP.c **** tempX = 0;
87:LCD\LCD_APP.c **** tempY += 12;
88:LCD\LCD_APP.c **** }
89:LCD\LCD_APP.c **** str ++;
90:LCD\LCD_APP.c **** }
91:LCD\LCD_APP.c **** else if(temp<0x20)
92:LCD\LCD_APP.c **** {
93:LCD\LCD_APP.c **** if((MAX_X - tempX)<6)
94:LCD\LCD_APP.c **** {
95:LCD\LCD_APP.c **** tempX = 0;
96:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
97:LCD\LCD_APP.c **** else tempY += 12;
98:LCD\LCD_APP.c **** }
99:LCD\LCD_APP.c **** Dis_Ascii_12(tempX,tempY,0x20);
100:LCD\LCD_APP.c **** str ++;
101:LCD\LCD_APP.c **** tempX += 6;
102:LCD\LCD_APP.c ****
103:LCD\LCD_APP.c **** }
104:LCD\LCD_APP.c **** else if(temp<0x80)
105:LCD\LCD_APP.c **** {
106:LCD\LCD_APP.c **** if((MAX_X - tempX)<6)
107:LCD\LCD_APP.c **** {
108:LCD\LCD_APP.c **** tempX = 0;
109:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
110:LCD\LCD_APP.c **** else tempY += 12;
111:LCD\LCD_APP.c **** }
112:LCD\LCD_APP.c **** Dis_Ascii_12(tempX,tempY,temp);
113:LCD\LCD_APP.c **** str ++;
114:LCD\LCD_APP.c **** tempX += 6;
115:LCD\LCD_APP.c **** }
116:LCD\LCD_APP.c **** else
117:LCD\LCD_APP.c **** {
118:LCD\LCD_APP.c **** if((MAX_X - tempX)<12)
119:LCD\LCD_APP.c **** {
120:LCD\LCD_APP.c **** tempX = 0;
121:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
122:LCD\LCD_APP.c **** else tempY += 12;
123:LCD\LCD_APP.c **** }
124:LCD\LCD_APP.c **** temp += (pgm_read_byte(++str))<<8;
125:LCD\LCD_APP.c **** Dis_GBK12(tempX,tempY,(unsigned char *)(&temp));
126:LCD\LCD_APP.c **** str ++;
127:LCD\LCD_APP.c **** tempX += 12;
128:LCD\LCD_APP.c **** }
129:LCD\LCD_APP.c **** }
130:LCD\LCD_APP.c **** return 0;
131:LCD\LCD_APP.c **** }
132:LCD\LCD_APP.c ****
133:LCD\LCD_APP.c **** unsigned char LCD_print12_fast(unsigned int x,unsigned int y,unsigned char *str)
134:LCD\LCD_APP.c **** {
135:LCD\LCD_APP.c **** unsigned int tempX = x,tempY = y;
136:LCD\LCD_APP.c **** while(*str)
137:LCD\LCD_APP.c **** {
138:LCD\LCD_APP.c **** if(*str == '\n')
139:LCD\LCD_APP.c **** {
140:LCD\LCD_APP.c **** if((MAX_X - tempX)<6)
141:LCD\LCD_APP.c **** {
142:LCD\LCD_APP.c **** tempX = 0;
143:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
144:LCD\LCD_APP.c **** else tempY += 12;
145:LCD\LCD_APP.c **** }
146:LCD\LCD_APP.c **** else if((MAX_Y - tempY)<24)return 1;
147:LCD\LCD_APP.c **** else
148:LCD\LCD_APP.c **** {
149:LCD\LCD_APP.c **** tempX = 0;
150:LCD\LCD_APP.c **** tempY += 12;
151:LCD\LCD_APP.c **** }
152:LCD\LCD_APP.c **** str ++;
153:LCD\LCD_APP.c **** }
154:LCD\LCD_APP.c **** else if(*str<0x20)
155:LCD\LCD_APP.c **** {
156:LCD\LCD_APP.c **** if((MAX_X - tempX)<6)
157:LCD\LCD_APP.c **** {
158:LCD\LCD_APP.c **** tempX = 0;
159:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
160:LCD\LCD_APP.c **** else tempY += 12;
161:LCD\LCD_APP.c **** }
162:LCD\LCD_APP.c **** Dis_Ascii_12_fast(tempX,tempY,0x20);
163:LCD\LCD_APP.c **** str ++;
164:LCD\LCD_APP.c **** tempX += 6;
165:LCD\LCD_APP.c ****
166:LCD\LCD_APP.c **** }
167:LCD\LCD_APP.c **** else if(*str<0x80)
168:LCD\LCD_APP.c **** {
169:LCD\LCD_APP.c **** if((MAX_X - tempX)<6)
170:LCD\LCD_APP.c **** {
171:LCD\LCD_APP.c **** tempX = 0;
172:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
173:LCD\LCD_APP.c **** else tempY += 12;
174:LCD\LCD_APP.c **** }
175:LCD\LCD_APP.c **** Dis_Ascii_12_fast(tempX,tempY,*str);
176:LCD\LCD_APP.c **** str ++;
177:LCD\LCD_APP.c **** tempX += 6;
178:LCD\LCD_APP.c **** }
179:LCD\LCD_APP.c **** else
180:LCD\LCD_APP.c **** {
181:LCD\LCD_APP.c **** if((MAX_X - tempX)<12)
182:LCD\LCD_APP.c **** {
183:LCD\LCD_APP.c **** tempX = 0;
184:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
185:LCD\LCD_APP.c **** else tempY += 12;
186:LCD\LCD_APP.c **** }
187:LCD\LCD_APP.c **** Dis_GBK12_fast(tempX,tempY,str);
188:LCD\LCD_APP.c **** str += 2;
189:LCD\LCD_APP.c **** tempX += 12;
190:LCD\LCD_APP.c **** }
191:LCD\LCD_APP.c **** }
192:LCD\LCD_APP.c **** return 0;
193:LCD\LCD_APP.c **** }
194:LCD\LCD_APP.c ****
195:LCD\LCD_APP.c **** unsigned char LCD_print12(unsigned int x,unsigned int y,unsigned char *str)
196:LCD\LCD_APP.c **** {
197:LCD\LCD_APP.c **** unsigned int tempX = x,tempY = y;
198:LCD\LCD_APP.c **** while(*str)
199:LCD\LCD_APP.c **** {
200:LCD\LCD_APP.c **** if(*str == '\n')
201:LCD\LCD_APP.c **** {
202:LCD\LCD_APP.c **** if((MAX_X - tempX)<6)
203:LCD\LCD_APP.c **** {
204:LCD\LCD_APP.c **** tempX = 0;
205:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
206:LCD\LCD_APP.c **** else tempY += 12;
207:LCD\LCD_APP.c **** }
208:LCD\LCD_APP.c **** else if((MAX_Y - tempY)<24)return 1;
209:LCD\LCD_APP.c **** else
210:LCD\LCD_APP.c **** {
211:LCD\LCD_APP.c **** tempX = 0;
212:LCD\LCD_APP.c **** tempY += 12;
213:LCD\LCD_APP.c **** }
214:LCD\LCD_APP.c **** str ++;
215:LCD\LCD_APP.c **** }
216:LCD\LCD_APP.c **** else if(*str<0x20)
217:LCD\LCD_APP.c **** {
218:LCD\LCD_APP.c **** if((MAX_X - tempX)<6)
219:LCD\LCD_APP.c **** {
220:LCD\LCD_APP.c **** tempX = 0;
221:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
222:LCD\LCD_APP.c **** else tempY += 12;
223:LCD\LCD_APP.c **** }
224:LCD\LCD_APP.c **** Dis_Ascii_12(tempX,tempY,0x20);
225:LCD\LCD_APP.c **** str ++;
226:LCD\LCD_APP.c **** tempX += 6;
227:LCD\LCD_APP.c ****
228:LCD\LCD_APP.c **** }
229:LCD\LCD_APP.c **** else if(*str<0x80)
230:LCD\LCD_APP.c **** {
231:LCD\LCD_APP.c **** if((MAX_X - tempX)<6)
232:LCD\LCD_APP.c **** {
233:LCD\LCD_APP.c **** tempX = 0;
234:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
235:LCD\LCD_APP.c **** else tempY += 12;
236:LCD\LCD_APP.c **** }
237:LCD\LCD_APP.c **** Dis_Ascii_12(tempX,tempY,*str);
238:LCD\LCD_APP.c **** str ++;
239:LCD\LCD_APP.c **** tempX += 6;
240:LCD\LCD_APP.c **** }
241:LCD\LCD_APP.c **** else
242:LCD\LCD_APP.c **** {
243:LCD\LCD_APP.c **** if((MAX_X - tempX)<12)
244:LCD\LCD_APP.c **** {
245:LCD\LCD_APP.c **** tempX = 0;
246:LCD\LCD_APP.c **** if((MAX_Y - tempY)<24)return 1;
247:LCD\LCD_APP.c **** else tempY += 12;
248:LCD\LCD_APP.c **** }
249:LCD\LCD_APP.c **** Dis_GBK12(tempX,tempY,str);
250:LCD\LCD_APP.c **** str += 2;
251:LCD\LCD_APP.c **** tempX += 12;
252:LCD\LCD_APP.c **** }
253:LCD\LCD_APP.c **** }
254:LCD\LCD_APP.c **** return 0;
255:LCD\LCD_APP.c **** }
256:LCD\LCD_APP.c ****
257:LCD\LCD_APP.c **** unsigned char LCD_print16_P(unsigned int x,unsigned int y,const char *str)
258:LCD\LCD_APP.c **** {
259:LCD\LCD_APP.c **** unsigned int tempX = x,tempY = y;
260:LCD\LCD_APP.c **** unsigned int temp;
261:LCD\LCD_APP.c **** while((temp = pgm_read_byte(str))!=0)
262:LCD\LCD_APP.c **** {
263:LCD\LCD_APP.c **** if(temp == '\n')
264:LCD\LCD_APP.c **** {
265:LCD\LCD_APP.c **** if((MAX_X - tempX)<8)
266:LCD\LCD_APP.c **** {
267:LCD\LCD_APP.c **** tempX = 0;
268:LCD\LCD_APP.c **** if((MAX_Y - tempY)<32)return 1;
269:LCD\LCD_APP.c **** else tempY += 16;
270:LCD\LCD_APP.c **** }
271:LCD\LCD_APP.c **** else if((MAX_Y - tempY)<32)return 1;
272:LCD\LCD_APP.c **** else
273:LCD\LCD_APP.c **** {
274:LCD\LCD_APP.c **** tempX = 0;
275:LCD\LCD_APP.c **** tempY += 16;
276:LCD\LCD_APP.c **** }
277:LCD\LCD_APP.c **** str ++;
278:LCD\LCD_APP.c **** }
279:LCD\LCD_APP.c **** else if(temp<0x20)
280:LCD\LCD_APP.c **** {
281:LCD\LCD_APP.c **** if((MAX_X - tempX)<8)
282:LCD\LCD_APP.c **** {
283:LCD\LCD_APP.c **** tempX = 0;
284:LCD\LCD_APP.c **** if((MAX_Y - tempY)<32)return 1;
285:LCD\LCD_APP.c **** else tempY += 16;
286:LCD\LCD_APP.c **** }
287:LCD\LCD_APP.c **** Dis_Ascii_16(tempX,tempY,0x20);
288:LCD\LCD_APP.c **** str ++;
289:LCD\LCD_APP.c **** tempX += 8;
290:LCD\LCD_APP.c **** }
291:LCD\LCD_APP.c **** else if(temp<0x80)
292:LCD\LCD_APP.c **** {
293:LCD\LCD_APP.c **** if((MAX_X - tempX)<8)
294:LCD\LCD_APP.c **** {
295:LCD\LCD_APP.c **** tempX = 0;
296:LCD\LCD_APP.c **** if((MAX_Y - tempY)<32)return 1;
297:LCD\LCD_APP.c **** else tempY += 16;
298:LCD\LCD_APP.c **** }
299:LCD\LCD_APP.c **** Dis_Ascii_16(tempX,tempY,temp);
300:LCD\LCD_APP.c **** str ++;
301:LCD\LCD_APP.c **** tempX += 8;
302:LCD\LCD_APP.c **** }
303:LCD\LCD_APP.c **** else
304:LCD\LCD_APP.c **** {
305:LCD\LCD_APP.c **** if((MAX_X - tempX)<16)
306:LCD\LCD_APP.c **** {
307:LCD\LCD_APP.c **** tempX = 0;
308:LCD\LCD_APP.c **** if((MAX_Y - tempY)<32)return 1;
309:LCD\LCD_APP.c **** else tempY += 16;
310:LCD\LCD_APP.c **** }
311:LCD\LCD_APP.c **** temp += (pgm_read_byte(++str))<<8;
312:LCD\LCD_APP.c **** Dis_GBK16(tempX,tempY,(unsigned char *)(&temp));
313:LCD\LCD_APP.c **** str ++;
314:LCD\LCD_APP.c **** tempX += 16;
315:LCD\LCD_APP.c **** }
316:LCD\LCD_APP.c **** }
317:LCD\LCD_APP.c **** return 0;
318:LCD\LCD_APP.c **** }
319:LCD\LCD_APP.c ****
320:LCD\LCD_APP.c **** unsigned char LCD_print16(unsigned int x,unsigned int y,unsigned char *str)
321:LCD\LCD_APP.c **** {
101 bn 68,0,321,.LM0-.LFBB1
102 .LM0:
103 .LFBB1:
104 /* prologue: frame size=0 */
105 0000 EF92 push r14
106 0002 FF92 push r15
107 0004 0F93 push r16
108 0006 1F93 push r17
109 0008 CF93 push r28
110 000a DF93 push r29
111 /* prologue end (size=6) */
112 000c 7A01 movw r14,r20
113 000e EC01 movw r28,r24
114 0010 8B01 movw r16,r22
115 0012 00C0 rjmp .L33
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -