fm24c16c语言程序,铁电存储器FM24C16的页面写和任意字节读汇编程序

下面给出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 ;程序结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值