📄 lcd12864.src
字号:
; 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 + -