[家电应用] SH79F166A 类EEPROM操作程序,测试通过,可存储读取数组

[复制链接]
5370|20
 楼主| liguohong327 发表于 2015-8-24 16:42 | 显示全部楼层 |阅读模式
搞了三天,终于调出来了,特此留贴, 希望能给像我一样的新手带来帮助


unsigned char Ssp_Flag;
//**********************************************************
//向EEPROM的指定地址单元写入一个字节模块
//字节编程
//入口参数:addr = 待写入字节地址, byte= 须编程字节的数据
//**********************************************************
void Byte_Write(unsigned int addr,unsigned char byte)
  {  Ssp_Flag=0x5a;
        EA=0;                        // disable Interrupts during write
        FLASHCON=1;
        XPAGE = (addr>>8)&0x07;         //选择类EEPROM扇区
        IB_OFFSET = addr&0xff;    //被编程的存储单元低8位地址
        IB_DATA = byte;
        if(Ssp_Flag!=0x5A)
        {
          IB_CON2=0;
          goto Write_Err;
        }
        IB_CON1 = 0x6E;
        IB_CON2 = 0x05;
        IB_CON3 = 0x0A;
        IB_CON4 = 0x09;
        IB_CON5 = 0x06;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
Write_Err:
        Ssp_Flag=0;
        FLASHCON=0;
        XPAGE=0;
        EA = CY;
  }

//*********************************************************
// 向EEPROM中写入若干待存数据子程序
// 入口参数:writeAddr:写入后数据的存放地址
//            pBuffer: 待写数据的临时存放地址(在RAM中开辟)
//            NumToWrite:待写入数据的个数:
//*********************************************************
   void Flash_Write (unsigned int WriteAddr, unsigned char *pBuffer, unsigned char NumToWrite)
{
   unsigned char t;
for(t=0;t<NumToWrite;t++)
{
  Byte_Write(WriteAddr+t,*pBuffer++);
}
}
//**********************************************************
// 檫除指定的EEPROM页(256字节/每页)子程序
// 擦除扇区, 入口:addr = 扇区地址
//**********************************************************
void Flash_Erase(unsigned int addr)
{
EA=0;
XPAGE = (addr>>8)&0x07;      
FLASHCON=1;
if(Ssp_Flag!=0xA5)
  {
   IB_CON2=0;
   goto Erase_Err;
  }
IB_CON1 = 0xE6;
IB_CON2 = 0x05;
IB_CON3 = 0x0A;
IB_CON4 = 0x09;
IB_CON5 = 0x06;
_nop_();
_nop_();
_nop_();
Erase_Err:
Ssp_Flag=0;
FLASHCON=0;
XPAGE=0;
EA = 1;
}

//***********************************************************
///读EEPROM的指定单元模块
// 入口参数:addr:待读取数据的地址
// 返回值类型:UCHAR
//***********************************************************
unsigned char Byte_Read(unsigned int addr)
{
        unsigned int TEMPB;
      
        FLASHCON=1;
        //XPAGE = 0;
        TEMPB=*(unsigned char code *)(addr);
        FLASHCON=0;
        return(TEMPB);  // return data
}
//*********************************************************
// 从EEPROM中读出若干数据子程序
// 入口参数: ReadAddr:读出后数据的临时存放地址(在RAM中开辟)
//            pBuffer: 待读取数据的首地址
//            NumToRead:待读取数据的个数
//返回值类型:字节
//*********************************************************
void Flash_Read (unsigned int ReadAddr,unsigned char *pBuffer,unsigned int NumToRead)
{
while(NumToRead)
{
  *pBuffer++=Byte_Read(ReadAddr++);
  NumToRead--;
}
}
 楼主| liguohong327 发表于 2015-8-24 16:49 | 显示全部楼层


验证数组

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
渔村 发表于 2015-8-25 14:08 | 显示全部楼层
正在研究中
渔村 发表于 2015-8-25 16:53 | 显示全部楼层
楼主是否可以再指导下,感觉很迷茫
qhtflsw 发表于 2016-4-24 11:54 | 显示全部楼层
本帖最后由 qhtflsw 于 2016-4-24 16:40 编辑

查看EEPROM的窗口在哪里调出来的。
喔,在烧写那里。明白了
黑夜之狼 发表于 2016-4-25 08:51 | 显示全部楼层
少用goto为妙
cnb12345 发表于 2016-5-5 16:01 | 显示全部楼层
hanbing0898 发表于 2021-12-14 11:18 | 显示全部楼层
cemaj 发表于 2022-8-14 17:40 | 显示全部楼层
相当全的资料,很适合初学者                                 
pentruman 发表于 2022-8-14 17:55 | 显示全部楼层
资料还是相当全面的                                 
burgessmaggie 发表于 2022-8-14 18:14 | 显示全部楼层
谢谢lz分享,很有用                                 
febgxu 发表于 2022-8-14 18:23 | 显示全部楼层
资料够全的,多谢分享                                 
chenci2013 发表于 2022-8-14 18:33 | 显示全部楼层
有时间需要好好看看   不错                                 
lzmm 发表于 2022-8-14 18:42 | 显示全部楼层
分享的资料很高端呢。                                    
htmlme 发表于 2022-8-14 18:50 | 显示全部楼层
资料的确是很全面                                 
bartonalfred 发表于 2022-8-14 18:59 | 显示全部楼层
以后多交流交流                  
timfordlare 发表于 2022-8-14 19:08 | 显示全部楼层
谢谢lz分享,很有用                                 
selongli 发表于 2022-8-14 19:18 | 显示全部楼层
分享的资料很高端呢。                                    
eefas 发表于 2022-8-14 19:27 | 显示全部楼层
资料的确是很全面                                 
232321122 发表于 2022-8-14 19:35 | 显示全部楼层
分享的资料很高端呢。                                    
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

38

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部