📄 at24c08.asm
字号:
;****************************************************************
;文件名称:AT24C08.ASM *
;先将数据30H、31H、32H、... 3FH写入到24C08地址00~0FH空间中去; *
;再将24C08地址空间00~0FH的数据读到内部RAM的40~47H空间中来。 *
;***************************************************************
SCL EQU P1.0
SDA EQU P1.1
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV R6,#10H ;写24C08,共写16个
MOV R0,#30H ;写"0"..."F"
ACALL W_DATA
W_LOOP0:
INC R0
DJNZ R6,W_LOOP1
SJMP W_END
W_LOOP1:
ACALL W_DATA1
SJMP W_LOOP0
W_END:
ACALL STOP24
ACALL DELAY
RD_EEROM: ;读24C08
MOV R6,#10H
MOV R1,#40H ;存放数据的起始地址
ACALL R_DATA
R_LOOP0:
MOV @R1,A
INC R1
DJNZ R6,R_LOOP1
ACALL STOP24
SJMP $ ;可在此设断点,程序运行到此处,查看内部数据窗口
R_LOOP1:
ACALL R_DATA1
SJMP R_LOOP0
;-------------------------------------
W_DATA:
ACALL START24
MOV A,#0A0H ;写命令
ACALL WBYTE
CLR A ;写起始地址,地址自动加1
ACALL WBYTE
W_DATA1:
MOV A,R0 ;写数据
ACALL WBYTE
RET
;-------------------------------------
R_DATA:
ACALL START24
MOV A,#0A0H ;写命令
ACALL WBYTE
CLR A ;写起始地址,地址自动加1
ACALL WBYTE
R_DATA1:
ACALL START24
MOV A,#0A1H ;读命令
ACALL WBYTE
ACALL RBYTE ;读数据
RET
;-------------------------------------
WBYTE:
NOP
MOV R3,#08H
WBY0:
CLR SCL
RLC A
MOV SDA,C
SETB SCL
DJNZ R3,WBY0
CLR SCL
NOP
SETB SCL
NOP
JB SDA,$
CLR SCL
NOP
RET
;------------------------------------------
RBYTE:
NOP
MOV R3,#08H
RBY0:
CLR SCL
NOP
SETB SCL
NOP
MOV C,SDA
RLC A
DJNZ R3,RBY0
CLR SCL
NOP
SETB SDA
NOP
SETB SCL
RET
;---------------------------------
START24:
CLR SCL
NOP
SETB SDA
NOP
SETB SCL
NOP
CLR SDA
NOP
CLR SCL
RET
;---------------------------------
STOP24:
CLR SCL
NOP
CLR SDA
NOP
SETB SCL
NOP
SETB SDA
NOP
CLR SCL
RET
;---------------------------------
DELAY: MOV R0,#0H ;延时子程序
DELAY1: MOV R1,#0H
DJNZ R1,$
DJNZ R0,DELAY1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -