原创 EEPROM读写程序-1

2010-12-5 09:18 1342 0 分类: MCU/ 嵌入式
void EEPROM_ByteWrite(unsigned char addr, unsigned char dat)
{
   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;                     // 置总线操读/写操作为写操作 (WRITE=0x00,写操作命令字)
   SMB_SENDWORDADDR = 1;               // 在从器件地址后送字地址
   SMB_RANDOMREAD = 0;                 // 置为非随机读操作。单个EEPROM写操作为单字节随机写。

// 输出数据明细
   SMB_WORD_ADDR = addr;                   // 设置待写数据存储地址

   SMB_SINGLEBYTE_OUT = dat;           // 待写数据(保存在全局变量中)

   // 待写数据变量指针
   pSMB_DATA_OUT = &SMB_SINGLEBYTE_OUT;

   SMB_DATA_LEN = 1;                   // 指定中断服务程序发送的数据长度

   // 初始化SMBus传送
   STA = 1;            // 置SMBus起始标志

   SFRPAGE = SFRPAGE_SAVE;            
}

 /***********************************************************************************
* 函数名称:EEPROM_WriteArray;
*
* 函数功能描述:写长度为len字节数据到EEPROM的数据存储器内。
*             
* 输入参数:1) unsigned char dest_addr - 待写数据目的存储器开始地址
            2) unsigned char* src_addr - 待写数据数组指针。
            3) unsigned char len - 待写数据长度
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/

void EEPROM_WriteArray(unsigned char dest_addr, unsigned char* src_addr,
                       unsigned char len)
{
   unsigned char i;
   unsigned char* pData = (unsigned char*) src_addr;

   for( i = 0; i < len; i++ ){
      EEPROM_ByteWrite(dest_addr++, *pData++);
   }

}
PARTNER CONTENT

文章评论0条评论)

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