AT93C46/56/55串行EEPROM及单片机程序
2 指令及时序
AT93C46/56/66的指令如表1所列,各指令的具体含义如下:
(1)擦/写允许指令(EWEN)
由于在上电复位后?AT93C46/56/66首先将处于擦/写不允许状态。故该指令必须在所有编程模式前执行,一旦该指令执行后,只要外部没有断电就可以对芯片进行编程。
(2)地址擦指令(ERASE)
该指令用于强迫指定地址中所有数据位都为“1”。一旦信息在DI端上被译码,就需使CS信号保持至少250ns的低电平,然后将CS置为高电平,这时,DO端就会指示“忙”标志。DO为“0”,表示编程正在进行;DO为“1”,表示该指定地址的寄存器单元已擦完,可以执行下一条指令。
(3)地址写指令(WRITE)
写指令时,先写地址,然后将16位的?或8位?数据写入到指定地址中。当DI端输出最后一个数据位后,在CLK时钟的下一个上升沿以前,CS必须为低,且需至少保持250ns,然后将CS置为高电平。需要说明的是:写周期时,每写一个字节需耗时4ms。
(4)地址读指令(READ)
读指令用于从指定的单元中把数据从高位到低位输出至DO端,但逻辑“0”位先于数据位输出。读指令在CLK的上升沿触发,且需经过一段时间方可稳定。为防止出错,建议在读指令结束后,再输出2~3个CLK脉冲。
(5)芯片擦指令(ERAL)
该指令可将整个存贮器阵列置为1,其它功能与地址擦指令相同。
(6)芯片写指令?WRAL?
该指令可将命令中指定的数据写入整个存贮器阵列,其它功能与地址写指令相同。该指令周期所花费时间的最大值为30ms。
(7)擦/写禁止指令(EWDS)
使用该指令可对写入的数据进行保护,操作步骤与擦/写允许指令相同。
3 AT93C56的应用
3.1 AT93C56与80C196KB的连接
串行EEPROM芯片AT93C56同80C196单片机接口的硬件电路连接方法如图2所示。图中,由于MCS-96系列16位单片机的P1口为准双向口,因此,为了防止数据错位,在向其P1口写数据时,必须先将P1口置“1”。
3.2 软件编程
该读/写程序采用PL/M语言编写,由于PL/M语言介于高级语言与汇编语言之间,故其对数据、地址位的处理比较繁琐。其中ADDR为指定的地址单元,DATA为写入的数据,在写数据、地址时均从高位开始。本程序已在仿真器上调试通过。且已被应用于电量测试仪中(如接触电阻测试仪)。
DECLARE SETCS LITERALLY ‘CALL BITSET?. IO-PORT2,0?′;
DECLARE CLRCS LITERALLY ‘CALL BITCLR?. IOPORT2,0?′;
DECLARE SETCLK LITERALLY ‘CALL BITSET?. IOPORT2,5?′;
DECLARE CLRCLK LITERALLY ‘CALL BITCLR?. IOPORT2,5?′;
DECLARE SETDI LITERALLY ‘CALL BITSET?. IO-PO
《AT93C46/56/55串行EEPROM及单片机程序(第2页)》