admin 发表于 2022-1-24 10:37:40

合泰模拟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;
}












5220pan 发表于 2023-10-23 09:02:39

学习了感谢:D:D:D:D:D

听雨 发表于 2024-3-27 21:15:57

感谢分享,学习了
页: [1]
查看完整版本: 合泰模拟eeprom程序,emulated_eeprom,使用ht66f0021、31、41、ht66f0181等