马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
SDA EQU P3.7
SCL EQU P3.6
MEM_R1 EQU 0BH
MEM_R2 EQU 0CH
WP EQU P2.3
AD0 EQU P2.0
AD1 EQU P2.1
AD2 EQU P2.2
DATA_A EQU 20H
ORG 0000H
JMP MAIN
ORG 0030H
MAIN: MOV SP,#60H
LCALL REST
MOV DATA_A,#00H
MOV R0,#07H
MOV A,@R0
MOV B,A
MOV DPH,DATA_A
Lcall WT_MEM
LCALL MEM_STOP
LCALL DELAY20MS
LPE: MOV DPH,#00H
MOV B,#00H
LCALL RD_MEM
MOV P1,B
JMP $
REST: CLR AD0
CLR AD1
CLR AD2
CLR WP
CLR SCL
CLR SDA
MOV P0,#00H
RET
;**************** AT24C04 操作程序 ****************
WT_MEM:
ACALL MEM_START
MOV A,#0A0H
ACALL WR1
MWRITE2:
MOV A,DPH
ACALL WR1
MOV A,B
ACALL WR1
ACALL MEM_STOP
RET
;********** AT24CXX 读字节程序 ***************************
; 要读入的地址信息在DPH中,返回的读取数据在B中
RD_MEM:
ACALL MEM_START
MOV A,#0A0H
ACALL WR1
MOV A,DPH
ACALL WR1
ACALL MEM_START
MOV A,#0A1H
ACALL WR1
CLR A
MOV DPL,#08H
CLR SCL
RD1: SETB SCL
NOP
LCALL MDELAY
MOV C,SDA
RLC A
CLR SCL
LCALL MDELAY
DJNZ DPL,RD1
MOV B,A
ACALL MEM_STOP
MOV 30H,B
LCALL ICSHOW
RET
WR1: MOV MEM_R1,#08H
WR2: RLC A
MOV SDA,C
SETB SCL
ACALL MDELAY
CLR SCL
ACALL MDELAY
DJNZ MEM_R1,WR2
WR4: LCALL MDELAY
SETB SCL
LCALL MDELAY
CLR SCL
RET
;*********** 发送开始信号 ********************
;开始信号:在时钟为高电平,数据线出现下跳;
MEM_START: SETB SDA
SETB SCL
NOP
CLR SDA
ACALL MDELAY
CLR SCL
ACALL MDELAY
RET
;********** 发送停止信号 *********************
;停止信号:在时钟为高电平,数据线出现上跳;
MEM_STOP: SETB SCL
ACALL MDELAY
SETB SDA
ACALL MDELAY
LCALL DELAY20MS
RET
MDELAY:
MOV MEM_R2,#04H
LOOP: NOP
DJNZ MEM_R2,LOOP
RET
DELAY20MS:
MOV R5,#40
DELAY1: MOV R4,#00H
DELAY2: DJNZ R4,DELAY2
DJNZ R5,DELAY1
RET
ICSHOW: MOV DPTR,#TAB
MOV R0,30H
MOV A,@R0
LOOP1: MOVC A,@A+DPTR
LCALL SEND
INC R0
CJNE R0,#33H,LOOP1
RET
SEND: MOV R7,#08H
LOOP2: RRC A
MOV P1.6,C
SETB P3.7
CLR P3.7
DJNZ R7,LOOP2
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
我想将07h写入24c04中,然后读出来,用数码管显示出来!结果:07h没显示,我想问下朋友,这段代码的错误之处????????????????????? |