电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
创作
电子发烧友网>电子资料下载>IC资料>IC中文资料>24c512/24c256的读写程序

24c512/24c256的读写程序

2008-08-13 | rar | 666 | 次下载 | 10积分

资料介绍


#include "msp430x13x.h"
     
void nop(void)
{
  _NOP();
  _NOP();
  _NOP();
}

void start(void)     
{
  SCLEN &= (~(SDA+SCL)); 
  _NOP();
  _NOP();
  _NOP(); 
  SDAEN |= SDA;   
  SCLEN |= SCL;      
  return;
}
void stop(void)
{
  SDAEN |= SDA;          
  SCLEN &= (~SCL);  
  SDAEN &= (~SDA);  
  return;
}


unsigned char ControlByte(int AddressByte)
{
  unsigned char temp;

  _BIC_SR(0X0001);  //CLEAR SR 'C'
  temp = (char)(AddressByte>>8);
  temp <<= 1 ;
  temp &= 0X0E;
  temp += Code;
  return temp;
}


int shout( unsigned char data ) 
{
 unsigned char mask,i,temp;
 unsigned char Value;

 Value = data;
 mask=0X80;

 for (i=0;i<=7;i++){

      temp = (Value & mask);       
      if( temp !=0 ){  
          SDAEN &=  (~SDA); 
          SCLEN &=  (~SCL); 
         if( !( SDAIN & SDA ) ){
            return 1;
          }
      }
      else {
        SDAEN |= SDA ;   
        SCLEN &= (~SCL); 
      }
   
    mask>>=1;

    SCLEN |= SCL;    
 }
  SDAEN &= (~SDA);
  SCLEN &= (~SCL);

  if ( !(SDAIN & SDA )){
     // return 1;
  }
 
  SCLEN |= SCL;
  return 0;
}

// 写 Number 个字节到 E2 中
int WriteBlock(int number,unsigned char *dataadr,unsigned char *e2adr)
{
  unsigned char *p1;
  int i;
  unsigned char temp;
  unsigned int aaa;
  //unsigned char *temp1;
 
  _DINT();   
  SDADAT &= (~(SCL+SDA)); 
      
  start();                     

  aaa = (int)(e2adr );
  temp = ControlByte(aaa);
  shout(temp);

  shout( (int)(e2adr));

  p1 = dataadr;

  for (i=1;i<=8;i++) {

     shout(*p1);
     p1++;
  }
  stop(); 
  _EINT(); 
 
//Write a block use the address and back..
 return 0;             //if error return 1  right return 0
}
// 写N * 8个字节
int WriteN8Byte(int Number)
{
  unsigned char *e2adr,*dataadr;
  unsigned int i,j;

//int WriteBlock(int number,unsigned char *dataadr,unsigned char *e2adr)
  dataadr = (char*)0x200;
  e2adr = (char*)0x00;

  for( i=1;i<=Number;i++){
 
    WriteBlock(8,dataadr,e2adr);
    dataadr += 8; 
    e2adr += 8;   
    for (j=0;j<=3333;j++);           
   
  }

  return 0;
}

//; Clock out an acknowledge bit (low).
//; SCL expected low on entry. Return with SCL, SDA low.
void Ack(void)
{
  SDAEN |= SDA;
  SCLEN &= ~SCL;
  SCLEN |= SCL;
 
}
//; Clock out a negative acknowledge bit (high).
//; SCL expected low on entry. Return with SCL low, SDA high.
void Nak(void)
{
  SDAEN &= ~SDA;                    //; NAK bit
  SCLEN &= ~SCL;                    //; raise clock
  SCLEN |= SCL;                     //; drop clock

}
//由E2 中 读8位 一个字节 数据
unsigned char shin(void)
{
  int i;
  unsigned char temp;
  unsigned char Mask;

  SDAEN &= ~SDA;                  // make SDA an input
  temp =0;

//读8位数据
  for( i=1;i<=8;i++) {
   
    SCLEN &= ~SCL;                //SCL = H
    Mask = 0;

    if (SDAIN &SDA)
      Mask = 1;
    else
      Mask =0;
//    Mask = SDAIN & SDA;
    Mask <<= (8 - i);
    temp ^= Mask;
    SCLEN |= SCL;   
  }

  return temp;
 }
// 24c256 512 页 64字节 14-15bit Word Address!!!
//**********************************************************************
//  读取N 个字节 到RAM
//  参数说明: number 读取的个数,dataadr,读到RAM 的地址?e2adr,E2地址
//**********************************************************************
int  ReadNByte(int number,unsigned char *dataadr,unsigned char *e2adr)
{
 int  i;             
 unsigned char *p; 
 unsigned char temp;             
 unsigned char temp1;
 
  _DINT();   
 SDADAT &= (~(SCL+SDA));
 
 p=dataadr;   

 start();   

  temp = ControlByte((int)(e2adr ));
  shout(temp);    
 
  shout((int)(e2adr ));        

  start();

  temp |= 0X01;          
  shout(temp);         

  temp1=0;
  for (i=1;i<=number;i++){              
    temp1 = shin();
    *p++ = temp1;

    Ack();
  }
 Nak();
 stop();
 _EINT();

 return 0;
}

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1TC358743XBG评估板参考手册
  2. 1.36 MB  |  330次下载  |  免费
  3. 2开关电源基础知识
  4. 5.73 MB  |  11次下载  |  免费
  5. 3嵌入式linux-聊天程序设计
  6. 0.60 MB  |  3次下载  |  免费
  7. 4DIY动手组装LED电子显示屏
  8. 0.98 MB  |  3次下载  |  免费
  9. 5基于FPGA的C8051F单片机开发板设计
  10. 0.70 MB  |  2次下载  |  免费
  11. 651单片机窗帘控制器仿真程序
  12. 1.93 MB  |  2次下载  |  免费
  13. 751单片机PM2.5检测系统程序
  14. 0.83 MB  |  2次下载  |  免费
  15. 8基于51单片机的RGB调色灯程序仿真
  16. 0.86 MB  |  2次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191186次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费