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

📄 lcd.lst

📁 l602驱动程序 数据总线为4根 增加了io利用率
💻 LST
📖 第 1 页 / 共 3 页
字号:
 124:lcd.c         **** 		_delay_us(1);	//tEL
 125:lcd.c         **** 
 126:lcd.c         **** 		SET_E();
 178               	/../avr/include/util/delay.h",132,0,0,.Ltext9
 179               	.Ltext9:
 181               	.LM13:
 182               		mov r25,r18
 183               	/* #APP */
 184               		1: dec r25
 185               		brne 1b
 186               	/* #NOAPP */
 187               	.LBE73:
 188               	.LBE72:
 189 0032 922F      	.LBE71:
 190               	.LBE70:
 192 0036 01F4      	.Ltext10:
 194               	.LM14:
 195               		in r25,51-0x20
 196               	.LBB74:
 197               	.LBB75:
 198               	.LBB76:
 199               	.LBB77:
 127:lcd.c         **** 		_delay_us(0.5);
 128:lcd.c         **** 
 129:lcd.c         **** 		temp=LCD_DATA_PIN;
 200               	/../avr/include/util/delay.h",132,0,0,.Ltext11
 201               	.Ltext11:
 203               	.LM15:
 204               		mov r25,r18
 205               	/* #APP */
 206               		1: dec r25
 207               		brne 1b
 208               	/* #NOAPP */
 209               	.LBE77:
 210               	.LBE76:
 211 003a 922F      	.LBE75:
 212               	.LBE74:
 214 003e 01F4      	.Ltext12:
 216               	.LM16:
 217               		cbi 50-0x20,7
 218               	.LBB78:
 219               	.LBB79:
 220               	.LBB80:
 221               	.LBB81:
 130:lcd.c         **** 		temp&=0x0F;
 131:lcd.c         **** 
 132:lcd.c         **** 		status=status|temp;
 133:lcd.c         **** 
 134:lcd.c         **** 		busy=status & 0b10000000;
 135:lcd.c         **** 
 136:lcd.c         **** 		_delay_us(0.5);
 137:lcd.c         **** 		CLEAR_E();
 222               	/../avr/include/util/delay.h",132,0,0,.Ltext13
 223               	.Ltext13:
 225               	.LM17:
 226               		mov r25,r19
 227               	/* #APP */
 228               		1: dec r25
 229               		brne 1b
 230               	/* #NOAPP */
 231               	.LBE81:
 232               	.LBE80:
 233 0042 932F      	.LBE79:
 234               	.LBE78:
 236 0046 01F4      	.Ltext14:
 238               	.LM18:
 239               		sbrc r24,7
 240               		rjmp .L2
 242               	.LM19:
 243               		cbi 50-0x20,5
 138:lcd.c         **** 		_delay_us(1);	//tEL
 139:lcd.c         **** 	}while(busy);
 244               	-LCDBusyLoop
 245               	.LM20:
 246 0048 87FD      		in r24,52-0x20
 247 004a 00C0      		ori r24,lo8(15)
 140:lcd.c         **** 
 141:lcd.c         **** 	CLEAR_RW();		//write mode
 248               	 52-0x20,r24
 249               	/* epilogue: frame size=0 */
 250 004c 9598      		ret
 142:lcd.c         **** 	//Change Port to output
 143:lcd.c         **** 	LCD_DATA_DDR|=0x0F;
 251               	epilogue end (size=1) */
 252               	/* function LCDBusyLoop size 57 (56) */
 279               	.Lscope0:
 283               	.global	LCDByte
 285               	LCDByte:
 287               	.LM21:
 288               	/* prologue: frame size=0 */
 289               	/* prologue end (size=0) */
 290               		mov r18,r24
 292               	.LM22:
 293               		tst r22
 294               		brne .L8
 296               	.LM23:
 297 0056 282F      		cbi 50-0x20,6
 298               		rjmp .L10
 299               	.L8:
 301 005a 01F4      	.LM24:
 302               		sbi 50-0x20,6
 303               	.L10:
 304 005c 9698      	.LBB82:
 305 005e 00C0      	.LBB83:
 306               	.LBB84:
 307               	.LBB85:
 309 0060 969A      	.Ltext15:
 311               	.LM25:
 312               		ldi r24,lo8(1)
 313               	/* #APP */
 314               		1: dec r24
 315               		brne 1b
 316               	/* #NOAPP */
 317               	.LBE85:
 318               	.LBE84:
 319 0062 81E0      	.LBE83:
 320               	.LBE82:
 322 0066 01F4      	.Ltext16:
 324               	.LM26:
 325               		sbi 50-0x20,7
 327               	.LM27:
 328               		in r24,53-0x20
 329               		andi r24,lo8(-16)
 330               		mov r25,r18
 331               		swap r25
 332 0068 979A      		andi r25,0x0f
 333               		or r24,r25
 335 006a 85B3      	.LM28:
 336 006c 807F      		out 53-0x20,r24
 337 006e 922F      	.LBB86:
 338 0070 9295      	.LBB87:
 339 0072 9F70      	.LBB88:
 340 0074 892B      	.LBB89:
 342               	.Ltext17:
 344               	.LM29:
 345               		ldi r25,lo8(2)
 346               		mov r24,r25
 347               	/* #APP */
 348               		1: dec r24
 349               		brne 1b
 350               	/* #NOAPP */
 351               	.LBE89:
 352 0078 92E0      	.LBE88:
 353 007a 892F      	.LBE87:
 354               	.LBE86:
 356 007e 01F4      	.Ltext18:
 358               	.LM30:
 359               		cbi 50-0x20,7
 360               	.LBB90:
 361               	.LBB91:
 362               	.LBB92:
 363               	.LBB93:
 365               	.Ltext19:
 367               	.LM31:
 368               		mov r24,r25
 369               	/* #APP */
 370               		1: dec r24
 371               		brne 1b
 372               	/* #NOAPP */
 373               	.LBE93:
 374               	.LBE92:
 375 0082 892F      	.LBE91:
 376               	.LBE90:
 378 0086 01F4      	.Ltext20:
 380               	.LM32:
 381               		sbi 50-0x20,7
 383               	.LM33:
 384               		in r24,53-0x20
 385               		andi r24,lo8(-16)
 386               		andi r18,lo8(15)
 387               		or r24,r18
 389               	.LM34:
 390               		out 53-0x20,r24
 391 008a 85B3      	.LBB94:
 392 008c 807F      	.LBB95:
 393 008e 2F70      	.LBB96:
 394 0090 822B      	.LBB97:
 396               	.Ltext21:
 398               	.LM35:
 399               		mov r24,r25
 400               	/* #APP */
 401               		1: dec r24
 402               		brne 1b
 403               	/* #NOAPP */
 404               	.LBE97:
 405               	.LBE96:
 406 0094 892F      	.LBE95:
 407               	.LBE94:
 409 0098 01F4      	.Ltext22:
 411               	.LM36:
 412               		cbi 50-0x20,7
 413               	.LBB98:
 414               	.LBB99:
 415               	.LBB100:
 416               	.LBB101:
 418               	.Ltext23:
 420               	.LM37:
 421               	/* #APP */
 422               		1: dec r25
 423               		brne 1b
 424               	/* #NOAPP */
 425               	.LBE101:
 426               	.LBE100:
 427               	.LBE99:
 428               	.LBE98:
 430 009e 01F4      	.Ltext24:
 432               	.LM38:
 433               		call LCDBusyLoop
 434               	/* epilogue: frame size=0 */
 435               		ret
 436               	/* epilogue end (size=1) */
 437               	/* function LCDByte size 50 (49) */
 454               	.Lscope1:
 457               	.global	LCDWriteString
 459               	LCDWriteString:
 461               	.LM39:
 462               	/* prologue: frame size=0 */
 463               		push r28
 464               		push r29
 465               	/* prologue end (size=2) */
 466               		movw r28,r24
 144:lcd.c         **** 
 145:lcd.c         **** }
 146:lcd.c         **** 
 147:lcd.c         **** void InitLCD(uint8_t style)
 148:lcd.c         **** {
 149:lcd.c         **** 	/*****************************************************************
 150:lcd.c         **** 	
 151:lcd.c         **** 	This function Initializes the lcd module
 152:lcd.c         **** 	must be called before calling lcd related functions
 153:lcd.c         **** 
 154:lcd.c         **** 	Arguments:
 155:lcd.c         **** 	style = LS_BLINK,LS_ULINE(can be "OR"ed for combination)
 156:lcd.c         **** 	LS_BLINK :The cursor is blinking type
 157:lcd.c         **** 	LS_ULINE :Cursor is "underline" type else "block" type
 158:lcd.c         **** 
 159:lcd.c         **** 	*****************************************************************/
 160:lcd.c         **** 	
 161:lcd.c         **** 	//After power on Wait for LCD to Initialize
 162:lcd.c         **** 	_delay_ms(30);
 163:lcd.c         **** 	
 164:lcd.c         **** 	//Set IO Ports
 165:lcd.c         **** 	LCD_DATA_DDR|=(0x0F);
 166:lcd.c         **** 	LCD_E_DDR|=(1<<LCD_E_POS);
 167:lcd.c         **** 	LCD_RS_DDR|=(1<<LCD_RS_POS);
 168:lcd.c         **** 	LCD_RW_DDR|=(1<<LCD_RW_POS);
 169:lcd.c         **** 	LCD_DATA_PORT&=0XF0;
 170:lcd.c         **** 	
 171:lcd.c         ****        
 172:lcd.c         **** 	CLEAR_E();
 173:lcd.c         **** 	CLEAR_RW();
 174:lcd.c         **** 	CLEAR_RS();
 175:lcd.c         **** 
 176:lcd.c         **** 	//Set 4-bit mode
 177:lcd.c         **** 	_delay_us(0.3);	//tAS
 178:lcd.c         **** 
 179:lcd.c         **** 	SET_E();
 180:lcd.c         **** 	LCD_DATA_PORT|=(0b00000010); //[B] To transfer 0b00100000 i was using LCD_DATA_PORT|=0b00100000
 181:lcd.c         **** 	_delay_us(1);
 182:lcd.c         **** 	CLEAR_E();
 183:lcd.c         **** 	_delay_us(1);
 184:lcd.c         **** 	
 185:lcd.c         **** 	//Wait for LCD to execute the Functionset Command
 186:lcd.c         **** 	LCDBusyLoop();                                    //[B] Forgot this delay
 187:lcd.c         **** 
 188:lcd.c         **** 	//Now the LCD is in 4-bit mode
 189:lcd.c         **** 
 190:lcd.c         **** 	LCDCmd(0b00001100|style);	//Display On
 191:lcd.c         **** 	LCDCmd(0b00101000);			//function set 4-bit,2 line 5x7 dot format
 192:lcd.c         **** }
 193:lcd.c         **** void LCDWriteString(const char *msg)
 194:lcd.c         **** {
 467               	L14:
 469               	.LM40:
 470 00a6 CF93      		ldi r22,lo8(1)
 471 00a8 DF93      		call LCDByte
 473 00aa EC01      	.LM41:
 474 00ac 00C0      		adiw r28,1
 475               	.L13:
 195:lcd.c         **** 	/*****************************************************************
 196:lcd.c         **** 	
 197:lcd.c         **** 	This function Writes a given string to lcd at the current cursor
 198:lcd.c         **** 	location.
 199:lcd.c         **** 
 200:lcd.c         **** 	Arguments:
 201:lcd.c         **** 	msg: a null terminated string to print
 202:lcd.c         **** 
 203:lcd.c         **** 
 204:lcd.c         **** 	*****************************************************************/
 205:lcd.c         ****  while(*msg!='\0')
 206:lcd.c         ****  {
 207:lcd.c         **** 	LCDData(*msg);
 476               	8,0,205,.LM42-LCDWriteString
 477               	.LM42:
 478 00ae 61E0      		ld r24,Y
 479 00b0 0E94 0000 		tst r24
 208:lcd.c         **** 	msg++;
 480               	e .L14
 481               	/* epilogue: frame size=0 */
 482 00b4 2196      		pop r29
 483               		pop r28
 484               		ret
 485               	/* epilogue end (size=3) */
 486 00b6 8881      	/* function LCDWriteString size 14 (9) */
 488 00ba 01F4      	.Lscope2:
 492 00c0 0895      	.global	LCDWriteInt
 494               	LCDWriteInt:
 496               	.LM43:
 497               	/* prologue: frame size=5 */
 498               		push r14
 499               		push r15
 500               		push r16
 501               		push r17
 502               		push r28
 209:lcd.c         ****  }
 210:lcd.c         **** }
 211:lcd.c         **** 
 212:lcd.c         **** void LCDWriteInt(int val,unsigned int field_length)
 213:lcd.c         **** {
 503               	L__
 504               		in r29,__SP_H__
 505               		sbiw r28,5
 506 00c2 EF92      		in __tmp_reg__,__SREG__
 507 00c4 FF92      		cli
 508 00c6 0F93      		out __SP_H__,r29
 509 00c8 1F93      		out __SREG__,__tmp_reg__
 510 00ca CF93      		out __SP_L__,r28
 511 00cc DF93      	/* prologue end (size=14) */
 512 00ce CDB7      		movw r18,r24

⌨️ 快捷键说明

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