作者:清風(fēng)徐徐 #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中讀取一個(gè)字節(jié)數(shù)據(jù) void x24c02_write(uchar address,uchar info); //向24c02的address地址中寫(xiě)入一字節(jié)數(shù)據(jù)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; } //===================================================================//
|
|