第1个回答 2014-08-16
用AT89S51写AT24C01,AT24CO1的地址是怎样确定的,下面程序为什么它发送完了读取写控制字之后不用发写在AT24CO1的首地址吗?
LCALLSTA;发送起始条件
MOVA,,#0A0H读取写控制字
LCALLWRB;发送一个字节
LCALLCACK;检查应答位
JBF0,WRBYTE1;无应答,重发
MOVR0,#DTSV;欲发送数据首址
MOVR5,KEYNUM;R5保存欲发送数据的字节数
WRDA:MOVA,@R0;读一个字节数据
LCALLWRB;发送写控制字节
LCALLCACK;检查应答位
JBF0,WRBYTE1;无应答,重发
DECR0
DJNZR5,WRDA;未发送完N个字节继续
LCALLSTOP;数据发送完毕,停止
POPPSW;恢复现场
RET