原创 EEPROM读写程序-2

2010-12-5 09:19 1317 4 4 分类: MCU/ 嵌入式
unsigned char EEPROM_ByteRead(unsigned char addr)
{
   unsigned char retval;               // 返回值临时变量

   char SFRPAGE_SAVE = SFRPAGE;       

   SFRPAGE = SMB0_PAGE;

   while (SMB_BUSY);                   // 等待SMBus总线空闲
   SMB_BUSY = 1;                       // 获取SMBus总线后,设置为总线忙

   // 设置SMBus ISR中断服务程序参数
   SMB_TARGET = EEPROM_ADDR;               // 设置发送目标从地址为EEPROM器件地址
   SMB_RW = EEPROM_WRITE;                     // 随机读首先发出启始条件并接着发出EEPROM地址+W(写操作用于设置EEPROM的器件地址)
                                       // 在收到从器件的ACK后,主器件发出待读存储器地址。
                                       // 在收到一个ACK后,主器件发出重复启始条件和从器件地址+R。
   SMB_SENDWORDADDR = 1;               // Send Word Address after Slave Address
   SMB_RANDOMREAD = 1;                 // 置读为随机读(单个EEPROM读为单字节随机读)
   SMB_ACKPOLL = 1;                    // 使能Acknowledge查询


   // 输入数据明细
   WORD_ADDR = addr;                   // 设置待读数据存储地址(EEPROM)

   pSMB_DATA_IN = &retval;             // 输入数据指针,指向返回变量

   SMB_DATA_LEN = 1;                   // 设置待读数据长度

   // 初始化SMBus发送
   STA = 1;                                // 置SMBus起始标志
   while(SMB_BUSY);                    // 等待直到数据被读。

   SFRPAGE = SFRPAGE_SAVE;            

   return retval;

}
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /1 下一条