新闻中心

EEPW首页>嵌入式系统>设计应用> 串行E2PROMAT 24C512在单片机中应用

串行E2PROMAT 24C512在单片机中应用

作者: 时间:2012-03-21 来源:网络 收藏


MAIN: MOV SP #60H;设堆栈
Write: MOV SlvAdr, #A0H;选择1个器件地址
MOV ByteCnt, #08H;设写入数据长度为8字节
MOV SubAdr1, #00H;设写入单元首址为0020H
MOV SubAdr2, #20H;
LCALL WriteData ; 写数据
……
Read: MOV Slvadr, #A0H;选择1个器件地址
MOV Bytecnt, #08H;设读出数据长度为8字节
MOV SubAdr1, #00H;设读出单元
MOV SubAdr2, #20H;首址为0020H
LCALL ReadData; 读数据
……
WriteData:LCALL Start; I2C总线起始条件
MOV A,SlvAdr; 取器件地址
LCALL writeByte; 发送器件地址
MOV A,SubAdr1
LCALL writeByte;发送高8位地址
MOV A,SubAdr2
LCALLwriteByte;发送低8位地址
MOVR0,#WriteDat;取写入数据的首地址
Next:MOVA,@R0
LCALLwriteByte;写入1字节数据
LNCR0;取下1个数据
DJNZByteCnt,Next;重复操作直到写完全部数据
LCALLStop;发送I2C总线停止条件
LCALLDL10ms;延时10ms等待E2PROM内部数据
;写完
RET
;读数据子程序
ReadData:LCALLStart
MOVA,SlvAdr
LCALLWriteByte
MOVA,Subadr1
LCALLWriteByte
MOVA,Subadr2
LCALLWriteByte
LCALLStart;重复发送I2C总线起始条件
MOVA,Slvadr
SETBACC.0;R/W位置1
LCALLWriteByte
CLRACK;请读非应答标志
MOVR0,#RdadData;读缓冲区首址
DJNZByteCnt,Next1
SJMPLast
Next1:LCALLReadByte;接收1个字节数据
MOV@R0,A;接收数据送缓冲区
INCR0
DJNZByteCnt,Next1;重复接收
Last:SETBACK;接收最后1个字节数据
ACALLReadByte
MOV#R0,A
LCALLStop
RET

上面给出读写操作主程序、页面写入子程序及其多字节读子程序。受篇幅限制,部分子程序没有给出,读者可根据AT的操作时序自行编制或参阅相关文献。

5结束语

由AT与AT89C2051等非总线构成的数据采集存储系统具有体积小、成本低、可靠性高的特点,因而具有很高的价值。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭