电子发烧友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. 1PCB板EMC/EMI的设计技巧
  2. 0.20 MB   |  3次下载  |  免费
  3. 22024PMIC市场洞察
  4. 2.23 MB   |  2次下载  |  免费
  5. 3UC3842工作原理及开关电源电路
  6. 0.08 MB   |  1次下载  |  免费
  7. 4JFG-AS02微量程扭矩传感器数据表
  8. 0.32 MB   |  1次下载  |  免费
  9. 5JFG-3D02三维力传感器数据表
  10. 0.58 MB   |  1次下载  |  免费
  11. 6LTH7充电电路和锂电池升压5V输出电路原理图
  12. 0.04 MB   |  1次下载  |  免费
  13. 7TMR技术在电流传感器中的应用
  14. 616.47 KB  |  1次下载  |  免费
  15. 8LM5157-Q1反激式转换器评估模块
  16. 3.18MB   |  次下载  |  免费

本月

  1. 1XL4015+LM358恒压恒流电路图
  2. 0.38 MB   |  148次下载  |  1 积分
  3. 2新概念模拟电路第四册信号处理电路电子书免费下载
  4. 10.69 MB  |  65次下载  |  免费
  5. 3PCB布线和布局电路设计规则
  6. 0.40 MB   |  30次下载  |  免费
  7. 4智能门锁原理图
  8. 0.39 MB   |  13次下载  |  免费
  9. 5GB/T4706.1-2024 家用和类似用途电器的安全第1部分:通用要求
  10. 7.43 MB   |  11次下载  |  1 积分
  11. 6JESD79-5C_v1.30-2024 内存技术规范
  12. 2.71 MB   |  10次下载  |  免费
  13. 7elmo直线电机驱动调试细则
  14. 4.76 MB   |  9次下载  |  6 积分
  15. 8PC1013三合一快充数据线充电芯片介绍
  16. 1.03 MB   |  7次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935115次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420061次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233084次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191367次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183330次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81581次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73806次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65985次下载  |  10 积分