合泰模拟eeprom程序,emulated_eeprom,使用ht66f0021、31、41、ht66f0181等
#ifndef _EEPROM_H_
#define _EEPROM_H_
void fun_eeprom_wordwrite(unsigned char eep_addr,unsigned char eep_data);
unsigned int fun_eeprom_wordread(unsigned char eep_addr);
#endif#include "mcu.h"
//static volatile flag_type __attribute__ ((at(0x1b))) sfr_ecr;
volatile unsigned char gv8u_eeprom_data_backup; //只保存低8-bit
//================================================================================//
void fun_eeprom_wordwrite(unsigned char eep_addr,unsigned char eep_data)
{
unsigned char lv8u_ear_backup,i;
if(_hircen == 0)
{
return;
}
if(eep_addr>0x1f)
{
return;
}
lv8u_ear_backup = eep_addr;
lv8u_ear_backup = lv8u_ear_backup&0b00010000;
//
for(i=0;i<16;i++)
{
_ear = lv8u_ear_backup;
if(_emi == 1)
{
_emi = 0;
_erden = 1;
_erd = 1;
_emi = 1;
}
else
{
_erden = 1;
_erd = 1;
}
while(_erd);
_erden = 0;
gv8u_eeprom_data_backup=_edl;
lv8u_ear_backup++;
}
lv8u_ear_backup = eep_addr;
lv8u_ear_backup = lv8u_ear_backup&0b00010000;
_ear = lv8u_ear_backup;
if(_emi == 1)
{
_emi = 0;
_eeren = 1;
_eer = 1;
_emi = 1;
}
else
{
_eeren = 1;
_eer = 1;
}
while(_eer);
_eeren = 0;
lv8u_ear_backup = eep_addr;
lv8u_ear_backup = lv8u_ear_backup&0b00001111;
gv8u_eeprom_data_backup = eep_data;
lv8u_ear_backup = eep_addr;
lv8u_ear_backup = lv8u_ear_backup&0b00010000;
for(i=0;i<16;i++)
{
_ear = lv8u_ear_backup;
_edl = gv8u_eeprom_data_backup;
_edh = 0;
if(_emi == 1)
{
_emi = 0;
_ewren = 1;
_ewr = 1;
_emi = 1;
}
else
{
_ewren = 1;
_ewr = 1;
}
while(_ewr);
_ewren = 0;
GCC_CLRWDT();
lv8u_ear_backup++;
}
}
//================================================================================//
unsigned char fun_eeprom_wordread(unsigned char eep_addr)
{
unsigned int lv8u_eepdata;
_ear = eep_addr;
if(_emi == 1)
{
_emi = 0;
_erden = 1;
_erd = 1;
_emi = 1;
}
else
{
_erden = 1;
_erd = 1;
}
while(_erd);
lv8u_eepdata = _edl;
return lv8u_eepdata;
}
学习了感谢:D:D:D:D:D 感谢分享,学习了
页:
[1]