发 帖  
原厂入驻New

基于AVR单片机建立的AT24C02操作库程序

42 AVR AVR单片机 at24c02
分享
2020-11-16 07:14:01   评论 分享淘帖 邀请回答
1个回答
  实验内容:
  写入一些测试数据进EEPROM,再读出,使用PA口的LED做指示,观测是否与写入一致。
  ----------------------------------------------------------------------
  硬件连接:
  将PA口的LED指示灯开关切换到“ON”状态。
  将AT24CXX的硬件地址A0、A1、A2使用短路帽短接至“-”。
  AT24CXX:VCC、GND、SDA、SCL
  | | | |
  SMK1632:VCC、GND、SDA、SCL
  ----------------------------------------------------------------------
  注意事项:
  (1)若有加载库函数,请将光盘根目录下的“库函数”下的“ICC_H”文件夹拷到D盘
  (2)请详细阅读“使用必读”及相关资料。
  ----------------------------------------------------------------------10101010101010101010101010101010101010101010101010101010101010101010*/
  #include
  #define RD_DADR 0xA1 //read device-address
  #define WR_DADR 0xA0 //write device-address
  #include “D:\ICC_H\AT24CXX.H”
  #define DISP_DDR DDRA
  #define DISP_PORT PORTA
  /*--------------------------------------------------------------------
  函数名称:AT24C02
  函数功能:
  注意事项:
  提示说明:
  输 入:
  返 回:
  --------------------------------------------------------------------*/
  void errDisp()
  {
  DISP_PORT = 0X55;
  delay50ms(4);
  DISP_PORT = 0X00;
  delay50ms(4);
  DISP_PORT = 0XAA;
  delay50ms(4);
  DISP_PORT = 0X00;
  delay50ms(4);
  }
  /*--------------------------------------------------------------------
  函数全称:AT24C02
  函数功能:
  注意事项:
  提示说明:假设系统时钟为16M,则TWI波特率=CLK/(16+2*(TWBR)*4)=400K
  输 入:
  返 回:
  --------------------------------------------------------------------*/
  void twi_init() //TWI(I2C)初始化
  {
  TWBR = 0X03; //设置TWI波特率
  TWSR &= 0XFC; //设置TWI预分频 为 1
  }
  /*--------------------------------------------------------------------
  函数名称:AT24C02
  函数功能:
  注意事项:
  提示说明:
  输 入:
  返 回:
  --------------------------------------------------------------------*/
  void main(void)
  {
  uint8 adr,WrDat,t;
  uint8 *pRdDat=&t; //随便给“*pRdDat”一个具体地址,以免内存发生错误
  DISP_DDR = 0XFF;
  twi_init();
  adr=0x20;
  WrDat=0x33;
  if( AT24CXX_Write(adr,WrDat)!=AT24CXX_ERR ) //AT24CXX写成功?
  {
  delay50ms(1); //等待EERPOM写完
  if( AT24CXX_Read(adr,pRdDat)!=AT24CXX_ERR ) //AT24CXX读成功?
  DISP_PORT=*pRdDat;
  else
  errDisp();
  }
  else
  errDisp();
  while(1);
  }
2020-11-16 10:25:10 评论

举报

只有小组成员才能发言,加入小组>>

327个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表