搜索
bottom↓
回复: 2

fm24c04求助

[复制链接]

出0入0汤圆

发表于 2012-12-9 20:12:51 | 显示全部楼层 |阅读模式
弄了一个星期,还没出来,这个程序在24C02上出来的,现在到24C04就出不来了。
我曾今在at24C512上用AVR 8M 晶振 都测试通过了,移植到 STC 晶振是11.0592上就出不来了,修改了延时时间,还是出不来。感谢哥哥姐姐们帮助下,要不又要挨老板批了。
#include "stc11.h"
#include "at24c04.h"
void Delay5us()                //@11.0592MHz
{
        unsigned char i;

        _nop_();
        i = 11;
        while (--i);
}//开始总线
void Start(void)
{
        SDA=1;
        SCL=1;
                Delay5us();
        SDA=0;
        SCL=0;
}



/*-----------------------------------------*/
//结束总线
void Stop(void)
{
        SCL=0;
        SDA=0;
               Delay5us();
        SCL=1;
        SDA=1;
}



/*-----------------------------------------*/
//发送ACk0
void NoAck(void)
{
        SDA=1;
        SCL=1;
                Delay5us();
        SCL=0;
}



/*-----------------------------------------*/
//测试ACk
bit TestAck(void)
{
        bit ErrorBit;
        SDA=1;
        SCL=1;
                Delay5us();
        ErrorBit=SDA;
        SCL=0;
        return (ErrorBit);
}



/*-----------------------------------------*/
//写入8个Bit 到24C04
void Write8Bit(unchar input)
{
        unchar temp;
        for(temp=8;temp!=0;temp--)
        {
                SDA=(bit)(input&0x80);
                SCL=1;
                                Delay5us();
                SCL=0;
                input<<=1;
        }
}



/*-----------------------------------------*/
//写入一个字到24C04中的指定地址中
void Write24C04(unsigned int address,unchar ch)
{
        unsigned char addr_h,addr_l;
        addr_h=address>>8;
        addr_l=address&0xff;
        Start();
        Write8Bit(WriteDeviceAddress);
        TestAck();
        Write8Bit(addr_h);
        TestAck();
        Write8Bit(addr_l);
        TestAck();
        Write8Bit(ch);
        TestAck();
        Stop();
        Delay_10ms(1);                                        //延迟时间最大10ms!!!
}



/*-----------------------------------------*/
//从24C04中读出8个Bit
unchar Read8Bit(void)
{
        unchar temp,rbyte=0;
        for(temp=8;temp!=0;temp--)
        {
                SCL=1;
                                Delay5us();
                rbyte<<=1;
                rbyte|=((unchar)(SDA));
                SCL=0;
        }
        return (rbyte);
}



/*-----------------------------------------*/
//从24C04指定地址位置中读出1个字节
unchar Read24C04(unsigned int address)
{
        unchar ch;
        unsigned char addr_h,addr_l;
        addr_h=address>>8;
        addr_l=address&0xff;
        Start();
        Write8Bit(WriteDeviceAddress);
        TestAck();
        Write8Bit(addr_h);
        TestAck();
        Write8Bit(addr_l);
        TestAck();
        Start();
        Write8Bit(ReadDeviceAddress);
        TestAck();
        ch=Read8Bit();
        NoAck();
        Stop();
        return (ch);
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-12-11 11:38:19 | 显示全部楼层
调通了吗?

出0入0汤圆

发表于 2022-3-5 07:36:25 | 显示全部楼层
本帖最后由 夜月fire 于 2022-3-5 07:50 编辑

24c04每页能存16字节,还有翻页功能,好像是A0引脚控制,我也卡住了,现在只能存256字节
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 03:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表