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

📄 lcd12864.src

📁 *名称:LCD12864显示程序 功能:显示英文
💻 SRC
📖 第 1 页 / 共 2 页
字号:
;    READ;
			; SOURCE LINE # 223
	CLR  	rdlcd
;    lck = 0;
			; SOURCE LINE # 224
	CLR  	lck
;    P1 = 0x96;//ELCD=1,RSTLOW=1(低电平复位无效),R/W=1(读),CS138=1(无效),CSB=1,CSA=0
			; SOURCE LINE # 225
	MOV  	P1,#096H
;    P2 = 0x01;
			; SOURCE LINE # 226
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 227
	SETB 	lck
;    P1 = 0xa1;//把PS/2的DATA(P1.7)拉高,非片选USBD12
			; SOURCE LINE # 228
	MOV  	P1,#0A1H
;    ENABLED;
			; SOURCE LINE # 229
	CLR  	enable
?C0021:
;    while(P0 & LCDBUZY);//最高位为1,表示忙,则循环
			; SOURCE LINE # 230
	MOV  	A,P0
	JB   	ACC.7,?C0021
?C0022:
;    DISABLED;
			; SOURCE LINE # 231
	SETB 	enable
;    lck = 0;
			; SOURCE LINE # 232
	CLR  	lck
;    P1 = 0x44;//ELCD=0,RSTLOW=1(低电平复位无效),R/W=0(读),CS138=1(无效),CSB=1,CSA=0
			; SOURCE LINE # 233
	MOV  	P1,#044H
;    P2 = 0x01;//避免LCKMOTOR产生上升沿
			; SOURCE LINE # 234
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 235
	SETB 	lck
;    P1 = 0xa1;//把PS/2的DATA(P1.7)拉高,非片选USBD12
			; SOURCE LINE # 236
	MOV  	P1,#0A1H
; 
;     ENABLED;
			; SOURCE LINE # 238
	CLR  	enable
;     WRITE;
			; SOURCE LINE # 239
	SETB 	rdlcd
; 
;     P0=x;
			; SOURCE LINE # 241
	MOV  	P0,R7
;     lck = 0;
			; SOURCE LINE # 242
	CLR  	lck
;     P1 = 0xc5;//ELCD=1,RSTLOW=1(低电平复位无效),RW = 0(写),CS138无效,CSB=0,CSA=1
			; SOURCE LINE # 243
	MOV  	P1,#0C5H
;     P2 = 0x01;//避免LCKMOTOR产生上升沿
			; SOURCE LINE # 244
	MOV  	P2,#01H
;     lck = 1;
			; SOURCE LINE # 245
	SETB 	lck
;     P1 = 0xa1;//把PS/2的DATA(P1.7)拉高,非片选USBD12
			; SOURCE LINE # 246
	MOV  	P1,#0A1H
; 
;     lck = 0;
			; SOURCE LINE # 248
	CLR  	lck
;     P1 = 0x44;//ELCD=0,RSTLOW=1(低电平复位无效),CS138无效,CSB=0,CSA=0
			; SOURCE LINE # 249
	MOV  	P1,#044H
;     P2 = 0x01;
			; SOURCE LINE # 250
	MOV  	P2,#01H
;     lck = 1;
			; SOURCE LINE # 251
	SETB 	lck
;     P1 = 0xa1;//把PS/2的DATA(P1.7)拉高,非片选USBD12
			; SOURCE LINE # 252
	MOV  	P1,#0A1H
;     DISABLED;
			; SOURCE LINE # 253
	SETB 	enable
; }
			; SOURCE LINE # 254
	RET  	
; END OF _WrR

; 
; 
; /**************判忙****************/
; void LcdbuzyL(void)

	RSEG  ?PR?LcdbuzyL?LCD12864
LcdbuzyL:
			; SOURCE LINE # 258
; {   
			; SOURCE LINE # 259
;    DISABLED;
			; SOURCE LINE # 260
	SETB 	enable
;    WRITE;
			; SOURCE LINE # 261
	SETB 	rdlcd
; 
;    P0=0xFF;//P0口送FF,准备读
			; SOURCE LINE # 263
	MOV  	P0,#0FFH
; 
;    READ;
			; SOURCE LINE # 265
	CLR  	rdlcd
;    lck = 0;
			; SOURCE LINE # 266
	CLR  	lck
;    P1 = 0x96;//ELCD=1,RSTLOW=1(低电平复位无效),R/W=1(读),CS138=1(无效),CSB=1,CSA=0
			; SOURCE LINE # 267
	MOV  	P1,#096H
;    P2 = 0x01;
			; SOURCE LINE # 268
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 269
	SETB 	lck
;    P1 = 0xa1;//把PS/2的DATA(P1.7)拉高,非片选USBD12
			; SOURCE LINE # 270
	MOV  	P1,#0A1H
;    ENABLED;
			; SOURCE LINE # 271
	CLR  	enable
?C0024:
;    while(P0 & LCDBUZY);//最高位为1,表示忙,则循环
			; SOURCE LINE # 272
	MOV  	A,P0
	JB   	ACC.7,?C0024
?C0025:
;    DISABLED;
			; SOURCE LINE # 273
	SETB 	enable
;    lck = 0;
			; SOURCE LINE # 274
	CLR  	lck
;    P1 = 0x44;//ELCD=0,RSTLOW=1(低电平复位无效),R/W=0(读),CS138=1(无效),CSB=1,CSA=0
			; SOURCE LINE # 275
	MOV  	P1,#044H
;    P2 = 0x01;//避免LCKMOTOR产生上升沿
			; SOURCE LINE # 276
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 277
	SETB 	lck
;    P1 = 0xa1;//把PS/2的DATA(P1.7)拉高,非片选USBD12
			; SOURCE LINE # 278
	MOV  	P1,#0A1H
; 
; }
			; SOURCE LINE # 280
	RET  	
; END OF LcdbuzyL

; 
; 
; void LcdbuzyR(void)

	RSEG  ?PR?LcdbuzyR?LCD12864
LcdbuzyR:
			; SOURCE LINE # 283
; {
			; SOURCE LINE # 284
;    DISABLED;
			; SOURCE LINE # 285
	SETB 	enable
;    WRITE; 
			; SOURCE LINE # 286
	SETB 	rdlcd
; 
;    P0=0xFF;//P0口送FF,准备读
			; SOURCE LINE # 288
	MOV  	P0,#0FFH
; 
;    READ;
			; SOURCE LINE # 290
	CLR  	rdlcd
;    lck = 0;
			; SOURCE LINE # 291
	CLR  	lck
;    P1 = 0x95;//ELCD=1,RSTLOW=1(低电平复位无效),R/W=1(读),CS138无效,CSB=0,CSA=1
			; SOURCE LINE # 292
	MOV  	P1,#095H
;    P2 = 0x01;
			; SOURCE LINE # 293
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 294
	SETB 	lck
;    P1 = 0xa1;//把PS/2的DATA(P1.7)拉高
			; SOURCE LINE # 295
	MOV  	P1,#0A1H
;    ENABLED;
			; SOURCE LINE # 296
	CLR  	enable
?C0027:
;    while(P0 & LCDBUZY);//最高位为1,表示忙,则循环  
			; SOURCE LINE # 297
	MOV  	A,P0
	JB   	ACC.7,?C0027
?C0028:
;    DISABLED;
			; SOURCE LINE # 298
	SETB 	enable
;    lck = 0;
			; SOURCE LINE # 299
	CLR  	lck
;    P1 = 0x44;
			; SOURCE LINE # 300
	MOV  	P1,#044H
;    P2 = 0x01;//避免LCKMOTOR产生上升沿
			; SOURCE LINE # 301
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 302
	SETB 	lck
;    P1 = 0xa1;//把PS/2的DATA(P1.7)拉高
			; SOURCE LINE # 303
	MOV  	P1,#0A1H
;    
; }
			; SOURCE LINE # 305
	RET  	
; END OF LcdbuzyR

; 
;  
; 
; 
; 
; /*************定位*****************/
; void Locatexy(uchar  row,uchar  col)

	RSEG  ?PR?_Locatexy?LCD12864
_Locatexy:
			; SOURCE LINE # 312
;---- Variable 'col?1048' assigned to Register 'R5' ----
;---- Variable 'row?1047' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 313
;    uchar data x, y, right;
;    switch(col&0xc0)
			; SOURCE LINE # 315
	MOV  	A,R5
	ANL  	A,#0C0H
	ADD  	A,#0C0H
	JZ   	?C0032
	ADD  	A,#040H
	JNZ  	?C0030
;     {
			; SOURCE LINE # 316
;     case 0:   {LcdbuzyR();right = 1;break;}//置右半屏标志
			; SOURCE LINE # 317
?C0031:
	LCALL	LcdbuzyR
	MOV  	right?1051,#01H
	SJMP 	?C0030
;     case 0x40:{LcdbuzyL();right = 0;break;}//置左半屏标志
			; SOURCE LINE # 318
?C0032:
	LCALL	LcdbuzyL
	CLR  	A
	MOV  	right?1051,A
;     }
			; SOURCE LINE # 319
?C0030:
;    x=col&0x3f|SETX;//把列数据变成行命令
			; SOURCE LINE # 320
	MOV  	A,R5
	ANL  	A,#03FH
	ORL  	A,#040H
	MOV  	x?1049,A
;    y=row&0x07|SETY;//把行数据变成行命令
			; SOURCE LINE # 321
	MOV  	A,R7
	ANL  	A,#07H
	ORL  	A,#0B8H
	MOV  	y?1050,A
; 
;    DISABLED;
			; SOURCE LINE # 323
	SETB 	enable
; 
;    P0=0xFF;
			; SOURCE LINE # 325
	MOV  	P0,#0FFH
; /**********************************/
;    READ;
			; SOURCE LINE # 327
	CLR  	rdlcd
;    lck = 0;
			; SOURCE LINE # 328
	CLR  	lck
;    if(right)
			; SOURCE LINE # 329
	MOV  	A,right?1051
	JZ   	?C0033
;     P1 = 0x95;
			; SOURCE LINE # 330
	MOV  	P1,#095H
	SJMP 	?C0034
?C0033:
;    else
;     P1 = 0x96;
			; SOURCE LINE # 332
	MOV  	P1,#096H
?C0034:
;    P2 = 0x01;
			; SOURCE LINE # 333
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 334
	SETB 	lck
;    P1 = 0xa1;
			; SOURCE LINE # 335
	MOV  	P1,#0A1H
?C0035:
;    while(P0 & LCDBUZY);//最高位为1,表示忙,则循环 
			; SOURCE LINE # 336
	MOV  	A,P0
	JB   	ACC.7,?C0035
?C0036:
;    lck = 0;
			; SOURCE LINE # 337
	CLR  	lck
;    P1 = 0x44;
			; SOURCE LINE # 338
	MOV  	P1,#044H
;    P2 = 0x01;
			; SOURCE LINE # 339
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 340
	SETB 	lck
;    P1 = 0xa1;
			; SOURCE LINE # 341
	MOV  	P1,#0A1H
; /*********以上为判断忙标志********/
;    WRITE;
			; SOURCE LINE # 343
	SETB 	rdlcd
; /*********************************/
;    P0 = y;
			; SOURCE LINE # 345
	MOV  	P0,y?1050
;    lck = 0;
			; SOURCE LINE # 346
	CLR  	lck
;    if(right)
			; SOURCE LINE # 347
	MOV  	A,right?1051
	JZ   	?C0037
;     P1 = 0xc5;
			; SOURCE LINE # 348
	MOV  	P1,#0C5H
	SJMP 	?C0038
?C0037:
;    else
;     P1 = 0xc6;
			; SOURCE LINE # 350
	MOV  	P1,#0C6H
?C0038:
;    P2 = 0x01;
			; SOURCE LINE # 351
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 352
	SETB 	lck
;     P1 = 0xa1;
			; SOURCE LINE # 353
	MOV  	P1,#0A1H
; 
;    lck = 0;
			; SOURCE LINE # 355
	CLR  	lck
;    P1 = 0x44;
			; SOURCE LINE # 356
	MOV  	P1,#044H
;     P2 = 0x01;
			; SOURCE LINE # 357
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 358
	SETB 	lck
;     P1 = 0xa1;
			; SOURCE LINE # 359
	MOV  	P1,#0A1H
; /**********以上为送行命令***********/
;    P0=0xFF;
			; SOURCE LINE # 361
	MOV  	P0,#0FFH
; 
;    READ;
			; SOURCE LINE # 363
	CLR  	rdlcd
; 
;    lck = 0;
			; SOURCE LINE # 365
	CLR  	lck
;    if(right)
			; SOURCE LINE # 366
	MOV  	A,right?1051
	JZ   	?C0039
;     P1 = 0x95;
			; SOURCE LINE # 367
	MOV  	P1,#095H
	SJMP 	?C0040
?C0039:
;    else
;     P1 = 0x96;
			; SOURCE LINE # 369
	MOV  	P1,#096H
?C0040:
;    P2 = 0x01;
			; SOURCE LINE # 370
	MOV  	P2,#01H
;    lck = 1; 
			; SOURCE LINE # 371
	SETB 	lck
;    P1 = 0xa1;
			; SOURCE LINE # 372
	MOV  	P1,#0A1H
?C0041:
;    while(P0 & LCDBUZY);//最高位为1,表示忙,则循环 
			; SOURCE LINE # 373
	MOV  	A,P0
	JB   	ACC.7,?C0041
?C0042:
; 
;    lck = 0;
			; SOURCE LINE # 375
	CLR  	lck
;    P1 = 0x44;
			; SOURCE LINE # 376
	MOV  	P1,#044H
;    P2 = 0x01;
			; SOURCE LINE # 377
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 378
	SETB 	lck
;    P1 = 0xa1;
			; SOURCE LINE # 379
	MOV  	P1,#0A1H
; /*********以上为判断忙标志********/
;    WRITE;
			; SOURCE LINE # 381
	SETB 	rdlcd
; 
;    P0 = x;
			; SOURCE LINE # 383
	MOV  	P0,x?1049
;    lck = 0;
			; SOURCE LINE # 384
	CLR  	lck
;    if(right)
			; SOURCE LINE # 385
	MOV  	A,right?1051
	JZ   	?C0043
;     P1 = 0xc5;
			; SOURCE LINE # 386
	MOV  	P1,#0C5H
	SJMP 	?C0044
?C0043:
;    else
;     P1 = 0xc6;
			; SOURCE LINE # 388
	MOV  	P1,#0C6H
?C0044:
;    P2 = 0x01;
			; SOURCE LINE # 389
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 390
	SETB 	lck
;    P1 = 0xa1;
			; SOURCE LINE # 391
	MOV  	P1,#0A1H
;    
;    lck = 0;
			; SOURCE LINE # 393
	CLR  	lck
;    P1 = 0x44;
			; SOURCE LINE # 394
	MOV  	P1,#044H
;     P2 = 0x01;
			; SOURCE LINE # 395
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 396
	SETB 	lck
;    P1 = 0xa1;
			; SOURCE LINE # 397
	MOV  	P1,#0A1H
; /**********以上为送列命令***********/
;    DISABLED;
			; SOURCE LINE # 399
	SETB 	enable
;    if(right)
			; SOURCE LINE # 400
	MOV  	A,right?1051
	JZ   	?C0045
;     statu = 1;
			; SOURCE LINE # 401
	MOV  	statu,#01H
	RET  	
?C0045:
;    else
;     statu = 0;//置左又半区标志
			; SOURCE LINE # 403
	CLR  	A
	MOV  	statu,A
; }
			; SOURCE LINE # 404
?C0047:
	RET  	
; END OF _Locatexy

; 
; 
; /**************数据写输出***************/
; void  Wrdata(uchar  x,uchar  row,uchar  col)

	RSEG  ?PR?_Wrdata?LCD12864
_Wrdata:
	USING	0
			; SOURCE LINE # 408
;---- Variable 'x?1152' assigned to Register 'R2' ----
	MOV  	R2,AR7
;---- Variable 'col?1154' assigned to Register 'R3' ----
;---- Variable 'row?1153' assigned to Register 'R5' ----
; {   
			; SOURCE LINE # 409
;     Locatexy(row,col);//定位显示位置
			; SOURCE LINE # 410
	MOV  	R7,AR5
	MOV  	R6,AR3
	MOV  	R5,AR6
	LCALL	_Locatexy
;     P1 = 0x25;
			; SOURCE LINE # 411
	MOV  	P1,#025H
;     DISABLED;
			; SOURCE LINE # 412
	SETB 	enable
;     lck = 0;
			; SOURCE LINE # 413
	CLR  	lck
;     if(statu)
			; SOURCE LINE # 414
	MOV  	A,statu
	JZ   	?C0048
;      P1 = 0x4d;//ELCD=0,RSTLOW=1(低电平复位无效),R/W=0(写),D/I= 1 ,CS138无效,CSB=0,CSA=1
			; SOURCE LINE # 415
	MOV  	P1,#04DH
	SJMP 	?C0049
?C0048:
;     else
;      P1 = 0x4e;//ELCD=0,RSTLOW=1(低电平复位无效),R/W=0(写),D/I= 1 ,CS138无效,CSB=1,CSA=0
			; SOURCE LINE # 417
	MOV  	P1,#04EH
?C0049:
;     P2 = 0x01;
			; SOURCE LINE # 418
	MOV  	P2,#01H
;     lck = 1;
			; SOURCE LINE # 419
	SETB 	lck
;     P1 = 0xa1;
			; SOURCE LINE # 420
	MOV  	P1,#0A1H
;     delay(6);
			; SOURCE LINE # 421
	MOV  	R7,#06H
	MOV  	R6,#00H
	LCALL	_delay
;     P0 = x;
			; SOURCE LINE # 422
	MOV  	R7,AR2
	MOV  	P0,R7
;     WRITE;
			; SOURCE LINE # 423
	SETB 	rdlcd
;     ENABLED;
			; SOURCE LINE # 424
	CLR  	enable
;     delay(6);
			; SOURCE LINE # 425
	MOV  	R7,#06H
	LCALL	_delay
;     lck = 0;
			; SOURCE LINE # 426
	CLR  	lck
;     if(statu)
			; SOURCE LINE # 427
	MOV  	A,statu
	JZ   	?C0050
;      P1 = 0xcd;//ELCD=1,RSTLOW=1(低电平复位无效),R/W=0(写),D/I= 1 ,CS138无效,CSB=0,CSA=1
			; SOURCE LINE # 428
	MOV  	P1,#0CDH
	SJMP 	?C0051
?C0050:
;     else
;      P1 = 0xce;//ELCD=1,RSTLOW=1(低电平复位无效),R/W=0(写),D/I= 1 ,CS138无效,CSB=1,CSA=0
			; SOURCE LINE # 430
	MOV  	P1,#0CEH
?C0051:
;     P2 = 0x01;
			; SOURCE LINE # 431
	MOV  	P2,#01H
;     lck = 1;
			; SOURCE LINE # 432
	SETB 	lck
;     P1 = 0xa1;
			; SOURCE LINE # 433
	MOV  	P1,#0A1H
;    
;     lck = 0;
			; SOURCE LINE # 435
	CLR  	lck
;     P1 = 0x44;
			; SOURCE LINE # 436
	MOV  	P1,#044H
;     P2 = 0x01;
			; SOURCE LINE # 437
	MOV  	P2,#01H
;     lck = 1;///ELCD=0(LCD无效)
			; SOURCE LINE # 438
	SETB 	lck
;     P1 = 0xa1;
			; SOURCE LINE # 439
	MOV  	P1,#0A1H
;     DISABLED;
			; SOURCE LINE # 440
	SETB 	enable
; }
			; SOURCE LINE # 441
	RET  	
; END OF _Wrdata

	END

⌨️ 快捷键说明

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