DSP2: SETB CS2
CLR CS1
MOV X,#0BAH
MOV Y,#50H
MOV DPTR,#DDB
ACALL DISP_
RET
DSP3: SETB CS2
CLR CS1
MOV X,#0BAH
MOV Y,#58H
MOV DPTR,#DDB
ACALL DISP_
RET
DSP4: SETB CS2
CLR CS1
MOV X,#0BAH
MOV Y,#60H
MOV DPTR,#DDB
ACALL DISP_
RET
;************************8位字宽显示子程序: (CODE0待设)**********************
DISP_: MOV B,#10H ;要显示的数是几就用几乘以16,得到基址起始地址
MOV A,MUL_
MUL AB
MOV CODE0,A
MOV 39H,#02H
MOV COUNT,#08H
LP_: MOV COM,X ;设置页地址
LCALL INST
MOV COM,Y ;设置列地址
LCALL INST
W_: MOV A,CODE0
MOV C A,@A+DPTR
MOV DAT,A
LCALL DATA_
INC CODE0
DJNZ COUNT,W_
DJNZ 39H,LP1_
RET
LP1_: INC X
MOV COUNT,#08H
AJMP LP_
;***************************16位字宽显示子程序**********************
DISP: MOV 39H,#02H
MOV CODE0,#00H
MOV COUNT,#10H ;根据字宽及象素的不同而改变 DISP中的COUNT根据字高及象素改变CODE0
LP: MOV COM,X ;设置页地址
LCALL INST
MOV COM,Y ;设置列地址
LCALL INST
W: MOV A,CODE0
MOV C A,@A+DPTR
MOV DAT,A
LCALL DATA_
INC CODE0
DJNZ COUNT,W
DJNZ 39H,LP1
RET
LP1: INC X
MOV COUNT,#10H
AJMP LP
;***********************以下为字符显示子程序块*************************
SY: SETB CS1 ;开机
CLR CS2
MOV X,#0BAH
MOV Y,#40H
MOV DPTR,#TAB1 ;
CALL DISP
MOV X,#0BAH
MOV Y,#50H
MOV DPTR,#TAB2 ;
CALL DISP
MOV X,#0BAH
MOV Y,#60H
MOV DPTR,#TAB3 ;
CALL DISP
MOV X,#0BAH
MOV Y,#70H
MOV DPTR,#TAB4 ;
CALL DISP
CLR CS1
SETB CS2
MOV X,#0BAH
MOV Y,#40H
MOV DPTR,#TAB5 ;
CALL DISP
MOV X,#0BAH
MOV Y,#70H
MOV DPTR,#TAB6 ;
CALL DISP
RET
INST: LCALL BUSY ;写指令
SETB E
CLR D_I
CLR R_W
MOV DB0_DB7,COM
CLR E
RET
DATA_: LCALL BUSY ;写数据
SETB E
SETB D_I
CLR R_W
MOV DB0_DB7,DAT
CLR E
RET
BUSY: CLR D_I ;测忙
SETB R_W
BUSY1: MOV DB0_DB7,#0FFH
SETB E
MOV A,DB0_DB7
CLR E
JB ACC.7,BUSY1
RET
CLEAR: MOV R4,#00H ;清屏
上一篇:键控门铃程序