ORG 0000H
JMP START
ORG 03H
JMP INT00
SCL EQU P3.6
SDA EQU P3.7
RS EQU P2.0
RW EQU P2.1
E EQU P2.2
////////////////////////////////////////////////////////////////
START: MOV IE,#81H
SETB IT0
MOV R0,#20H
MOV 20H,#03H
MOV 21H,#03
MOV 22H,#07
MOV 23H,#05
MOV 24H,#20
MOV 25H,#04
MOV 26H,#06
MOV 27H,#10H
LCALL write24
lcall delay
A12: MOV P0,#01H
LCALL ENABLE
MOV P0,#06H
LCALL ENABLE
MOV P0,#0CH
LCALL ENABLE
MOV P0,#38H
LCALL ENABLE
L120: LCALL READ24
lcall disp
mov r7,#200
l234: lcall delay
djnz r7,l234
jmp l120
////////////////////////////////////////////
disp: MOV P0,#80H
LCALL ENABLE
MOV A,22H
ANL A,#10H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
MOV P0,#81H
LCALL ENABLE
MOV A,22H
ANL A,#0FH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
MOV P0,#82H
LCALL ENABLE
MOV A,#58
LCALL WRITE2
MOV P0,#83H
LCALL ENABLE
MOV A,21H
ANL A,#0F0H
SWAP A
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
MOV P0,#84H
LCALL ENABLE
MOV A,21H
ANL A,#0FH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
MOV P0,#85H
LCALL ENABLE
MOV A,#58
LCALL WRITE2
MOV P0,#86H
LCALL ENABLE
MOV A,20H
ANL A,#0F0H
SWAP A
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
MOV P0,#87H
LCALL ENABLE
MOV A,20H
ANL A,#0FH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
ret
///////////////////////////////////////////////////
write24:
MOV R0,#20H
MOV R5,#08
LCALL START24
MOV A,#0D0H
LCALL SHIFT8
LCALL ACK
MOV A,#00H
LCALL SHIFT8
LCALL ACK
L2: MOV A,@R0
LCALL SHIFT8
LCALL ACK
INC R0
DJNZ R5,L2
LCALL STOP
LCALL DELAY
lcall delay
RET
//////////////////////////////////////////////////////
READ24:
MOV R0,#20H
MOV R5,#07
mov r3,#00
LCALL START24
MOV A,#0D0H
LCALL SHIFT8
LCALL ACK
MOV A,r3
LCALL SHIFT8
LCALL ACK
LCALL START24
MOV A,#0D1H
LCALL SHIFT8
LCALL ACK
A0:
MOV R6,#08h
clr SDA
CLR A
NOP
setb SDA
A1: RL A
cpl c
mov p1.0,c
MOV C,SDA
MOV ACC.0,C
SETB SCL
NOP
nop
nop
CLR SCL
DJNZ R6,A1
MOV @R0,A
INC R0
inc r3
LCALL ACK
DJNZ R5,A0
MOV R6,#08h
clr SDA
CLR A
NOP
setb SDA
A11: RL A
MOV C,SDA
MOV ACC.0,C
SETB SCL
NOP
nop
nop
CLR SCL
LCALL noACK
LCALL STOP
exti1: RET
///////////////////////////////////////////////
ENABLE: CLR RS
CLR RW
CLR E
LCALL DELAY
SETB E
RET
WRITE2: MOV P0,A
SETB RS
CLR RW
CLR E
LCALL DELAY
SETB E
RET
/////////////////////////////////////////////////
START24:
SETB SDA
nop
nop
nop
SETB SCL
NOP
NOP
NOP
CLR SDA
nop
nop
nop
clr scl
/////////////////////////////////////////
RET
STOP: CLR SDA
///SETB SCL
NOP
NOP
NOP
SETB scl
NOP
NOP
NOP
setb sda
RET
/////////////////////////////////////
SHIFT8: MOV R3,#08
S12: CLR SCL
RLC A
MOV SDA,C
NOP
NOP
nop
SETB SCL
NOP
NOP
NOP
CLR SCL
nop
nop
nop
DJNZ R3,S12
NOP
NOP
NOP
NOP
////SETB SDA
RET
//////////////////////////////////////////////////
ACK: CLR SDA
clr scl
nop
nop
nop
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
RET
noACK:setb SDA
nop
nop
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
RET
/////////////////////////////////////////////////////
INT00: LCALL READ24
RETI
DELAY: MOV R2,#10
S23: MOV R4,#220
DJNZ R4,$
DJNZ R2,S23
RET
TABLE: DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
END
JMP START
ORG 03H
JMP INT00
SCL EQU P3.6
SDA EQU P3.7
RS EQU P2.0
RW EQU P2.1
E EQU P2.2
////////////////////////////////////////////////////////////////
START: MOV IE,#81H
SETB IT0
MOV R0,#20H
MOV 20H,#03H
MOV 21H,#03
MOV 22H,#07
MOV 23H,#05
MOV 24H,#20
MOV 25H,#04
MOV 26H,#06
MOV 27H,#10H
LCALL write24
lcall delay
A12: MOV P0,#01H
LCALL ENABLE
MOV P0,#06H
LCALL ENABLE
MOV P0,#0CH
LCALL ENABLE
MOV P0,#38H
LCALL ENABLE
L120: LCALL READ24
lcall disp
mov r7,#200
l234: lcall delay
djnz r7,l234
jmp l120
////////////////////////////////////////////
disp: MOV P0,#80H
LCALL ENABLE
MOV A,22H
ANL A,#10H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
MOV P0,#81H
LCALL ENABLE
MOV A,22H
ANL A,#0FH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
MOV P0,#82H
LCALL ENABLE
MOV A,#58
LCALL WRITE2
MOV P0,#83H
LCALL ENABLE
MOV A,21H
ANL A,#0F0H
SWAP A
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
MOV P0,#84H
LCALL ENABLE
MOV A,21H
ANL A,#0FH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
MOV P0,#85H
LCALL ENABLE
MOV A,#58
LCALL WRITE2
MOV P0,#86H
LCALL ENABLE
MOV A,20H
ANL A,#0F0H
SWAP A
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
MOV P0,#87H
LCALL ENABLE
MOV A,20H
ANL A,#0FH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
LCALL WRITE2
ret
///////////////////////////////////////////////////
write24:
MOV R0,#20H
MOV R5,#08
LCALL START24
MOV A,#0D0H
LCALL SHIFT8
LCALL ACK
MOV A,#00H
LCALL SHIFT8
LCALL ACK
L2: MOV A,@R0
LCALL SHIFT8
LCALL ACK
INC R0
DJNZ R5,L2
LCALL STOP
LCALL DELAY
lcall delay
RET
//////////////////////////////////////////////////////
READ24:
MOV R0,#20H
MOV R5,#07
mov r3,#00
LCALL START24
MOV A,#0D0H
LCALL SHIFT8
LCALL ACK
MOV A,r3
LCALL SHIFT8
LCALL ACK
LCALL START24
MOV A,#0D1H
LCALL SHIFT8
LCALL ACK
A0:
MOV R6,#08h
clr SDA
CLR A
NOP
setb SDA
A1: RL A
cpl c
mov p1.0,c
MOV C,SDA
MOV ACC.0,C
SETB SCL
NOP
nop
nop
CLR SCL
DJNZ R6,A1
MOV @R0,A
INC R0
inc r3
LCALL ACK
DJNZ R5,A0
MOV R6,#08h
clr SDA
CLR A
NOP
setb SDA
A11: RL A
MOV C,SDA
MOV ACC.0,C
SETB SCL
NOP
nop
nop
CLR SCL
LCALL noACK
LCALL STOP
exti1: RET
///////////////////////////////////////////////
ENABLE: CLR RS
CLR RW
CLR E
LCALL DELAY
SETB E
RET
WRITE2: MOV P0,A
SETB RS
CLR RW
CLR E
LCALL DELAY
SETB E
RET
/////////////////////////////////////////////////
START24:
SETB SDA
nop
nop
nop
SETB SCL
NOP
NOP
NOP
CLR SDA
nop
nop
nop
clr scl
/////////////////////////////////////////
RET
STOP: CLR SDA
///SETB SCL
NOP
NOP
NOP
SETB scl
NOP
NOP
NOP
setb sda
RET
/////////////////////////////////////
SHIFT8: MOV R3,#08
S12: CLR SCL
RLC A
MOV SDA,C
NOP
NOP
nop
SETB SCL
NOP
NOP
NOP
CLR SCL
nop
nop
nop
DJNZ R3,S12
NOP
NOP
NOP
NOP
////SETB SDA
RET
//////////////////////////////////////////////////
ACK: CLR SDA
clr scl
nop
nop
nop
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
RET
noACK:setb SDA
nop
nop
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
RET
/////////////////////////////////////////////////////
INT00: LCALL READ24
RETI
DELAY: MOV R2,#10
S23: MOV R4,#220
DJNZ R4,$
DJNZ R2,S23
RET
TABLE: DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
END