导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[newman0708]我的24C16A芯片读写不了,请指点一下



No.100794
作者:newman0708
邮件:newman0708@gmail.com
ID:65075
登陆:9次
文章数:18篇
最后登陆IP:218.80.13.101
最后登陆:2007/4/27 20:37:57
注册:2006/12/10 11:02:14
财富:183
发帖时间:2006/12/19 14:55:43
发贴者IP:211.167.159.68
标题:newman0708:我的24C16A芯片读写不了,请指点一下,
摘要:No.100794我的24C16A芯片读写不了,请指点一下, 下面是我的测试代码,
读和写都不行,不知道哪里出了问题。

#1 A0  接地
#2 A1 接地
#3 A2 接地
#4 GND 接地
#5 SDA P2^1
#6 SCL P2^0
#7 WP 接地
#8 VCC 5V

#include   <reg52.h>  
#include  <intrins.h>  

#define OP_WRITE 0xa0
#define OP_READ 0xa1

sbit SCL=P2^0;
sbit SDA=P2^1;

void delayms(unsigned char address);
/*-----------------------------------------------
调用方式:void start_bit(void)
函数说明:开始位
-----------------------------------------------*/
void start_bit(void)
{
    SCL=1;_nop_();
    SDA=1;_nop_();
    SDA=0;_nop_();
    SCL=0;_nop_();


}
/*-----------------------------------------------
调用方式:void stop_bit(void)
函数说明:停止位
-----------------------------------------------*/
void stop_bit(void)
{
    SDA=0;_nop_();
    SCL=1;_nop_();
    SDA=1;_nop_();
}
/*-----------------------------------------------
调用方式:void mast_ack(void)
函数说明:主答函数
-----------------------------------------------*/
void mast_ack(void)
{
    SCL=0;_nop_();
    SDA=0;_nop_();
    SCL=1;_nop_();
    SCL=0;_nop_();
    SDA=1;_nop_();
}

/*-----------------------------------------------
调用方式:void ack(void)
函数说明:应答函数
-----------------------------------------------*/
void ack(void)
{
    SDA=1;
    SCL=0;_nop_();
    SCL=1;_nop_();
    while(SDA){;}
    SCL=0;_nop_();
}
/*-----------------------------------------------
调用方式:void no_ack(void)
函数说明:无需应答位,在读程序中用到
-----------------------------------------------*/
void no_ack(void)
{
    SDA=1;_nop_();
    SCL=1;_nop_();
    SCL=0;_nop_();
}
/*-----------------------------------------------
调用方式:write_8bit(unsigned char ch)
函数说明:写一个字节(8位)数据
-----------------------------------------------*/
write_8bit(unsigned char ch)
{
    unsigned char i=8;
    SCL=0;_nop_();
    while(i--)
    {
        SDA=(bit)(ch&0x80);_nop_();
        ch  <  <=1;
        SCL=1;_nop_();
        SCL=0;_nop_();
    }
}
/*----------------------------------------------
调用方式:unsigned char read24c16(unsigned int address)
函数说明:读24c16指定地址数据(字节读)
-----------------------------------------------*/
unsigned char read24c16(unsigned int address)
{
    unsigned char page=(address/256)  <  <1;
    unsigned char data rdata;
    unsigned char i=8;
    start_bit();
    write_8bit(OP_WRITE|page);
    ack();
    write_8bit(address);
    ack();//伪写
    start_bit();
    write_8bit(OP_READ|page);
    ack();
    while(i--)
    {
        rdata  <  <=1;
        SCL=0;_nop_(); SCL=1;
        _nop_();
        if(SDA) rdata|=0x01;
    }
    no_ack();
   ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:16毫秒 最大:78531毫秒 查询6次