僫莋劇心墙 4星
共回答了468个问题采纳率:99.6% 评论
下面给出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,#
21小时前
猜你喜欢的问题
5个月前1个回答
5个月前1个回答
5个月前1个回答
5个月前2个回答
5个月前1个回答
5个月前2个回答
热门问题推荐
1个月前1个回答
1个月前1个回答
3个月前3个回答
3个月前2个回答
4个月前1个回答
1个月前1个回答
1个月前1个回答
4个月前4个回答
2个月前3个回答