⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iic.c

📁 89c51的iic 读写的程序
💻 C
字号:
#include <stdio.h>
#include <reg51.h>
#include <absacc.h>

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

sbit scl=P3^0; 								//24c02 SCL
sbit sda=P3^1; 								//24c02 SDA

uchar code disptable[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,  //0,1,2,3,4,5,6,7,8
                        0x09,0x11,0xc1,0x63,0x85,0x61,0x71,0xff};                //9,null 
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
sbit P25=P2^5;

bdata  uchar  flag;
sbit   flag0=flag^0; 	 	
sbit   flag1=flag^1; 
sbit   flag2=flag^2; 
sbit   flag3=flag^3; 
sbit   flag4=flag^4; 
sbit   flag5=flag^5; 
sbit   flag6=flag^6;
sbit   flag7=flag^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 x24c01_init();
void start();
void stop();
void writex(uchar j);
uchar readx();
void clock();
uchar i;
void delay(uchar x) {            /*--延时子程序--*/
    uchar y;
    while(x-->0) {
         for(y=0;y<125;y++) {;}
    }
  }
void x24c02_init()
   {
     scl=1; sda=1; 
    }
void start()
   {
     sda=1;  
     scl=1; 
     sda=0; 
     scl=0;
    }
void stop()
   {
     scl=0; 
     sda=0; 
     scl=1; 
     sda=1; 
    }
void writex(uchar j)
   {
     uchar i,temp;
     temp=j;
     for (i=0;i<8;i++)
       {
         sda=(bit)(temp&0x80);
         scl=1; 
         scl=0; 
         temp=temp<<1; 
        }
     scl=0;
     sda=1; 
    }
uchar readx()
   {
      uchar i,j,k=0;
      scl=0;
      sda=1;
      for (i=0;i<8;i++)
        {
          scl=1;
          if (sda==1) j=1;
                 else j=0;
          k=(k<<1)|j; 
          scl=0;
         } 
      return(k);
    }
void clock()
   {
     uchar i=0;
     sda=1;
     scl=1; 
     i=sda;
     scl=0; 
    }
uchar x24c02_read(uchar address)
   {
     uchar i;
     start(); 
     writex(0xa0);
     clock(); 
     writex(address);
     clock(); 
     start();
     writex(0xa1); 
     clock();
     i=readx(); 
     stop();
     delay(5);
     return(i);
    }
void x24c02_write(uchar address,uchar info)
   {
     EA=0;
     start(); 
     writex(0xa0);
     clock(); 
     writex(address);
     clock(); 
     writex(info);
     clock(); 
     stop();
     EA=1;
     delay(5);
    }
void disp(void)
  {
    P0=0x25;
    P20=1;
    delay(5);
    P20=0;
    P0=0x99;
    P21=1;
    delay(5);
    P21=0;						//显示24  
    P0=0xff;
    P22=1;
    delay(5);
    P22=0;
    P0=0xff;
    P23=1;
    delay(5);
    P23=0;
    P0=disptable[i/16];
    P24=1;
    delay(5);
    P24=0;
    P0=disptable[i%16];
    P25=1;
    delay(5);
    P25=0;
   } 
void disperr(void)
  {
    P0=0x25;
    P20=1;
    delay(5);
    P20=0;
    P0=0x99;
    P21=1;
    delay(5);
    P21=0;						//显示24err 
    P0=0xff;
    P22=1;
    delay(5);
    P22=0;
    P0=0x61;
    P23=1;
    delay(5);
    P23=0;
    P0=0xf1;
    P24=1;
    delay(5);
    P24=0;
    P0=0xf5;
    P25=1;
    delay(5);
    P25=0;
   } 
void dispgood(void)
  {
    P0=0x25;
    P20=1;
    delay(5);
    P20=0;
    P0=0x99;
    P21=1;
    delay(5);
    P21=0;						//显示24 good 
    P0=0x09;
    P22=1;
    delay(5);
    P22=0;
    P0=0x03;
    P23=1;
    delay(5);
    P23=0;
    P0=0x03;
    P24=1;
    delay(5);
    P24=0;
    P0=0x85;
    P25=1;
    delay(5);
    P25=0;
   } 
//====================================================================//
void main ()
   {
     uchar data addr,dat,j;
     x24c02_init();	
     flag0=1;flag1=0;
     addr=0;
	 dat=0x55;
     while(flag0)
       {
	     x24c02_write(addr,dat);
         i=dat;
         for(j=0;j<20;j++)
	        disp();
	     j=x24c02_read(addr);            
         if(j!=dat)flag1=1;
         addr++;
		 dat++;
         if(addr==0x11)flag0=0;
        }
     if(flag1){
               i=0;
               while(1)disperr();  
               } 
        else{
             i=255;
             while(1){
                 dispgood(); 
               }
             }
     //x24c02_init();
    }
//===================================================================//

⌨️ 快捷键说明

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