新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 铁电存储器FM24C16原理及其在多MCU系统中应用

铁电存储器FM24C16原理及其在多MCU系统中应用

作者: 时间:2016-12-02 来源:网络 收藏


3、应用接口及程序

FM24C16与单片机接口电路非常简单,下面以碳控仪系统中的应用为例给予说明,并给出部分子程序。应用接口图如图2所示,系统中采用2片AT89C55单片机,用其P2.0和P2.1口与SDA,SCL相连接,在SDA和SCL引脚接1.8kΩ的上拉电阻到+5V,工作电源也为+5V,WP引脚接电源地以保证可以任意写入数据。2片AT89C55用P1.0,P1.1作为通讯口,来确定谁操作FM24C16:片1操作前,检测P1.0口,如果为高,则置低P1.1口,向片2发出占用FM24C16信号,然后再检测P1.0口,还为高,则进入操作,若为低,则退出操作并把P1.1口置高;如果P1.0口为低,则说明片2占用FM24C16,片1就放弃操作,等待下次查询和操作。片2的操作相对应于片1。这样,FM24C16不仅作为了公共数据区,而且也成为了2片MCU的一个模拟的通讯口,而且理论上来说,1片FM24C16上可以挂很多MCU,而可以省去不必要的MCU间的通讯。这就需要FM24C16承受快速、频繁读写,这是其他E2PROM望尘莫及的。

本文引用地址:https://www.eepw.com.cn/article/201612/324825.htm

下面给出FM24C16的页面写和任意字节读汇编子程序。程序经过应用验证,效果良好(为保证稳定性,可以在相应地方加入空语句以延时)。

页面写子程序:

PAGE-WR: ACALL START_BIT
MOV A,#10100000B
MOV R7,#4
ACALL SHFTO
;SHFTO为送位子程序,以上3行送
1010到FM24C16
MOV A,#20H
MOV R7,#3
ACALL SHFTO
;以上3行确定写FM24C16的00l页
MOV A,#00H
MOV R7,#1
ACALL SHFTO ;以上3行送写控制位0
ACALL SlAVE_ACK
;SLAVE-ACK为从应答子程序,在此检测
从应答位
MOV A,#00H
MOV R7,#8
ACALL SHFTO
;以上3行确定写入数据首地址为00H
ACALLSLAVE-ACK ;检测从应答位
MOV R0,#00H ;R0中为被写人数据
所在单元首地址
MOV R4,#7FH ;R4中为写入字节数
(现为256B)
NEXT-DATA:MOV A,@R0 ;调入第1个写入数据
INC R0 ;R0指向第2个数据所在单元地址
MOV R7,#8
ACALL SHFTO;写入数据
ACALL SLAVE-ACK ;检测从应答位
DJNZ R4,NEXT-DATA
;循环写入下一个字节数据
ACALL STOP-BIT
;STOP-BIT为停止位,结束写操作(此处没有写延时等待)
RET ;返回,程序结束

读任意地址子程序:
SELECT-RD:ACALL START-BIT
ACALL START-BIT
MOV A,#10100000B
MOV R7,#4
ACALL SHFTO
MOV A,#20H
MOV R7,#3
ACALL SHFTO
MOV A,#0FOH
MOV R7,#1
ACALL SHFTO
ACALL SlAVE-ACK
MOV R5,#00H
MOV R7,#8
ACALL SHFTO
ACALL SlAVE-ACK
;以上为伪写,确定读FM24C16的001
00H单元数据
ACALL START-BIT
MOV A,#10100000B
MOV R7,#4
ACALL SHFTO
MOV A,#20H
MOV R7,#3
ACALL SHFTO
MOV A,#0FOH
MOV R7,#1
ACALL SHFTO ;上面3行送读控制位1
ACALL SlAVE-ACK
MOV R5,#00H ;清R5,以存储读出数据
MOV R7,#8 ;R7作读出位记数器
CLOCK8: SETB SCL
MOV C,SDA
CLR SCL
MOV A,R5
RLC A
MOV R5,A
;以上6行读出FM24C16送来的1位
DJNZ R7,CLOCK8 ;循环读出1B数据
ACALL NO_ACK
;NO_ACK为无需应答位子程序
ACLL STOP_BIT ;停止
RET ;程序结束

上一页 1 2 下一页

评论


技术专区

关闭