打印

I2C程序问题

[复制链接]
1497|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lmyuanyuan|  楼主 | 2007-5-15 16:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用P89C668(带I2C口)(做主发送器),初始化AD公司的一片用于视频的模数转换的芯片AD9882(有I2C接口)(从接收器),可是AD9882没有响应.
程序如下:
S1CON     DATA    0D8H
S1STA     DATA    0D9H
S1DAT     DATA    0DAH
S1ADR     DATA    0DBH
CR0       BIT     0D8H
CR1       BIT     0D9H
AA        BIT     0DAH
SI        BIT     0DBH
STO       BIT     0DCH
STA       BIT     0DDH
ENS1      BIT     0DEH
SDA       BIT     97H
SCL          BIT     96H
SLA       DATA    50H
SUBA      DATA    51H
NUM       DATA    52H
      ORG   0000H
         LJMP  MAIN
      ORG   0190H
ERR:  SETB  P2.0
      CLR   P2.0
      RET
      ORG   0200H
MAIN: MOV   R4,#90H
      DJNZ  R4,$
      CLR   SCL
      SETB     SDA
      JNB   SDA,ERR
      SETB  SCL
      JNB   SCL,ERR
      CLR   P2.1
      MOV   S1CON,#0C5H
      SETB  STA
      JNB   SI,$
      MOV   SLA,#98H
      MOV   DPTR,#ADDATA
      MOV   R1,#0AH
      MOV   A,SLA
      MOV   S1DAT,A 
      MOV   S1CON,#0C5H
      JNB   SI,$
      MOV   A,S1STA
      CJNE  A,#18H,WEND
      MOV   A,01H
      MOV   S1DAT,A
      MOV   S1CON,#0C5H
      JNB   SI,$
      MOV   A,S1STA
      CJNE  A,#28H,WEND
L1:      CLR   A
      MOVC   A,@A+DPTR
      MOV   S1DAT,A
      MOV   S1CON,#0C5H
      JNB   SI,$
      MOV   A,S1STA
      CJNE  A,#28H,WEND
      INC   DPTR
      DJNZ  R1,L1
      SETB  P2.1
WEND: MOV   S1CON,#0D5H
     
ADDATA:DB 53H,0F0H,68H,00H,40H,44H,20H,66H,66H,66H
      END

相关帖子

沙发
lmyuanyuan|  楼主 | 2007-5-15 16:52 | 只看该作者

带注解的...

S1CON     DATA    0D8H
S1STA     DATA    0D9H
S1DAT     DATA    0DAH
S1ADR     DATA    0DBH
CR0       BIT     0D8H
CR1       BIT     0D9H
AA        BIT     0DAH
SI        BIT     0DBH
STO       BIT     0DCH
STA       BIT     0DDH
ENS1      BIT     0DEH
SDA       BIT     97H
SCL          BIT     96H
SLA       DATA    50H
SUBA      DATA    51H
NUM       DATA    52H
      ORG   0000H
         LJMP  MAIN
      ORG   0190H
ERR:  SETB  P2.0
      CLR   P2.0
      RET
      ORG   0200H
MAIN: MOV   R4,#90H        ;延时等待其它芯片复位好
      DJNZ  R4,$
      CLR   SCL; 按时    ;         盛大
      SETB     SDA
      JNB   SDA,ERR        ;SCL SDA 短路或SDA 被锁为低
      SETB  SCL
      JNB   SCL,ERR        ;SCL 被锁为低
      CLR   P2.1        ;设置标志位
      MOV   S1CON,#0C5H      ;启动总线
      SETB  STA
      JNB   SI,$
      MOV   SLA,#98H
      MOV   DPTR,#ADDATA
      MOV   R1,#0AH
      MOV   A,SLA          ;器件寻址
      MOV   S1DAT,A 
      MOV   S1CON,#0C5H      ;发送器件地址
      JNB   SI,$
      MOV   A,S1STA
      CJNE  A,#18H,WEND      ;发完送器件地址,若无应答则退出操作
      MOV   A,01H
      MOV   S1DAT,A
      MOV   S1CON,#0C5H      ;发送器件子地址(内部寄存器首地址)
      JNB   SI,$
      MOV   A,S1STA
      CJNE  A,#28H,WEND      ;发送完器件子地址(内部寄存器首地址),若无应答则退出操作                            
L1:      CLR   A
      MOVC   A,@A+DPTR
      MOV   S1DAT,A
      MOV   S1CON,#0C5H      ;发送一个字节数据
      JNB   SI,$
      MOV   A,S1STA
      CJNE  A,#28H,WEND      ;发送完一个字节数据,若无应答则退出操作
      INC   DPTR
      DJNZ  R1,L1
      SETB  P2.1   ;设置标志位
WEND: MOV   S1CON,#0D5H                  ;结束总线
     
ADDATA:DB 53H,0F0H,68H,00H,40H,44H,20H,66H,66H,66H
      END

使用特权

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

本版积分规则

6

主题

12

帖子

0

粉丝