打印
[ZLG-MCU]

lpc900 I2C

[复制链接]
1070|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
weiren|  楼主 | 2007-11-12 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在是在弄I2C,现在有一点不懂,程序是I2C软件包里的:;进行无子地址多字节读
;入口参数:器件从地址SLA  接收数据区MRD  读入字节数NUMBYTE
;出口参数:ACK    为1时操作正确。
;占用R0,R1,ACC
IRDNBYTEEXT:    
         CLR    ACK
         MOV    R0,#MRD
         MOV    R1,NUMBYTE
         ACALL  GETBUS
         MOV    A,SLA
         INC    A
         ACALL  SENDBYTE        ;器件寻址
         MOV    A,I2STAT
         CJNE   A,#40H,IRDNEEND
         
IRDNE_L1:DJNZ   R1,IRDNE_L2
         MOV    I2CON,#40H    ;取最后一个数据后发送非应答位
         JNB    SI,$        
         MOV    A,I2STAT        
         CJNE   A,#58H,IRDNEEND
         MOV    A,I2DAT
         MOV    @R0,A          ;数据存入MRD区中(R0指针指向MRD区)
         SETB   ACK
IRDNEEND:MOV    I2CON,#54H
         RET           
IRDNE_L2:MOV    I2CON,#44H    ;接收数据并发送应答位
         JNB    SI,$
         MOV    A,I2STAT
         CJNE   A,#50H,IRDNEEND ;总线出错即退出
         MOV    A,I2DAT        ;取数据
         MOV    @R0,A          ;数据存入MRD区
         INC    R0
         SJMP   IRDNE_L1
 
用兰色的程序是指多字节读出来对吗,如果有三个数据,那么这三个数据应该在以下程序读完了吧 :IRDNE_L2:MOV    I2CON,#44H    ;接收数据并发送应答位
         JNB    SI,$
         MOV    A,I2STAT
         CJNE   A,#50H,IRDNEEND ;总线出错即退出
         MOV    A,I2DAT        ;取数据
         MOV    @R0,A          ;数据存入MRD区
         INC    R0
         SJMP   IRDNE_L1
我的问题是:这里数据已经读完了,为什么上面红色字体的还出现读数据,着个数据读出来的是什么数据,假如我要读的数据是01H,02H,03H这个三个数据,那么在在红色字体的程序读出来的是01H,还是03H,还是两个都不是,

相关帖子

沙发
dp51| | 2007-11-15 16:21 | 只看该作者

在周立功论坛中不是有人回了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

16

帖子

0

粉丝