24c02.txt

来自「eeprom24c02程序代码」· 文本 代码 · 共 107 行

TXT
107
字号
#include <stdio.h>
#include <absacc.h>
sbit   led=P1^0;
sbit   led2=P1^1;
sbit scl=P3^5;   //24c02 SCL
sbit sda=P3^4;   //24c02 SDA
sbit DOG=P1^7;   //狗
uchar x24c02_read(uchar address);   //从24c02的地址address中读取一个字节数据
void x24c02_write(uchar address,uchar info);
   //向24c02的address地址中写入一字节数据info
void x24c02_init();    //24c02初始化子程序
void delay1(uchar x);
void flash();
void x24c01_init();
void start();
void stop();
void writex(uchar j);
uchar readx();
void clock();
void delay1(uchar x)
{
    uint i;
    for(i=0;i<x;i++);
    DOG=~DOG;
}
void flash()
{
    uchar u;
    DOG=~DOG;
}
void x24c02_init()
{
    scl=1; flash(); sda=1; flash();
}
void start()
{
    sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();
}
void stop()
{
    sda=0; flash(); scl=1; flash(); sda=1; flash();
}
void writex(uchar j)
{
    uchar i,temp;
    temp=j;
    for (i=0;i<8;i++){
       temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();
    }
    scl=0; flash(); sda=1; flash();
}
uchar readx()
{
    uchar i,j,k=0;
    scl=0; flash(); sda=1;
    for (i=0;i<8;i++){
       flash(); scl=1; flash();
       if (sda==1) j=1;
       else j=0;
       k=(k<<1)|j; scl=0;
    }
    flash(); return(k);
}
void clock()
{
    uchar i=0;
    scl=1; flash();
    while ((sda==1)&&(i<255))i++;
    scl=0; flash();
}
uchar x24c02_read(uchar address)
{
    uchar i;
    start(); writex(0xa0);
    clock(); writex(address);
    clock(); start();
    writex(0xa1); clock();
    i=readx(); stop();
    delay1(10);
    return(i);
}
void x24c02_write(uchar address,uchar info)
{
    EA=0;
    start(); writex(0xa0);
    clock(); writex(address);
    clock(); writex(info);
    clock(); stop();
    EA=1;
    delay1(50);
}


//====================================================================//
                             main   (){
                           uchar data a=2,b=10,c=0;
                              x24c02_init();
                              x24c02_write(a,b);
                              delay1(200);
                              c=x24c02_read(a);

                              if(c==b)led=0;
                              led2=0;
                              
                              }
//===================================================================//

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?