找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3720|回复: 0
打印 上一主题 下一主题
收起左侧

eeprom程序有问题 高手指点

[复制链接]
跳转到指定楼层
楼主
ID:30914 发表于 2011-9-20 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
eeprom程序(写0xaa到eeprom在读出来给流水灯)为什么不论写啥   只有一个灯亮  而且是在程序烧进去很长时间


#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define nop() _nop_()
sbit sclk=P2^0;
sbit sda=P2^1;
char temp;
void delay();
void delay1(uint z);
void init();
void start();
void stop();
void respond();
void write_byte(uchar byte);
uchar read_byte();
void write_eeprom(uchar add,uchar date);
uchar read_eeprom(uchar add);


void main()
{
        init();
        write_eeprom(1,0xaa);
        delay1(100);
        temp=read_eeprom(1);
        P0=temp;
        while(1);
}
void delay()
{
        nop();
        nop();
        nop();
        nop();
        nop();
}
void delay1(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
        for(y=123;y>0;y--);       
}
void init()
{
        sclk=1;
        delay();
        sda=1;
        delay();
}
void start()
{
        sda=1;
        delay();
        sclk=1;
        delay();
        sda=0;
        delay();
}
void stop()
{
        sda=0;
        delay();
        sclk=1;
        delay();
        sda=1;
        delay();
}
void respond()
{
        uchar i;
        sclk=1;
        delay();
        while((sda==1)&&(i<250))i++;
        sclk=0;
        delay();
}
void write_byte(uchar byte)
{
        uint i;
        uchar temp;
        temp=byte;
        for(i=0;i<8;i--)
        {
                temp=temp<<1;
                sclk=0;
                delay();
                sda=CY;
                delay();
                sclk=1;
                delay();
        }
        sclk=0;
        delay();
        sda=1;
        delay();
}
uchar read_byte()
{
        uint i;
        uchar temp;
        temp=0;
        sclk=0;
        delay();
        sda=1;
        delay();
        for(i=0;i<8;i--)
        {
                sclk=1;
                if(sda==1)
                temp=temp|0x01;
                temp=temp<<1;
                sclk=0;
                delay();
        }
        return temp;
       
}
void write_eeprom(uchar add,uchar date)
{
        start();
        write_byte(0xa0);
        respond();
        write_byte(add);
        respond();
        write_byte(date);
        respond();
        stop();
}
uchar read_eeprom(uchar add)
{
        uchar date;
        start();
        write_byte(0xa0);
        respond();
        write_byte(add);
        respond();
        start();
        write_byte(0xa1);
        respond();
        date=read_byte();
        stop();
        return date;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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