HT66F0181 模拟 EEPROM的使用

一、模拟 EEPROM 数据存储器结构

       HT66F0181的模拟 EEPROM 数据存储器容量为 32×15 位。该模拟 EEPROM 以页为单位进行擦操作,以 4 字为单位进行写操作,以 1 字为单位进行读操作。页的大小为 16 个字。注意,在执行写操作之前必须先执行擦操作。

二、EAR寄存器

1、擦除操作:只有EAR[4]有效,0代表0页/1代表1页;

2、写操作:只有EAR[4:2]有效,代表写单位0~7,每个写单位含有4个连续地址;

3、读操作:EAR[4:0]有效,代表地址0~31。

三、擦除模拟 EEPROM 中的数据

1、注意点

(1)擦除操作每次擦除一页,每页包含16个字;

(2)EEREN 先置为高,接着EER 位需立即置高以开始擦操作,这两条指令必须在两个指令周期内连续执行,且顺序不能颠倒;

(3)总中断位EMI 在擦周期开始前应当被清零,在一个有效的擦启动步骤完成之后再将其使能。

2、例程

void eraseEEPROM(unsigned char page) // page 0或1
{
	bit flag_emi;
	
	flag_emi = 0;
	if(_emi == 1)
	{
		flag_emi = 1;
		_emi = 0;
	}
	
	_ewrts1 = 0; _ewrts0 = 0; // 00:2ms 模拟 EEPROM 擦 / 写时间选择
	_ear4 = page; // 擦除页:0
	_eeren = 1;
	_eer = 1;
	
	while(_eer); // 0完成擦除,跳出循环
	_eeren = 0;
	
	if(flag_emi == 1) _emi = 1;
}

四、写数据到模拟 EEPROM

1、注意点

(1)写入操作每次写入 4 字,每个字包含15bit;

(2)EWREN 先置为高,接着 EWR 位需立即置高,这两条指令必须在两个指令周期内连续执行,且顺序不能颠倒;

(3)总中断位 EMI 在写周期开始前应当被清零,在一个有效的写启动步骤完成之后再将其使能;

(4)在执行写操作之前必须先执行擦操作!

2、单字节写例程

void writeEEPROM(unsigned char data) // 1次写4个字
{
	bit flag_emi;
	
	flag_emi = 0;
	if(_emi == 1)
	{
		flag_emi = 1;
		_emi = 0;
	}
	
	// 1次写4个字
	_ed0l = data; // _ed0l max:255 _ed0h max:127
	
	/*
	// _edxl max:255 _edxh max:127
	_ed0l = data0_l; _ed0h = data0_h;
	_ed1l = data1_l; _ed1h = data1_h;
	_ed2l = data2_l; _ed1h = data2_h;
	_ed3l = data3_l; _ed1h = data3_h;
	*/

	_ear4 = 0; _ear3 = 0; _ear2 = 0; // 这边直接固定:写单位0,用户可根据实际使用做修改
	
	_ewren = 1;
	_ewr = 1;
	
	while(_ewr); // 0完成写操作,跳出循环
	_ewren = 0;
	
	if(flag_emi == 1) _emi = 1;
}

五、从模拟 EEPROM 中读取数据

1、注意点

(1)读操作每次读1个字,每个字包含15bit;

(2)ERDEN 先置为高,接着ERD 位需立即置高,这两条指令必须在两个指令周期内连续执行,且顺序不能颠倒;

(3)总中断位 EMI 在写周期开始前应当被清零,在一个有效的写启动步骤完成之后再将其使能。

2、单字节读例程

unsigned char readEEPROM(unsigned char address)
{
	u8 data;
	
	bit flag_emi;
	
	flag_emi = 0;
	if(_emi == 1)
	{
		flag_emi = 1;
		_emi = 0;
	}
	
	_ear = address;
	_erden = 1;
	_erd = 1;
	
	while(_erd); // 0完成读取,跳出循环
	_erden = 0;
	
	if(flag_emi == 1) _emi = 1;
	
	data = _ed0l;
	return data;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值