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

📄 lcd_app.lst

📁 ATmega64单片机
💻 LST
📖 第 1 页 / 共 5 页
字号:
   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 + -