RSS

24C02的C控制程序

发布时间:2008-05-05 关键字: 程序 控制   flash uchar  void  scl sda
 24C02的C控制程序

#define uchar unsigned char

#define uint unsigned int

#include <reg52.h>

#include <stdio.h>

#include <absacc.h>

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);

}
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册