rw.asm
来自「MCS-51单片机实验 39个实用实验和源码」· 汇编 代码 · 共 111 行
ASM
111 行
;将字节数据5BH写入到24C0X的00H空间,并从00H空间读出到A
SCL EQU P1.0
SDA EQU P1.1
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV P1,#0FFH
MOV SP,#60H
LCALL WR_DATA
NOP
LCALL RD_DATA
NOP
SJMP $
;------------------------------------------
WR_DATA:
LCALL START ;发启动命令
MOV A,#0A0H ;写地址命令0A0H
LCALL WBYTE
MOV A,#00H ;待写入地址
LCALL WBYTE
MOV A,#5BH ;待写入数据
LCALL WBYTE
LCALL STOP24 ;发停止指令
RET
;------------------------------------------
RD_DATA:
LCALL START ;发启动命令
MOV A,#0A0H ;写芯片地址命令0A0H
LCALL WBYTE
MOV A,#00H ;写入数据起始地址
LCALL WBYTE
LCALL START ;发启动命令
MOV A,#0A1H ;写读地址命令0A1H
LCALL WBYTE
LCALL RBYTE ;读出数据
LCALL STOP24 ;发停止指令
RET
;----------------------------------------------
WBYTE: ;字节写子程序
MOV R3,#08H
WBY0:
CLR SCL
NOP
RLC A
MOV SDA,C ;写位
SETB SCL
DJNZ R3,WBY0 ;循环8次
CLR SCL
NOP
SETB SCL
NOP
JB SDA,$ ;等待SEEPROM应答
CLR SCL
NOP
RET
;------------------------------------------
RBYTE: ;字节读子程序
NOP
MOV R3,#08H
RBY0:
CLR SCL
NOP
SETB SCL
NOP
MOV C,SDA ;读位
RLC A
DJNZ R3,RBY0 ;循环8次
CLR SCL
NOP
SETB SDA ;发应答信号ACK
NOP
SETB SCL
RET
;---------------------------------------------
START: CLR SCL ;启动子程序
NOP
SETB SDA
NOP
SETB SCL
NOP
CLR SDA
NOP
NOP
NOP
CLR SCL
RET
;---------------------------------
STOP24: ;停止子程序
CLR SCL
NOP
CLR SDA
NOP
SETB SCL
NOP
SETB SDA
NOP
CLR SCL
RET
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?