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

📄 lcd1602pbpd.s

📁 一些LCD库 分享给大家了 哈哈~
💻 S
📖 第 1 页 / 共 5 页
字号:
; 			write(0,0x06);
	ldi R18,6
	clr R16
	xcall _write
; 	}
	xjmp L174
L173:
; 	else if(!strcmp(str,"DIS_SHIFT"))	//disable shift
	ldi R18,<L180
	ldi R19,>L180
	movw R16,R10
	xcall _strcmp
	movw R12,R16
	cpi R16,0
	cpc R16,R17
	brne L178
X65:
; 	{
; 		shiftEn=0;
	clr R2
	sts L155,R2
; 		if(isACinc)
	lds R2,L156
	tst R2
	breq L181
X66:
; 			write(0,0x05);
	ldi R18,5
	clr R16
	xcall _write
	xjmp L179
L181:
; 		else
; 			write(0,0x04);
	ldi R18,4
	clr R16
	xcall _write
; 	}	
	xjmp L179
L178:
; /*--------------------------------------------------
; dispEn & cursorEn & blinkEn共用一个命令设置
; --------------------------------------------------*/
; 	else if(!strcmp(str,"OPEN_LCD"))	//opern lcd
	ldi R18,<L185
	ldi R19,>L185
	movw R16,R10
	xcall _strcmp
	movw R12,R16
	cpi R16,0
	cpc R16,R17
	brne L183
X67:
; 	{
; 		dispEn=1;
	ldi R24,1
	sts L152,R24
; 		if(cursorEn)
	lds R2,L153
	tst R2
	breq L186
X68:
; 			if(blinkEn)
	lds R2,L154
	tst R2
	breq L188
X69:
; 				write(0,0x0F);
	ldi R18,15
	clr R16
	xcall _write
	xjmp L184
L188:
; 			else
; 				write(0,0x0E);
	ldi R18,14
	clr R16
	xcall _write
	xjmp L184
L186:
; 		else
; 			if(blinkEn)
	lds R2,L154
	tst R2
	breq L190
X70:
; 				write(0,0x0D);
	ldi R18,13
	clr R16
	xcall _write
	xjmp L184
L190:
; 			else
; 				write(0,0x0C);
	ldi R18,12
	clr R16
	xcall _write
; 	}		
	xjmp L184
L183:
; 	else if(!strcmp(str,"CLOSE_LCD"))	//close lcd
	ldi R18,<L194
	ldi R19,>L194
	movw R16,R10
	xcall _strcmp
	movw R12,R16
	cpi R16,0
	cpc R16,R17
	brne L192
X71:
; 	{
; 		dispEn=0;
	clr R2
	sts L152,R2
; 		if(cursorEn)
	lds R2,L153
	tst R2
	breq L195
X72:
; 			if(blinkEn)
	lds R2,L154
	tst R2
	breq L197
X73:
; 				write(0,0x0B);
	ldi R18,11
	clr R16
	xcall _write
	xjmp L193
L197:
; 			else
; 				write(0,0x0A);
	ldi R18,10
	clr R16
	xcall _write
	xjmp L193
L195:
; 		else
; 			if(blinkEn)
	lds R2,L154
	tst R2
	breq L199
X74:
; 				write(0,0x09);
	ldi R18,9
	clr R16
	xcall _write
	xjmp L193
L199:
; 			else
; 				write(0,0x08);
	ldi R18,8
	clr R16
	xcall _write
; 	}	
	xjmp L193
L192:
; 	else if(!strcmp(str,"OPEN_CURS"))	//open cursor	
	ldi R18,<L203
	ldi R19,>L203
	movw R16,R10
	xcall _strcmp
	movw R12,R16
	cpi R16,0
	cpc R16,R17
	brne L201
X75:
; 	{
; 		cursorEn=1;
	ldi R24,1
	sts L153,R24
; 		if(dispEn)
	lds R2,L152
	tst R2
	breq L204
X76:
; 			if(blinkEn)
	lds R2,L154
	tst R2
	breq L206
X77:
; 				write(0,0x0F);
	ldi R18,15
	clr R16
	xcall _write
	xjmp L202
L206:
; 			else
; 				write(0,0x0E);
	ldi R18,14
	clr R16
	xcall _write
	xjmp L202
L204:
; 		else
; 			if(blinkEn)
	lds R2,L154
	tst R2
	breq L208
X78:
; 				write(0,0x0B);
	ldi R18,11
	clr R16
	xcall _write
	xjmp L202
L208:
; 			else
; 				write(0,0x0A);
	ldi R18,10
	clr R16
	xcall _write
; 	}	
	xjmp L202
L201:
; 	else if(!strcmp(str,"CLOSE_CURS"))	//close cursor
	ldi R18,<L212
	ldi R19,>L212
	movw R16,R10
	xcall _strcmp
	movw R12,R16
	cpi R16,0
	cpc R16,R17
	brne L210
X79:
; 	{
; 		cursorEn=0;
	clr R2
	sts L153,R2
; 		if(dispEn)
	lds R2,L152
	tst R2
	breq L213
X80:
; 			if(blinkEn)
	lds R2,L154
	tst R2
	breq L215
X81:
; 				write(0,0x0D);
	ldi R18,13
	clr R16
	xcall _write
	xjmp L211
L215:
; 			else
; 				write(0,0x0C);
	ldi R18,12
	clr R16
	xcall _write
	xjmp L211
L213:
; 		else
; 			if(blinkEn)
	lds R2,L154
	tst R2
	breq L217
X82:
; 				write(0,0x09);
	ldi R18,9
	clr R16
	xcall _write
	xjmp L211
L217:
; 			else
; 				write(0,0x08);
	ldi R18,8
	clr R16
	xcall _write
; 	}
	xjmp L211
L210:
; 	else if(!strcmp(str,"EN_BLINK"))	//enable blink cursor
	ldi R18,<L221
	ldi R19,>L221
	movw R16,R10
	xcall _strcmp
	movw R12,R16
	cpi R16,0
	cpc R16,R17
	brne L219
X83:
; 	{
; 		blinkEn=1;
	ldi R24,1
	sts L154,R24
; 		if(dispEn)
	lds R2,L152
	tst R2
	breq L222
X84:
; 			if(cursorEn)
	lds R2,L153
	tst R2
	breq L224
X85:
; 				write(0,0x0F);
	ldi R18,15
	clr R16
	xcall _write
	xjmp L220
L224:
; 			else
; 				write(0,0x0D);
	ldi R18,13
	clr R16
	xcall _write
	xjmp L220
L222:
; 		else
; 			if(cursorEn)
	lds R2,L153
	tst R2
	breq L226
X86:
; 				write(0,0x0B);
	ldi R18,11
	clr R16
	xcall _write
	xjmp L220
L226:
; 			else
; 				write(0,0x09);
	ldi R18,9
	clr R16
	xcall _write
; 	}
	xjmp L220
L219:
; 	else if(!strcmp(str,"DIS_BLINK"))	//disable blink cursor
	ldi R18,<L230
	ldi R19,>L230
	movw R16,R10
	xcall _strcmp
	movw R12,R16
	cpi R16,0
	cpc R16,R17
	brne L228
X87:
; 	{
; 		blinkEn=0;
	clr R2
	sts L154,R2
; 		if(dispEn)
	lds R2,L152
	tst R2
	breq L231
X88:
; 			if(cursorEn)
	lds R2,L153
	tst R2
	breq L233
X89:
; 				write(0,0x0E);
	ldi R18,14
	clr R16
	xcall _write
	xjmp L229
L233:
; 			else
; 				write(0,0x0C);
	ldi R18,12
	clr R16
	xcall _write
	xjmp L229
L231:
; 		else
; 			if(cursorEn)
	lds R2,L153
	tst R2
	breq L235
X90:
; 				write(0,0x0A);
	ldi R18,10
	clr R16
	xcall _write
	xjmp L229
L235:
; 			else
; 				write(0,0x08);
	ldi R18,8
	clr R16
	xcall _write
; 	}
	xjmp L229
L228:
; /*--------------------------------------------------
; dispEn & cursorEn & blinkEn共用一个命令设置
; --------------------------------------------------*/
; 	else if(!strcmp(str,"RIGHT_SCR"))	//right shift screen
	ldi R18,<L239
	ldi R19,>L239
	movw R16,R10
	xcall _strcmp
	movw R12,R16
	cpi R16,0
	cpc R16,R17
	brne L237
X91:
; 		write(0,0x1c);
	ldi R18,28
	clr R16
	xcall _write
	xjmp L238
L237:
; 	else if(!strcmp(str,"LEFT_SCR"))	//left shift screen
	ldi R18,<L242
	ldi R19,>L242
	movw R16,R10
	xcall _strcmp
	movw R12,R16
	cpi R16,0
	cpc R16,R17
	brne L240
X92:
; 		write(0,0x18);
	ldi R18,24
	clr R16
	xcall _write
	xjmp L241
L240:
; 	else if(!strcmp(str,"RIGHT_CURS"))	//right shift cursor
	ldi R18,<L245
	ldi R19,>L245
	movw R16,R10
	xcall _strcmp
	movw R12,R16
	cpi R16,0
	cpc R16,R17
	brne L243
X93:
; 		write(0,0x14);
	ldi R18,20
	clr R16
	xcall _write
	xjmp L244
L243:
; 	else if(!strcmp(str,"LEFT_CURS"))	//left shift cursor
	ldi R18,<L248
	ldi R19,>L248
	movw R16,R10
	xcall _strcmp
	movw R10,R16
	cpi R16,0
	cpc R16,R17
	brne L246
X94:
; 		write(0,0x10);
	ldi R18,16
	clr R16
	xcall _write
L246:
L244:
L241:
L238:
L229:
L220:
L211:
L202:
L193:
L184:
L179:
L174:
L169:
L164:
L161:
L158:
L151:
	.dbline 0 ; func end
	xjmp pop_xgset003C
	.even
_LCD1602_init::
; }
; /*--------------------------------------------------------------------
; 函数名称:LCD1602初始化
; 函数功能:
; 注意事项:
; 提示说明:无
; 输    入:
; 返    回:无
; --------------------------------------------------------------------*/
; void LCD1602_init(void)
; {   
; 	OUT_RS;
	sbi 0x17,5
; 	OUT_RW;
	sbi 0x17,6
; 	OUT_E;
	sbi 0x17,7
; 	OUT_D4;
	sbi 0x11,4
; 	OUT_D5;
	sbi 0x11,5
; 	OUT_D6;
	sbi 0x11,6
; 	OUT_D7;
	sbi 0x11,7
; 	delay50ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay50ms
; 
; 	CLR_D7;
	cbi 0x12,7
; 	CLR_D6;
	cbi 0x12,6
; 	SET_D5;
	sbi 0x12,5
; 	SET_D4;
	sbi 0x12,4
; 	DELAY();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
; 	CLR_RS;
	cbi 0x18,5
; 	DELAY();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
; 	CLR_RW;         				
	cbi 0x18,6
; 
; 	SET_E;
	sbi 0x18,7
; 	DELAY();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
; 	CLR_E;
	cbi 0x18,7
; 	delay50us(200);		
	ldi R16,200
	ldi R17,0
	xcall _delay50us
; 	SET_E;
	sbi 0x18,7
; 	DELAY();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
; 	CLR_E;
	cbi 0x18,7
; 	delay50us(200);	
	ldi R16,200
	ldi R17,0
	xcall _delay50us
; 	SET_E;
	sbi 0x18,7
; 	DELAY();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
; 	CLR_E;
	cbi 0x18,7
; 	delay50us(200);	
	ldi R16,200
	ldi R17,0
	xcall _delay50us
; 	
; 	CLR_D7;
	cbi 0x12,7
; 	CLR_D6;
	cbi 0x12,6
; 	SET_D5;
	sbi 0x12,5
; 	CLR_D4;
	cbi 0x12,4
; 	DELAY();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
; 	SET_E;
	sbi 0x18,7
; 	DELAY();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
; 	CLR_E;		       			
	cbi 0x18,7
; 	DELAY();
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
; 	LCD1602_setCmd("OPEN_LCD");
	ldi R16,<L185
	ldi R17,>L185
	xcall _LCD1602_setCmd
; 	LCD1602_setCmd("CLR_SCR");
	ldi R16,<L159
	ldi R17,>L159
	xcall _LCD1602_setCmd
; 	LCD1602_setCmd("INC_AC");
	ldi R16,<L165
	ldi R17,>L165
	xcall _LCD1602_setCmd
L249:
	.dbline 0 ; func end
	ret
;             ch -> R10
;            adr -> R12
	.even
_LCD1602_putc::
	st -y,R10
	st -y,R12
	mov R10,R18
	mov R12,R16
; 	//LCD1602_setCmd("OPEN_CURS");
; 	//LCD1602_setCmd("GO_HOME");
; }
; /*--------------------------------------------------------------------
;   宏名称:设置AC值
;   宏功能:设置AC值啦
; 注意事项:
; 提示说明:
; 输    入:
; 返    回:无
; --------------------------------------------------------------------*/
; #define LCD1602_setAC(adr) write(0,adr)
; /*--------------------------------------------------------------------
; 函数名称:输出一个字符
; 函数功能:
; 注意事项:对于高速CPU,应加延时,好像是废话~
; 提示说明:调用LCD1602_putc(0x80,'A'),则在第一行第一个字符处输出'A'
; 输    入:
; 返    回:无
; --------------------------------------------------------------------*/
; void LCD1602_putc(uint8 adr,uint8 ch)
; {
; 	write(0,adr);
	mov R18,R12
	clr R16
	xcall _write
; 	write(1,ch);
	mov R18,R10
	ldi R16,1
	xcall _write
L250:
	.dbline 0 ; func end
	ld R12,y+
	ld R10,y+
	ret
;            str -> R10,R11
;       startAdr -> R12
	.even
_LCD1602_puts::

⌨️ 快捷键说明

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