打印

SD7218AP为何写不进指令

[复制链接]
1711|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
menghaiyang|  楼主 | 2012-8-13 15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC12C5A6OS2和SD7218M 组成的8位显示电路
单片机晶振为11.0592Mhz, SD7218为20Mhz;     
地址为A2=0,A1=0,A0=0,SDA和SCL有10K上拉地址
...............
STA:
SETB VSDA               ;启动I2C总线
SETB  VSCL      
LCALL DELAY
JB  VSDA,STA1
SETB FLAG.1
STA1:
CLR VSDA
LCALL DELAY
CLR VSCL
RET
STOP:
CLR VSDA            ;停止I2C总线数据传送
SETB VSCL
LCALL DELAY
SETB VSDA
RET
GEARET:
RET
SENDLH:
MOV A, TXBUF         ;发送一个字节,由高位到低位发送   
MOV R3,#08H  
SENDL:
MOV C,ACC.7           
  MOV VSDA,C
LCALL DELAY
SETB VSCL
LCALL DELAY
CLR VSCL
LCALL DELAY
RL A
DJNZ R3,SENDL            
MOV 31H,#50
SETB VSDA            ;检查应答位是否正常
SETB  VSCL
  CLR 28H.0
NOP
NOP
NOP
NOP
NOP
NOP
NOP
WRACK:
MOV C,VSDA
MOV F0,C
JNB   F0, GEARET      ;检查ACK信号是否正常
DJNZ 31H,WRACK   ;没有应答继续检测
SETB  28H.0            ;置ACK出错标志位
   RET
WRIETLED:
LCALL STA             ;写8个LED8数据,总线启动
JNB FLAG.1,WRIET1
LJMP ERRSTOP
WRIET1:
MOV   A,#50H        ;送SD7218地址
MOV TXBUF,A         
LCALL SENDLH           ;调用发送一个字节子程序
  JNB   28H.0,WRIET2     
LJMP  ERRSTOP          ;ACK信号不正常则退出?
WRIET2:
MOV R2,#DECODE    ;送多字节数据且译码命令
MOV   TXBUF,R2
LCALL SENDLH           
JNB   28H.0,WRIET3     ;通用标志位出错吗?否,为0转
LJMP  ERRSTOP          ;SDA线被箝位为低电平则退出
WRIET3:
MOV   R0,#DIG1         
MOV R1,#08H         
WRIET4:
MOV A,@R0            
MOV TXBUF,A            
LCALL SENDLH           ;调用发送一个字节子程序
JNB    28H.0,WRIET5     
LJMP   ERRSTOP    ;ACK信号不正常则退出?
WRIET5:
INC R0
INC R2
DJNZ R1, WRIET4      
LCALL STOP             ;应答信号正常调用关闭IIC总线子程序
RET                     
ERRSTOP:
LCALL STOP      ;应答信号出错调用关闭IIC总线子程序
RET
......................
请各位大虾给看看,是那一句程序出错了。程序运行到写完地址后,就没有正确的应答信号,退出写程序。延时时间为30us,

相关帖子

沙发
menghaiyang|  楼主 | 2012-8-13 15:52 | 只看该作者
是10K上拉电阻

使用特权

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

本版积分规则

0

主题

3

帖子

0

粉丝