背景: #EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  
阅读新闻

24C02读写程序

[日期:2006-07-24] 来源:因特网  作者:未知 [字体: ]

 //   24c02读写程序
// www.808cn.com
  #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);
  }

阅读:
录入:gddq

推荐 】 【 打印
上一篇:C51 I/O口模拟串口通讯C源程序
下一篇:在VC++中利用ActiveX控件开发串行通信程序
相关新闻       24C02 
本文评论       全部评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款