这个是一个液晶显示屏幕的汇编
,麻烦各位大虾帮我转成C的,谢谢!~
ID EQU P2.0
RW EQU P2.1
CS1 EQU P2.3
E EQU P2.2
RES EQU P2.4
ENT EQU P3.6
SEL EQU P3.7
COM EQU 30H
DAT EQU 31H
ORG 0000H
JMP MAIN
ORG 0030H
MAIN: MOV SP,#60H
; SETB ET1
; SETB EA
; SETB E0
; SETB E
CLR RES
CALL DELY ;延时100MS
SETB RES
CALL DELY ;延时100MS
L0: MOV COM,#00H ;方式设置 00H
CALL WRI
MOV DAT,#30H
CALL WRD
MOV COM,#01H ;字符字体设置 01H
CALL WRI
MOV DAT,#77H
CALL WRD
MOV COM,#02H ;显示区域宽度设置 02H
CALL WRI
MOV DAT,#12H ;158
CALL WRD
MOV COM,#03H ;帧设置 03H
CALL WRI
MOV DAT,#4fH ;78 4E
CALL WRD
MOV COM,#04H ;光标形状设置 04H
CALL WRI
MOV DAT,#07H ;底部
CALL WRD
MOV COM,#08H ;显示首址低字节设置 08H
CALL WRI
MOV DAT,#00H
CALL WRD
MOV COM,#09H ;显示首址高字节设置 09H
CALL WRI
MOV DAT,#00H
CALL WRD
MOV COM,#0AH ;光标指针低字节设置 0AH
CALL WRI
MOV DAT,#00H
CALL WRD
MOV COM,#0BH ;光标指针高字节设置 0BH
CALL WRI
MOV DAT,#00H
CALL WRD
L4: CALL CLEAR ;清屏
MOV COM,#00H
CALL WRI
MOV DAT,#30H
CALL WRD
MOV COM,#0CH ; 一屏文字
CALL WRI
MOV DAT,#20H
MOV A,DAT
L5: CALL WRD
INC A
MOV DAT,A
CJNE A,#80H,L5
MOV DAT,#0A0H
MOV A,DAT
L6: CALL WRD
INC A
MOV DAT,A
CJNE A,#0FFH,L6
MOV COM,#01H ;字符字体设置 01H
CALL WRI
MOV DAT,#77H
CALL WRD
MOV COM,#02H ;显示区域宽度设置 02H
CALL WRI
MOV DAT,#12H ;158
CALL WRD
MOV COM,#03H ;帧设置 03H
CALL WRI
MOV DAT,#4fH ;78 4E
CALL WRD
MOV COM,#04H ;光标形状设置 04H
CALL WRI
MOV DAT,#07H ;底部
CALL WRD
CALL DELY1
CALL TT1
JNB ENT,J1
; JMP L4
J1: CALL CLEAR
MOV COM,#00H
CALL WRI
MOV DAT,#32H
CALL WRD
L7: MOV R2,#0A0H ;1行
MOV R3,#0AH ;10行
MOV COM,#0CH ;一屏图片
CALL WRI
MOV DAT,#0FFH
L8: CALL WRD
DJNZ R2,L8
MOV R2,#0A0H
DJNZ R3,L8
MOV COM,#01H ;字符字体设置 01H
CALL WRI
MOV DAT,#77H
CALL WRD
MOV COM,#02H ;显示区域宽度设置 02H
CALL WRI
MOV DAT,#12H ;158
CALL WRD
MOV COM,#03H ;帧设置 03H
CALL WRI
MOV DAT,#4fH ;78 4E
CALL WRD
MOV COM,#04H ;光标形状设置 04H
CALL WRI
MOV DAT,#07H ;底部
CALL WRD
CALL DELY1
jmp L0
;;;;;;;;;
CALL TT1
JNB ENT,J2
JMP J1
J2: CALL CLEAR
MOV COM,#00H
CALL WRI
MOV DAT,#32H
CALL WRD
L9: MOV R2,#0A0H ;1行
MOV R3,#0AH ;10行
MOV COM,#0CH ;一屏图片
CALL WRI
MOV DPTR,#TAB2
L10: CLR A
MOVC A,@A+DPTR
MOV DAT,A
CALL WRD
INC DPTR
DJNZ R2,L10
MOV R2,#0A0H
DJNZ R3,L10
MOV COM,#01H ;字符字体设置 01H
CALL WRI
MOV DAT,#77H
CALL WRD
MOV COM,#02H ;显示区域宽度设置 02H
CALL WRI
MOV DAT,#12H ;158
CALL WRD
MOV COM,#03H ;帧设置 03H
CALL WRI
MOV DAT,#4EH ;78 4E
CALL WRD
MOV COM,#04H ;光标形状设置 04H
CALL WRI
MOV DAT,#07H ;底部
CALL WRD
CALL DELY1
CALL TT1
JNB ENT,J3
JMP J2
J3: JMP L4
;************************************************************
TT1: CALL DELY2
JB SEL,TT2
JNB SEL,$
CALL DELY2
JB SEL,$
CALL DELY2
JNB SEL,$
TT2: RET
WRI: PUSH ACC ;写指令子程序
CLR CS1
MOV P1,#0FFH
SETB ID
SETB RW
WRI1: SETB E
MOV A,P1
CLR E
JB ACC.7,WRI1
CLR RW
MOV A,COM
MOV P1,A
SETB E
NOP
CLR E
POP ACC
SETB CS1
RET
WRD: PUSH ACC ;写数据子程序
CLR CS1
MOV P1,#0FFH
SETB ID
SETB RW
WRD1: SETB E
MOV A,P1
CLR E
JB ACC.7,WRD1
CLR ID
CLR RW
MOV A,DAT
MOV P1,A
SETB E
NOP
CLR E
POP ACC
SETB CS1
RET
;*************************************************************
CLEAR: MOV COM,#0AH ;显示首址低字节设置 08H
CALL WRI
MOV DAT,#00H
CALL WRD
MOV COM,#0BH ;显示首址高字节设置 09H
CALL WRI
MOV DAT,#00H
CALL WRD
MOV COM,#0CH ;清屏
CALL WRI
MOV R0,#40H ;34
L1: MOV R1,#0EDH
L2: MOV DAT,#00H
CALL WRD
DJNZ R1,L2
DJNZ R0,L1
MOV COM,#08H ;显示首址低字节设置 08H
CALL WRI
MOV DAT,#00H
CALL WRD
MOV COM,#09H ;显示首址高字节设置 09H
CALL WRI
MOV DAT,#00H
CALL WRD
MOV COM,#0AH ;光标指针低字节设置 0AH
CALL WRI
MOV DAT,#00H
CALL WRD
MOV COM,#0BH ;光标指针高字节设置 0BH
CALL WRI
MOV DAT,#00H
CALL WRD
RET
DELY: MOV 44H,#65H ;开机延时100MS子程序
D2: MOV 45H,#0FFH
D3: NOP
NOP
DJNZ 45H,D3
DJNZ 44H,D2
RET
DELY2: MOV 44H,#0AH ;延时10MS
DE2: MOV 45H,#0FAH
DE3: NOP
NOP
DJNZ 45H,DE3
DJNZ 44H,DE2
RET
DELY1: MOV 40H,#05H ;换画面延时 0A
D4: MOV 41H,0FFH
D5: MOV 42H,0FFH
D6: NOP
NOP
NOP
NOP
DJNZ 42H,D6
DJNZ 41H,D5
DJNZ 40H,D4
RET
;********************************************************************
TAB2:;-- 调入了一幅图像:d:\\我的文档\\桌面\\16080\\3.bmp --
;-- 宽度x高度=160x80 --
;*************************************************************
END