亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 200622894827.c

?? 24系列eeprom的讀寫程序
?? C
字號:




#include <intrins.h>
#include <reg52.h>
#define uchar  unsigned char
#define uint   unsigned int
#define ulong  unsigned long
#define NOP5    _nop_();_nop_();_nop_()
#define NOP2    _nop_()

sbit SDA=P1^0;//模擬口線
sbit SCL=P1^1;


////////////////////////////////////////////////////////
///
///24c01--24c1024模擬口線通訊程序
///2006.2   魯志遠
///lzylzy123@yahoo.com.cn
////////////////////////////////////////////////////////
//源程序由函數組成,程序清單如下:


void Init(void)
{
SCL=1;
NOP5;
SDA=1;
NOP5;
}


void start(void)//啟動I2C總線,退出時SCL為低
{
   SDA=1;
   NOP5;
   SCL=1;
   NOP5;
   SDA=0;
   NOP5;
   SCL=0;
   NOP5;
}


//---------------------------------------------------------
void stop(void )//*停止I2C總線
{
  SCL=0;
  SDA=0;
  NOP5;
  SCL=1;
  SDA=1;
  NOP5;
}

//---------------------------------------------------------
void ack(void )/*發送應答位*/
{
  SDA=0;
  NOP5;
  SCL=1;
  NOP5;
  SCL=0;
  NOP2;
  SDA=1;
}
//---------------------------------------------------------
void Nack(void )//發送非應答位
{
  SDA=1;
  NOP2;
  SCL=1;
  NOP2;
  SCL=0;
}
//----------------------------------------------------------
bit cack(void )//應答位檢查返回1表示應答正常
{
  bit i=0;
  SDA=1;
   NOP2;
  SCL=1;
   NOP2;
   if(SDA==1)
     {i=0;}
      else
        i=1;
   SCL=0;
   SDA=1;
   return(i);
}
//-------------------------------------------------------------
/*向虛擬I2C總線上發送1個數據字節*/
void wrbyt(uchar shu)//向虛擬I2C總線上發送1個數據字節退出時SCL為低
{
uchar data i;

for(i=0;i<8;i++)
  {
     if((shu&0x80)>0)
       {
        SDA=1;
        }
        else
           SDA=0;
	NOP2;
	SCL=1;
	NOP2;
	SCL=0;
    shu=shu<<1;
    }
SCL=0;
SDA=0;
}
//--------------------------------------------------------------
/*從I2C總線上讀取1個數據字節*/
uchar rdbyt(void )
{
   uchar n=0x00;
   uchar j;
   for(j=0;j<8;j++)
   {
     SCL=1;
     NOP2;
   if(SDA==0)
      n=n<<1;
      else
         {
	  n=n<<1;
	  n=n+1;
	 }
	// NOP2;
	 SCL=0;
    }
SDA=1;
SCL=1;
return(n);
}

//---------------------------------------------------------
//向24C04隨機寫一字節
//d數據 n數據地址 x芯片型號
//芯片型號AT24C01--24C16=0;  AT24C0164--AT24C1024=1;
void wr_byta( uchar data d, ulong data n, bit x)
{
  uchar data a=0;
  uchar data j=0;
  uchar data c=0;

  //24c01--24c16操作
  if(x==0)
  {
   j = n/255;//業面地址
   a = n%255;//面內地址
   j = j<<1;
   j = j+0xa0;

    start();//啟動I2C總線,退出時SCL為低
      wrbyt(j);//發送1個字節,寫芯片地址
      if (cack()==1)//應答位檢查返回1表示應答正常
        {
         wrbyt(a);//發送1個字節,寫片內地址
		  if (cack()==1)
	        {
		    wrbyt(d);//發送1個字節,寫數據
		    if (cack()==1)
		      {
		      stop( );//停止I2C總線
		      }

		   }
         }
   }

  //24c164--24c1024操作
  if(x==1)
  {
	if(n>65025)
	  {
	   c=0xa2;
	   n-=57039;
	   j=n/255;//業面地址
       a=n%255;//面內地址
	  }
	   else
	     {
		  j=n/255;//業面地址
          a=n%255;//面內地址
		  c=0xa0;
		 }

      start();//啟動I2C總線,退出時SCL為低
      wrbyt(c);//發送1個字節,寫芯片地址
      if (cack()==1)//應答位檢查返回1表示應答正常
        {
         wrbyt(j);//發送1個字節,寫片內地址1
	     if (cack()==1)
	         {
		  wrbyt(a);//發送1個字節,寫片內地址2
		  if (cack()==1)
	           {
		        wrbyt(d);//發送1個字節,寫數據
		        if (cack()==1)
		           {
		           stop( );//停止I2C總線
		           }

			   }

	          }
         }
   }
}

//-----------------------------------------------------------------------
//向24C04隨機讀一字節
//n數據地址 x芯片類型
//芯片型號AT24C01--24C16=0;  AT24C0164--AT24C1024=1;
uchar rd_byta(ulong data  n, bit x)
{
  uchar data c=0;
  uchar data a=0;
  uchar data j=0;
  uchar data tt=0;
  if(x==0)
  {
  j = n/255;//業面地址
  a = n%255;//面內地址
  j = j<<1;
  j = j+0xa0;
  start();//啟動I2C總線
  wrbyt(j);//發送1個字節,寫芯片地址
  if (cack()==1)//應答位檢查返回1表示應答正常
      {
       wrbyt(a);//發送1個字節,寫片內地址
       if (cack()==1)//應答位檢查返回1表示應答正常
          {
           j=j>>1;
           j=j<<1;
	   j=j+1;  //設置讀標志
           start();//重新啟動I2C總線
           wrbyt(j);//發送1個字節寫芯片地址和讀信息
           if (cack()==1)//應答位檢查返回1表示應答正常
              {
               tt=rdbyt( );
              // Nack( );    //*發送應答位*/
               stop( );//*停止I2C總線
	   }
	  }
       }
 return(tt);
   }

if(x==1)
  {
  if(n>65025)
    {
     c=0xa2;
     n-=57039;
     j=n/255;//業面地址
     a=n%255;//面內地址
    }
     else
        {
         j = n/255;//業面地址
         a = n%255;//面內地址
         c=0xa0;
        }

  start();//啟動I2C總線
  wrbyt(c);//發送1個字節,寫芯片地址
  if (cack()==1)//應答位檢查返回1表示應答正常
      {
       wrbyt(j);//發送1個字節,寫片內地址
       if (cack()==1)//應答位檢查返回1表示應答正常
          {
           wrbyt(a);//發送1個字節,寫片內地址
          if (cack()==1)//應答位檢查返回1表示應答正常
            {
             c=c>>1;
             c=c<<1;
	     c=c+1;  //設置讀標志
             start();//重新啟動I2C總線
             wrbyt(c);//發送1個字節寫芯片地址和讀信息
             if (cack()==1)//應答位檢查返回1表示應答正常
               {
                tt=rdbyt( );
                Nack( );    //*發送應答位*/
                stop( );//*停止I2C總線
	       }
	   }
          }

       }
 return(tt);
   }
}

/*---------------------------------------------------------
向24C04隨機寫多字節,
每次一頁面:
24c01,24c02:8字節,
24c04,24c08,24c16:16字節.
24c32,24c64:32字節.
24c128,24c256:64字節.
24c512:128字節.
24c1024:256字節.
d數據頭 p數據個數, n數據起使地址  x芯片型號
芯片型號AT24C01--24C16=0;  AT24C0164--AT24C1024=1; */

void wr_byta_8x( uchar data *d, uchar data p, ulong data n, bit x)
{
  uchar data a=0;
  uchar data j=0;
  uchar data c=0;
  uchar data i=0;

  //24c01--24c16操作
  if(x==0)
  {
   j = n/255;//業面地址
   a = n%255;//面內地址
   j = j<<1;
   j = j+0xa0;

    start();//啟動I2C總線,退出時SCL為低
      wrbyt(j);//發送1個字節,寫芯片地址
      if (cack()==1)//應答位檢查返回1表示應答正常
        {
            wrbyt(a);//發送1個字節,寫片內地址
            for(i=0; i<p; i++)
            {
	    cack();
	    wrbyt(d[i]);//發送1個字節,寫數據
            }
            if (cack()==1)
	     {
              stop( );//停止I2C總線
             }
         }
   }

  //24c164--24c1024操作
  if(x==1)
  {
	if(n>65025)
	  {
	   c=0xa2;
	   n-=57039;
	   j=n/255;//業面地址
       a=n%255;//面內地址
	  }
	   else
	     {
		  j=n/255;//業面地址
          a=n%255;//面內地址
		  c=0xa0;
		 }

      start();//啟動I2C總線,退出時SCL為低
      wrbyt(c);//發送1個字節,寫芯片地址
      if (cack()==1)//應答位檢查返回1表示應答正常
        {
         wrbyt(j);//發送1個字節,寫片內地址1
	     if (cack()==1)
	         {
		  wrbyt(a);//發送1個字節,寫片內地址2
                  for(i=0; i<p; i++)
                    {
	            if (cack()==1)
	              {
                      wrbyt(d[i]);//發送1個字節,寫數據
	              }
                    }
                  if (cack()==1)
	            {
	            stop( );//停止I2C總線
	            }
               }
         }
   }
}

//-----------------------------------------------------------------------
//向24C04讀多字節
//n數據地址 x芯片類型
//d數據頭 X數據個數, n數據起使地址  x芯片型號
//芯片型號AT24C01--24C16=0;  AT24C0164--AT24C1024=1;
void rd_byta_8x(uchar data *d, uchar data p, ulong data  n, bit x)
{
  uchar data c=0;
  uchar data a=0;
  uchar data j=0;
  uchar data i=0;

  if(x==0)
  {
  j = n/255;//業面地址
  a = n%255;//面內地址
  j = j<<1;
  j = j+0xa0;
  start();//啟動I2C總線
  wrbyt(j);//發送1個字節,寫芯片地址

  if (cack()==1)//應答位檢查返回1表示應答正常
      {
       wrbyt(a);//發送1個字節,寫片內地址
       if (cack()==1)//應答位檢查返回1表示應答正常
          {
           j=j>>1;
           j=j<<1;
	   j=j+1;  //設置讀標志

          for(i=0; i<(p); i++)
              {
              start();//重新啟動I2C總線
              wrbyt(j);//發送1個字節寫芯片地址和讀信息
             if (cack()==1)//應答位檢查返回1表示應答正常
              {
              d[i]=rdbyt();
              ack( );    //*發送應答位*/
              }
             }
            stop( );//停止I2C總線

         }
       }
   }


if(x==1)
  {
  if(n>65025)
    {
     c=0xa2;
     n-=57039;
     j=n/255;//業面地址
     a=n%255;//面內地址
    }
     else
        {
         j = n/255;//業面地址
         a = n%255;//面內地址
         c=0xa0;
        }

  start();//啟動I2C總線
  wrbyt(c);//發送1個字節,寫芯片地址
  if (cack()==1)//應答位檢查返回1表示應答正常
      {
       wrbyt(j);//發送1個字節,寫片內地址
       if (cack()==1)//應答位檢查返回1表示應答正常
          {
           wrbyt(a);//發送1個字節,寫片內地址
          if (cack()==1)//應答位檢查返回1表示應答正常
            {
             c=c>>1;
             c=c<<1;
	     c=c+1;  //設置讀標志

             for(i=0; i<(p); i++)
              {
              start();//重新啟動I2C總線
              wrbyt(c);//發送1個字節寫芯片地址和讀信息
              if (cack()==1)//應答位檢查返回1表示應答正常
               {
               d[i]=rdbyt();
               ack( );    //*發送應答位*/
               }
             }
            stop( );//停止I2C總線
	   }
          }
       }
   }
}

//---------------------------------------
//延時10MS,延時時間為yan10ms*W
void   yan10ms(uchar w)
{
   uchar data k;
   uint  data i;
   for(k=0;k<=w;k++)
   {
   for(i=0;i<=0x800;i++)
     {
     ;
     }
   }
}


//--------------------------------------------------------------//
void main (void)
{
 uchar data a1 = 0;
 uchar data a2 = 0;
 uchar data cc[24]={0};

while(1)
{
   for(a1=0; a1<24; a1++)
  {
  cc[a1]=a1*10+1;
  }

  ////24c256多字節讀寫 
  wr_byta_8x( &cc, 24, 0x10, 1);  
  rd_byta_8x( &cc, 24, 0x10, 1);  
  //單字節讀寫
  for(a1=0; a1<20; a1++)
  {
  wr_byta(10+a1,0x10+a1,1);
  yan10ms(10);
  }
  for(a1=0; a1<20; a1++)
  {
  a2=rd_byta(10+a1,1);
  yan10ms(10);
  }
  
  ////24c01多字節讀寫 
  wr_byta_8x( &cc, 8, 0x10, 0);  
  rd_byta_8x( &cc, 8, 0x10, 0);  
  //單字節讀寫
  for(a1=0; a1<20; a1++)
  {
  wr_byta(10+a1,0x10+a1,0);
  yan10ms(10);
  }
  for(a1=0; a1<20; a1++)
  {
  a2=rd_byta(10+a1,0);
  yan10ms(10);
  }
  
  
  
 }
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费毛片app| 紧缚捆绑精品一区二区| 国产亚洲一区二区三区四区| 欧美日韩国产片| 欧美制服丝袜第一页| 99久久婷婷国产综合精品电影 | 亚洲免费观看高清完整版在线观看熊| 久久精品网站免费观看| 久久女同精品一区二区| 国产亚洲精品bt天堂精选| 国产亚洲精品7777| 中文字幕一区二区三区在线播放 | av电影在线观看一区| 粉嫩av一区二区三区在线播放| 韩国成人福利片在线播放| 国产精品伊人色| 国产高清久久久久| k8久久久一区二区三区 | 亚洲一区视频在线观看视频| 一区二区三区中文在线| 亚洲福中文字幕伊人影院| 美女视频免费一区| 国产99久久久久| 一本到高清视频免费精品| 欧美日韩国产大片| 欧美本精品男人aⅴ天堂| 国产无人区一区二区三区| 成人欧美一区二区三区黑人麻豆| 亚洲永久精品国产| 韩国午夜理伦三级不卡影院| eeuss鲁片一区二区三区| 欧美色图免费看| 久久久九九九九| 亚洲一二三四久久| 国产乱子伦视频一区二区三区| 91免费版在线看| 欧美一卡2卡三卡4卡5免费| 国产日韩精品一区二区三区在线| 亚洲欧美一区二区三区国产精品| 日本欧美久久久久免费播放网| 国产乱子轮精品视频| 色综合久久中文综合久久牛| 久久嫩草精品久久久精品| 一区二区成人在线| 不卡影院免费观看| 日韩欧美区一区二| 亚洲自拍偷拍欧美| 国产传媒欧美日韩成人| 欧美日韩国产免费| 一区二区三区不卡视频在线观看 | 欧美日韩国产高清一区| 综合欧美一区二区三区| 国内精品免费在线观看| 在线播放日韩导航| 亚洲永久免费视频| 91原创在线视频| 中文字幕va一区二区三区| 理论片日本一区| 777午夜精品视频在线播放| 亚洲免费视频中文字幕| 成人av一区二区三区| 久久一区二区视频| 奇米四色…亚洲| 欧美精品少妇一区二区三区| 亚洲精品视频在线看| 成人免费毛片片v| 久久久久9999亚洲精品| 国产一区二区三区在线观看精品| 欧美一区在线视频| 日日夜夜免费精品| 欧美精品乱码久久久久久| 亚洲第一主播视频| 欧美日韩精品欧美日韩精品一综合| 国产精品美女久久久久aⅴ国产馆| 国产一区二区三区精品视频| 日韩一级高清毛片| 久久精品99久久久| 精品久久久久久亚洲综合网| 久久99热狠狠色一区二区| 日韩女优av电影在线观看| 久久精品国产亚洲5555| 欧美大片在线观看| 国产精品一区在线| 中文字幕第一区| 日韩免费高清av| 毛片一区二区三区| 久久影音资源网| 懂色av一区二区在线播放| 国产精品视频你懂的| av午夜一区麻豆| 亚洲国产精品精华液网站| 欧美日韩国产一级片| 免费精品视频在线| 久久久蜜桃精品| 国产成人在线网站| 亚洲欧美日韩在线| 欧美理论在线播放| 国内一区二区视频| 国产精品第一页第二页第三页| 色乱码一区二区三区88| 亚洲一区二区三区四区在线免费观看 | 亚洲精选在线视频| 777xxx欧美| 国产精品亚洲午夜一区二区三区| 国产精品久久久久久久久久久免费看| 不卡视频一二三四| 婷婷久久综合九色国产成人| 精品国产不卡一区二区三区| 不卡一区二区三区四区| 日韩激情一二三区| 国产精品无人区| 欧美日本一区二区三区四区| 精品亚洲免费视频| 亚洲精品久久久蜜桃| 日韩精品一区二区三区在线播放| 成人精品视频一区二区三区| 天天av天天翘天天综合网 | 美女在线视频一区| 亚洲视频一区在线观看| 日韩一级片网站| 91免费国产视频网站| 国产一区二区三区免费在线观看| 亚洲一区视频在线| 欧美高清一级片在线观看| 91麻豆精品国产| 91蜜桃传媒精品久久久一区二区| 麻豆国产欧美日韩综合精品二区| 丁香网亚洲国际| 国产精品卡一卡二卡三| 奇米色777欧美一区二区| 国产精品久久久久久久久搜平片| 欧美乱熟臀69xxxxxx| 91精品国产麻豆| 夜夜嗨av一区二区三区网页| 最近日韩中文字幕| 亚洲国产视频a| 日韩成人免费看| 国产资源精品在线观看| 成人免费观看视频| 日本福利一区二区| 91精品国产综合久久小美女| 亚洲精品一区二区三区香蕉| 久久久久国产精品免费免费搜索| 国产精品女上位| 午夜成人免费电影| 国产福利不卡视频| 在线观看av不卡| 精品少妇一区二区三区免费观看| 中文字幕不卡在线| 一区二区三区不卡视频 | 国产伦精品一区二区三区视频青涩 | 亚洲成av人片在线| 久久国产尿小便嘘嘘尿| 99精品国产热久久91蜜凸| 91精品国产综合久久国产大片| 国产嫩草影院久久久久| 国产精品123区| 欧美亚洲精品一区| 国产亚洲综合av| 日韩高清不卡一区| 91色婷婷久久久久合中文| 日韩精品一区二区三区蜜臀| 专区另类欧美日韩| 精品伊人久久久久7777人| 一本色道久久综合狠狠躁的推荐 | 欧美电影免费提供在线观看| 欧美国产精品劲爆| 免费在线一区观看| 在线看不卡av| 中文字幕国产精品一区二区| 麻豆免费精品视频| 欧美老女人第四色| 亚洲精品中文字幕乱码三区| 成人在线视频一区| 欧美tickling网站挠脚心| 亚洲国产精品久久久久秋霞影院| 国产91露脸合集magnet| 日韩精品一区二区在线观看| 亚洲一区视频在线| 一本色道综合亚洲| 中文字幕一区免费在线观看| 久久91精品久久久久久秒播| 在线观看视频91| 一区二区日韩电影| 99久久免费国产| 国产欧美日韩一区二区三区在线观看| 日韩电影免费在线| 欧美精品123区| 亚洲成人综合视频| 欧美丝袜丝交足nylons图片| 亚洲人成影院在线观看| av亚洲精华国产精华精| 国产精品传媒入口麻豆| 国产99久久久精品| 久久精品亚洲国产奇米99| 国产精品一二一区| 国产欧美日韩在线观看| 国产不卡视频一区二区三区| 久久人人爽人人爽| 成人美女在线视频|