15885|16

8

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

[求助]24c02的读写问题 [复制链接]

我的24C02,1,2,3,4,7脚接地,8脚接VCC,5,6脚通过10k电阻接vcc.。 5 脚接89C2051的P1.3,6脚接其的p1.4。我想对24C02进行读写,但每次读出来的结果总为零。因为,我的P1接口上都接有LED,并且低电平时LED发光,单片机源程序如下,我不知错了哪里,敬请哪位高手指点迷津,不胜感激。
SCL EQU P1.4;时钟
SDA EQU P1.3;数据线
LED1 EQU P1.7
LED2 EQU P1.6
CPL P1.7;延时杳看单片机是否工作
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
CPL P1.7
CALL DEPLAY
MOV P1,#0FFH
CALL START24C02
MOV A,#10100000B
CALL W24C02
CALL ACK24C02
MOV A,#06H
CALL W24C02
CALL ACK24C02
MOV A,#10111111B
CALL W24C02
CALL ACK24C02
CALL STOP24C02
CALL DEPLAY
SETB P1.6
SETB P1.7
CALL START24C02
MOV A,#10100001B
CALL W24C02
CALL ACK24C02
MOV A,#06H
CALL W24C02
CLR SDA
CALL ACK24C02
CALL R24C02
CALL ACK24C02
CALL STOP24C02
MOV P1,A
MAINLOOP:CPL P3.5;杳看单片是否读写完毕
         CALL DEPLAY
         SJMP MAINLOOP
R24C02:MOV R7,#8;读24c02
   RLOOP:SETB SCL
         CALL DE50US
         MOV C,SDA
         RLC A
         CLR SCL
        CALL DE50US
         DJNZ R7,RLOOP
         RET
ACK24C02: CLR SDA;应答
         CALL DE50US
          SETB SCL
          CALL DE50US
   MOV C,SDA
   ACKLOOP: JC $
         CLR SCL
         CALL DE50US
         RET
W24C02: MOV R7,#8;写24c01
WLOOP: RLC A
        MOV SDA,C
        SETB SCL
        CALL DE50US
        CLR SCL
        CALL DE50US
        DJNZ R7,WLOOP
        RET
START24C02:SETB SDA; 开始24c02操作
           SETB SCL
           CALL DE50US
           CLR SDA
           CALL DE50US
    CLR SCL
           CALL DE50US
           RET
STOP24C02: CLR SDA;停止24c02操作
           CALL DE50US
           SETB SCL
           CALL DE50US
           SETB SDA
           RET
DEPLAY: MOV R0,#00H;延时
   DE1: MOV R1,#00H
        DJNZ R1,$
        DJNZ R0,DE1
        RET
DE50US: MOV R0,#100;延时
        DJNZ R0,$
RET
           END
此帖出自单片机论坛

最新回复

看花了。。。  详情 回复 发表于 2007-6-13 19:19
点赞 关注
 

回复
举报

6

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

Re: [求助]24c02的读写问题

应答信号错了 是SET SDA;
此帖出自单片机论坛
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

Re: [求助]24c02的读写问题

不行,应答没有错,请再帮我仔细分析一下,多谢了。
此帖出自单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

4
 

Re: [求助]24c02的读写问题

重复:应答信号。另:普通E2相临两次读写操作要间隔10mS左右。
此帖出自单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

5
 

Re: [求助]24c02的读写问题

我的应答信号中有延时,并且只有当SDA的信号为高电平时,才退出循环,我怀疑是没写进数据,或者是读数时出错,IC 我已经换了两个了,已确定IC 是OK的,硬件连接也是正确的,真的想不通了。
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 

Re: [求助]24c02的读写问题

老兄,麻烦用C写吧. 网上有好多参考程序,我也有C写的(wgc204@163.com)
此帖出自单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

7
 

Re: [求助]24c02的读写问题

确实是应答信号有错,多LG3459,现在还有个问题是,不能进行读,请火箭告诉我读的时序,英文资料,我实在看不懂,C 语言我不会,如有可能的话,给我编写一个读的汇编程序参考,不胜感激
此帖出自单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

8
 

Re: [求助]24c02的读写问题

我都用C了,这里转网上的一个程序,仅供参考: SDA EQU P0.1 SCL EQU P0.0 ORG 0 LJMP START START: MOV R0,#40H MOV A,#46H FF: MOV @R0,A INC R0 DEC A JNZ FF MOV DPH,#6 MOV DPL,#0 MOV R2,#32 MOV R0,#40H LCALL WR16 DDD: SJMP DDD START1: MOV DPH,#2 MOV DPL,#1 MOV R2,#16 MOV R0,#41H LCALL RD16 SJMP DDD ;---------------------------------------------------------- ;WR16子程序:写多字节到24C16 ;入口参数:DPH:页地址,DPL:单元地址,R2:写入个数,R0:写入数据起址 ;---------------------------------------------------------- WR16: CLR SCL SETB SDA SETB SCL CLR SDA ;启动,注意时间要求 WR16A: MOV A,DPH RL A ORL A,#0A0H LCALL SDBYTE ;送写命令 CLR SCL SETB SDA SETB SCL JB SDA,WR16A ;是否响应 WR16B: MOV A,DPL LCALL SDBYTE ;送单元地址 CLR SCL SETB SDA SETB SCL JB SDA,WR16B ;是否响应 WR16C: MOV A,@R0 LCALL SDBYTE CLR SCL SETB SDA SETB SCL JB SDA,WR16C INC R0 DJNZ R2,WR16C ;页写入 CLR SCL CLR SDA SETB SCL SETB SDA ;停止 RET ;---------------------------------------------------------- ;RD16子程序:从24C16读多字节 ;入口参数:DPH:页地址,DPL:单元地址,R2:读个数,R0:暂存数据起址 ;---------------------------------------------------------- RD16: CLR SCL SETB SDA SETB SCL CLR SDA ;开始 RD16A: MOV A,DPH RL A ORL A,#0A0H LCALL SDBYTE ;送写命令 CLR SCL SETB SDA SETB SCL JB SDA,RD16A ;响应 RD16B: MOV A,DPL LCALL SDBYTE CLR SCL SETB SDA SETB SCL JB SDA,RD16B CLR SCL SETB SDA SETB SCL CLR SDA RD16C: MOV A,DPH RL A ORL A,#0A1H ;送读命令 LCALL SDBYTE CLR SCL SETB SDA SETB SCL JB SDA,RD16C RC1: CLR SCL SETB SDA ;读引脚 LCALL RCBYTE MOV @R0,A INC R0 CLR SCL ;---- CLR SDA SETB SCL ;应答 DJNZ R2,RC1 CLR SCL SETB SDA SETB SCL ;非应答 CLR SCL CLR SDA SETB SCL SETB SDA ;停止 RET ;---------------------------------------------------------- ;SDBYTE子程序:送一个字节到SDA ;入口参数:要传送的数A ;局部参数:R7 ;---------------------------------------------------------- SDBYTE:MOV R7,#8 ;R7控制循环次数 SL1: CLR SCL ;置低SCL RLC A MOV SDA,C SETB SCL ;给SCL一个上升沿 DJNZ R7,SL1 RET ;---------------------------------------------------------- ;RCBYTE子程序:从SO接收一个字节 ;出口参数:接收到的字节A ;局部参数:R7 ;---------------------------------------------------------- RCBYTE:MOV R7,#8 ;R7控制循环次数 RL1: CLR SCL SETB SCL MOV C,SDA ;读引脚 RLC A DJNZ R7,RL1 ;先接收低位 RET END
此帖出自单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

9
 

Re: [求助]24c02的读写问题

多谢!但以上程序错误处太多,无法编译,我其实只想知道读的时序,比如说,开如是SDA,SCL为高平,SDA 跳低,器件开始。。。。,请问有没有24C02,中文方面的资料,主要是读方面的,写24C01我已能自如撑握了,现就是写进去的数据没办法读出来,只能用烧录机读,实在太无奈了,也不现实。
此帖出自单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

10
 

Re: [求助]24c02的读写问题

我发的可以编译。对于一个元件,一个时序图足矣。铁电的24系列有中文的。
此帖出自单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

11
 

Re: [求助]24c02的读写问题

多谢,但是没找到,你看是不是这样的,它的读时序是否是这样,先是SDA,SCL为高,SDA为低,器件开始,再SCL为低,再送10100000至器件, 再应答,应答信号为SDA为高,再SCL 为高,检测SDA,若为高,重写。再SCL为低,写地址至器件,再重新开始器件,再送10100001至器件,然后读器件,应答信号为,SDA为低,再SCL 为高,再SCL低,再SDA 为高,再结束信号
此帖出自单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

12
 

Re: [求助]24c02的读写问题

应答信号为,SDA为低,再SCL 为高,再SCL低,再SDA 为高,再结束信号---->应答信号为,SDA为高,再SCL 为高,再SCL低,再结束信号
此帖出自单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

13
 

Re: [求助]24c02的读写问题

多谢各位,下面是我的读源程序,但不能读到数据,请帮我修改一下,粘贴到你的回复里,多谢,再次多谢。 SCL EQU P1.1;时钟 SDA EQU P1.0;数据线 MOV R6,#16 DE_LED: CPL P1.6 CALL DE CALL DE DJNZ R6,DE_LED SETB SDA; 起始--------- SETB SCL NOP NOP NOP CLR SDA NOP NOP NOP CLR SCL NOP NOP NOP;?-------------------------- write_r1:MOV A,#0A0H;写 CALL W24C01 NOP NOP SETB SDA;应答--------------------------------- NOP NOP SETB SCL NOP NOP MOV C,SDA JC WRITE_R1 CLR SCL NOP NOP NOP;--------------------------------- WRITE_R2:MOV A,#06H;写地址 CALL W24C01 NOP NOP SETB SDA;应答------------------------------ NOP NOP SETB SCL NOP NOP MOV C,SDA JC WRITE_R2 CLR SCL NOP NOP;-------------------------- SETB SDA;重新开始------------- SETB SCL NOP NOP NOP CLR SDA;----------------------------- NOP NOP NOP NOP CLR SCL NOP NOP NOP NOP WRITE_R3:MOV A,#0A1H CALL W24C01 NOP NOP SETB SDA NOP NOP SETB SCL NOP NOP MOV C,SDA JC WRITE_R3 CLR SCL CALL R24C01;读器件-------------------- CLR SDA;应答------------------ NOP NOP SETB SCL NOP NOP CLR SCL NOP NOP CLR SDA;结束------------------- SETB SCL NOP NOP SETB SDA;---------------- MOV P2,#00H;打开七段数码管的控制开关?------------ CALL DE CALL DE MOV P1,A;把读到的娄据输出------------- CALL DE MOV P0,A;再把读至的数据输出-------------- LOOP: ;检测是否完成所有的操作---------------- CPL P1.7 CALL DE SJMP LOOP W24C01: MOV R7,#8 WLOOP: RLC A MOV SDA,C NOP NOP SETB SCL NOP NOP CLR SCL NOP NOP DJNZ R7,WLOOP RET R24C01: MOV R7,#8 RLOOP: SETB SCL NOP NOP MOV C,SDA RLC A CLR SCL NOP NOP NOP DJNZ R7,WLOOP RET DE: MOV R1,#00H DE1: MOV R2,#00H DJNZ R2,$ DJNZ R1,DE1 RET END
此帖出自单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

14
 

Re: [求助]24c02的读写问题

R24C01: MOV R7,#8 RLOOP: SETB SCL MOV C,SDA RLC A CLR SCL DJNZ R7,WLOOP ;??????RLOOP RET 你这要能读出来就神了,其他没发现错误。
此帖出自单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

15
 

Re: [求助]24c02的读写问题

多谢,现在已经能读出来了,自己把自己给蒙住了,多谢你指点迷津,实太感谢了,马上我就要把它应用到实践中去了,谢谢。
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 

Re: [求助]24c02的读写问题

你把时钟的每个脉冲的延时时间都加长到4-5个US
此帖出自单片机论坛
 
 
 

回复

1284

帖子

0

TA的资源

五彩晶圆(中级)

17
 

Re: [求助]24c02的读写问题

看花了。。。
此帖出自单片机论坛
 
个人签名呼呼...在校应届大四学生,代做电子类毕业设计(测量类、仪器类、控制类、无线通信类、电子产品类、界面设计类、纯论文类等等,一一俱全)。涉及各种单片机软硬件设计、电路模拟分析、FPGA、CPLD、ARM7/ARM9、LINUX、VB/VC++/QT界面等等。包过。。。欢迎咨询。Tel:13957160506。QQ:273437087
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表