编辑: 旋风 | 2013-04-29 |
由于映射方式 与程序存储器和数据存储器不同,因此不能像其它类型的存储器一样寻址.使用 Bank
0 中 的一个地址和数据寄存器以及 Bank
1 中的一个控制寄存器,可以实现 EEPROM 的字节读 写操作.本文以 HT67F50 为母体,说明 EEPROM Data Memory 的使用方法. 工作原理 HT67Fx0 系列有三个寄存器控制内部 EEPROM 数据存储器的操作.地址寄存器 EEA、数 据寄存器 EED 及控制寄存器 EEC.其中 EEA 与EED 位于 BANK0 中,它们能像其它特殊 功能寄存器一样直接被访问.而EEC 位于 BANK1 中,不能被直接访问,仅能通过 MP1 和IAR1 进行间接读取或写入.由于 EEC 控制寄存器位于 Bank
1 中的[40H],在EEC 寄存器 上的任何操作被执行前,MP1 必须先设为[40H],BP 被设为[01H].以下为 EEPROM 读取 操作或写入操作的步骤: ? 设定所需要读取/写入数据的地址值 (EEA 寄存器的值). ? 设定所需要写入数据的值 (EED 寄存器的值). ? 设定 BP.0 位,选中数据存储区 BANK1. ? 设定 MP1 为[40H],指针指向 EEPROM 的控制寄存器 EEC. ? 使能读取/写入模式 (设定 RDEN/WREN 位). ? 开始读取/写入周期 (设定 RD/WR 位). ? 等待读取/写入周期结束. ? 读取/写入周期结束后,系统会自动清 RD 或WR 为
0 ,如果是写入周期结束,这时其 中断请求标志位 DEF 会设定为
1 (HT67F50 目前读取操作没有中断).数据在其它读 取或写入操作执行前将一直保留在 EED 寄存器中. 应用程序可以通过查询 RD 或WR 位 以确定数据是否有效地被读取或写入. Rev. 1.10
1 2012-1-31 HT67Fx0 Data EEPROM 的使用方法与注意事项 程序说明 以下做了两个范例以详细说明 EEPROM 的相关读取/写入操作, 其中范例
1 是以查寻相关读 取/写入标志位的方式完成对 EEPROM 的读取/写入,主要说明如何设定地址寄存器 EEA、 数据寄存器 EED 和控制寄存器 EEC 来实现 EEPROM 的读取/写入;
范例
2 主要说明如何设 定EEPROM 相关中断寄存器来实现写入数据周期结束后进入中断服务程序,以中断的方式 完成对 EEPROM 的写入. 范例:以查寻标志位的方式进行读取/写入EEPROM ;
程序名:EEPROM 读取/写入 (eeprom_rw.asm) ;
目的:将数据写入 EEPROM 一个字节后再读取出来相比较 ;
EEPROM 中断:Disable ;
Option:WDT disable ;
程序清单: INCLUDE HT67F50.INC DATA .SECTION '
DATA'
EEPROM_ADRES DB ? ;
user defined address EEPROM_DATA DB ? ;
user defined data CODE .SECTION '
CODE'
ORG 00H JMP MAIN ORG 04H ;
External Interrupt
0 entry address RETI ORG 08H ;
External Interrupt
1 entry address RETI ORG 0CH ;
Comparator
0 Interrupt entry address RETI ORG 010H ;
Comparator
1 Interrupt entry address RETI ORG 014H ;
Multi-function Interrupt
0 entry address RETI ORG 018H ;
Multi-function Interrupt
1 entry address RETI ORG 01CH ;
A/D Converter Interrupt entry address RETI ORG 020H ;
Multi-function Interrupt
2 entry address RETI ORG 024H ;
Time base
0 Interrupt entry address RETI ORG 028H ;
Time base
1 Interrupt entry address RETI ORG 02CH ;
Multi-function Interrupt
3 entry address RETI ORG 30H MAIN: CLR PAC ;