?? ex24.asm
字號:
; 實驗二十四 I2C 接口實驗(AT24C01)
SCL EQU P1.6
SDA EQU P1.7
ORG 0000H
MAIN:
MOV SP,#60H
MOV P1,#0FFH
CLR RS1
MOV C,P1.3
JNC READ
MOV 38H,#6
MOV 39H,#8
MOV 3AH,#1
MOV 3BH,#2
MOV 3CH,#1
MOV 3DH,#4
MOV R0,#38H
MOV 41H,#20H ; CHIP ADDRESS TO BE WRITED
MOV R7,#6
MOV 40H,#0A0H ; WRITE CHIP (DEVICE) COMMAND
WR1:
MOV A,@R0 ; DATA to be writed to be sent A
MOV 42H,A
ACALL WRITEEP
INC R0
INC 41H
DJNZ R7,WR1
MOV 30H,#1 ; after write,display 01
MOV 31H,#0
ACALL DSPLY
HERE1: SJMP HERE1
READ: MOV R7,#6
MOV 40H,#0A0H
MOV 41H,#20H
MOV R0,#38H
RD1:
ACALL READEP
MOV @R0,A
INC R0
INC 41H
DJNZ R7,RD1
MOV R7,#6
MOV R0,#38H
MOV 31H,#00H
RD2: MOV 30H,@R0
ACALL DSPLY
ACALL DLT ; DELAY 2 S
INC R0
DJNZ R7,RD2
HERE2: SJMP HERE2
DSPLY: MOV 33H,R0
MOV 34H,R7
CLR TI
MOV DPTR,#TAB
MOV R0,#30H
MOV R7,#2
DP0:
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV SBUF,A
DP1:
JNB TI,DP1
CLR TI
INC R0
DJNZ R7,DP0
MOV R0,33H
MOV R7,34H
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DB 0FFH,00H,73H ; 全亮;全滅;P
DLT: MOV 35H,#20
DLT0: MOV R6,#100
DLT1: MOV R5,#250
DLT2: DJNZ R5,DLT2
DJNZ R6,DLT1
DJNZ 35H,DLT0
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; NAME: WRITEEP
; INPUT PARAMETER:
; 40H device address command
; 41H address of location to be writed
; 42H number to be write
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITEEP:SETB RS1 ;SELECT WORK AREA ONE
SETB SDA ; START
SETB SCL
ACALL DLY20US
CLR SDA
MOV R0,#40H
MOV R7,#3
WREP1:
MOV A,@R0
ACALL WBYTE
SETB SCL
; ACALL DLY20US
WACK: MOV C,SDA
JC WACK
CLR SCL
INC R0
DJNZ R7,WREP1
CLR SDA
SETB SCL ;STOP
ACALL DLY20US
SETB SDA
D20MS: MOV R7,#40
D20MS0: MOV R6,#250
D20MS1: DJNZ R6,D20MS1
DJNZ R7,D20MS0
CLR RS1
RET
DLY20US:
MOV R3,#20
W20US: DJNZ R3,W20US
RET
;;;;;;;;;;;;;;;;;;;;
; NAME: WBYTE
; INPUT PARAMETER: A
;;;;;;;;;;;;;;;;;;;;;;;
WBYTE: MOV R6,#8
WB1: CLR SCL
RLC A
MOV SDA,C
ACALL DLY20US
SETB SCL
ACALL DLY20US
DJNZ R6,WB1
CLR SCL
RET
READEP:
SETB RS1 ;SELECT WORK AREA ONE
SETB SDA ; START
SETB SCL
ACALL DLY20US
CLR SDA
MOV R0,#40H
MOV R7,#2
RDEP1:
MOV A,@R0
ACALL WBYTE
SETB SCL
NOP
NOP
RDACK: MOV C,SDA
JC RDACK
CLR SCL
INC R0
DJNZ R7,RDEP1
NOP
SETB SDA
SETB SCL
NOP
NOP
CLR SDA
MOV A,#0A1H
ACALL WBYTE
SETB SCL
NOP
NOP
RDACK1: MOV C,SDA
JC RDACK1
CLR SCL
MOV R7,#8
RDBIT:
SETB SCL
ACALL DLY20US
MOV C,SDA
CLR SCL
RLC A
ACALL DLY20US
DJNZ R7,RDBIT
SETB SCL
NOP
NOP
RDACK2: MOV C,SDA
JNC RDACK2
CLR SCL
CLR SDA
SETB SCL ;STOP
NOP
NOP
SETB SDA
CLR RS1
RET
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -