RS EQU P2.0
RW EQU P2.1
E EQU P2.2
DT EQU P0
DQ EQU P3.7
SWPH EQU 02H
SWPL EQU 0FFH
WDLSB DATA 30H
WDMSB DATA 31H
;***********************************
ORG 0000H
AJMP START
ORG 000BH
LJMP TMR0 ; Timer0 isr
ORG 0030H
TMR0: MOV TH0,#swpH
MOV TL0,#swpL
MOV DT,#80H
ACALL WRITE
MOV DT,#54H;T
ACALL WRITB
MOV DT,#65H;e
ACALL WRITB
MOV DT,#6DH;m
ACALL WRITB
MOV DT,#70H;p
ACALL WRITB
MOV DT,#3AH
ACALL WRITB
MOV A,42H
ADD A,#30H
MOV DT,A
ACALL WRITB
MOV A,43H
ADD A,#30H
MOV DT,A
ACALL WRITB
MOV DT,#43H
ACALL WRITB
RETI
;***************************
ORG 0100H
START: CLR EA
MOV TMOD,#01H
MOV TH0,#SWPH
MOV TL0,#SWPL
SETB EA
SETB ET0
SETB TR0
MOV R2,#2
MOV R0,#42H
OVER: MOV @R0,#00H
INC R0
DJNZ R2,OVER
;**********
MOV DT,#01H
ACALL WRITE
MOV DT,#38H; 置功能,8位总线,双行显示
ACALL WRITE
MOV DT,#0CH; 开显示,有光标,光标闪烁
ACALL WRITE
MOV DT,#06H; 置输入,光标右移动,文字不动
ACALL WRITE
;**********
LOOP: LCALL DSWD
SJMP LOOP
;*****************************
WRITB: SETB RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
;*************
WRITE: CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
;*************
DELAY: MOV DT,#0FFH
DELA1: CLR RS
SETB RW
CLR E
NOP
SETB E
JB DT.7,DELA1
RET
;****************************
WRITE1: CLR DQ
NOP
NOP
NOP
NOP
NOP
SETB DQ
MOV R6,#30
DJNZ R6,$
RET
;*************
WRITE0:
CLR DQ
MOV R6,#30
DJNZ R6,$
SETB DQ
RET
;*************
SENB:
MOV A,R0
MOV R5,#8
SEN3: CLR C
RRC A
JC SEN1
LCALL WRITE0
SJMP SEN2
SEN1: LCALL WRITE1
SEN2: DJNZ R5,SEN3 ;
RET
;*************
RSTSNR: SETB DQ
NOP
NOP
CLR DQ
MOV R6,#250 ;
DJNZ R6,$
MOV R6,#50
DJNZ R6,$
SETB DQ ;
MOV R6,#15
DJNZ R6,$
CALL CHCK ;
MOV R6,#60
DJNZ R6,$
SETB DQ
RET
;*************
REDB:
MOV R5,#8
READ1: LCALL READ
RRC A
DJNZ R5,READ1 ;
MOV R0,A
RET
;*************
READ: SETB DQ ;
NOP
NOP
CLR DQ
NOP
NOP
SETB DQ ;
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV C,DQ
MOV R6,#23
DJNZ R6,$
RET
;*************
DSWD: LCALL RSTSNR
JNB F0,KEND
MOV R0,#0CCH
LCALL SENB
MOV R0,#44H
LCALL SENB
SETB EA
MOV 48H,#1
SS2: MOV 49H,#255
SS1: MOV 4AH,#255
SS0: DJNZ 4AH,SS0
DJNZ 49H,SS1
DJNZ 48H,SS2
CLR EA
LCALL RSTSNR
JNB F0,KEND
MOV R0,#0CCH
LCALL SENB
MOV R0,#0BEH
LCALL SENB
LCALL REDB
MOV WDLSB,A
LCALL REDB
MOV WDMSB,A
LCALL TRANS12
KEND: SETB EA
RET
;*************
TRANS12:
MOV A,30H
ANL A,#0F0H
MOV 3AH,A
MOV A,31H
ANL A,#0FH
ORL A,3AH
SWAP A
MOV B,#10
DIV AB
MOV 42H,A
MOV 43H,B
MOV b,#10
DIV ab
MOV 42H,B
MOV 41H,A
RET
;**************
CHCK: MOV C,DQ
JC RST0
SETB F0 ;
SJMP CHCK0
RST0: CLR F0 ;
CHCK0: RET
END
RW EQU P2.1
E EQU P2.2
DT EQU P0
DQ EQU P3.7
SWPH EQU 02H
SWPL EQU 0FFH
WDLSB DATA 30H
WDMSB DATA 31H
;***********************************
ORG 0000H
AJMP START
ORG 000BH
LJMP TMR0 ; Timer0 isr
ORG 0030H
TMR0: MOV TH0,#swpH
MOV TL0,#swpL
MOV DT,#80H
ACALL WRITE
MOV DT,#54H;T
ACALL WRITB
MOV DT,#65H;e
ACALL WRITB
MOV DT,#6DH;m
ACALL WRITB
MOV DT,#70H;p
ACALL WRITB
MOV DT,#3AH
ACALL WRITB
MOV A,42H
ADD A,#30H
MOV DT,A
ACALL WRITB
MOV A,43H
ADD A,#30H
MOV DT,A
ACALL WRITB
MOV DT,#43H
ACALL WRITB
RETI
;***************************
ORG 0100H
START: CLR EA
MOV TMOD,#01H
MOV TH0,#SWPH
MOV TL0,#SWPL
SETB EA
SETB ET0
SETB TR0
MOV R2,#2
MOV R0,#42H
OVER: MOV @R0,#00H
INC R0
DJNZ R2,OVER
;**********
MOV DT,#01H
ACALL WRITE
MOV DT,#38H; 置功能,8位总线,双行显示
ACALL WRITE
MOV DT,#0CH; 开显示,有光标,光标闪烁
ACALL WRITE
MOV DT,#06H; 置输入,光标右移动,文字不动
ACALL WRITE
;**********
LOOP: LCALL DSWD
SJMP LOOP
;*****************************
WRITB: SETB RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
;*************
WRITE: CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
;*************
DELAY: MOV DT,#0FFH
DELA1: CLR RS
SETB RW
CLR E
NOP
SETB E
JB DT.7,DELA1
RET
;****************************
WRITE1: CLR DQ
NOP
NOP
NOP
NOP
NOP
SETB DQ
MOV R6,#30
DJNZ R6,$
RET
;*************
WRITE0:
CLR DQ
MOV R6,#30
DJNZ R6,$
SETB DQ
RET
;*************
SENB:
MOV A,R0
MOV R5,#8
SEN3: CLR C
RRC A
JC SEN1
LCALL WRITE0
SJMP SEN2
SEN1: LCALL WRITE1
SEN2: DJNZ R5,SEN3 ;
RET
;*************
RSTSNR: SETB DQ
NOP
NOP
CLR DQ
MOV R6,#250 ;
DJNZ R6,$
MOV R6,#50
DJNZ R6,$
SETB DQ ;
MOV R6,#15
DJNZ R6,$
CALL CHCK ;
MOV R6,#60
DJNZ R6,$
SETB DQ
RET
;*************
REDB:
MOV R5,#8
READ1: LCALL READ
RRC A
DJNZ R5,READ1 ;
MOV R0,A
RET
;*************
READ: SETB DQ ;
NOP
NOP
CLR DQ
NOP
NOP
SETB DQ ;
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV C,DQ
MOV R6,#23
DJNZ R6,$
RET
;*************
DSWD: LCALL RSTSNR
JNB F0,KEND
MOV R0,#0CCH
LCALL SENB
MOV R0,#44H
LCALL SENB
SETB EA
MOV 48H,#1
SS2: MOV 49H,#255
SS1: MOV 4AH,#255
SS0: DJNZ 4AH,SS0
DJNZ 49H,SS1
DJNZ 48H,SS2
CLR EA
LCALL RSTSNR
JNB F0,KEND
MOV R0,#0CCH
LCALL SENB
MOV R0,#0BEH
LCALL SENB
LCALL REDB
MOV WDLSB,A
LCALL REDB
MOV WDMSB,A
LCALL TRANS12
KEND: SETB EA
RET
;*************
TRANS12:
MOV A,30H
ANL A,#0F0H
MOV 3AH,A
MOV A,31H
ANL A,#0FH
ORL A,3AH
SWAP A
MOV B,#10
DIV AB
MOV 42H,A
MOV 43H,B
MOV b,#10
DIV ab
MOV 42H,B
MOV 41H,A
RET
;**************
CHCK: MOV C,DQ
JC RST0
SETB F0 ;
SJMP CHCK0
RST0: CLR F0 ;
CHCK0: RET
END