大神 请帮我解惑

2019-07-15 21:53发布

void write_byte(uchar date) //完成IIC通信的一个字节的 主写从 的接口函数。
{
uchar i,temp;
temp=date;                           
for(i=0;i<8;i++)
{
  temp=temp<<1;               
  scl=0;                              
  delay();               
  sda=CY;         这个事循环八次将date 赋值给 sda 么?
  delay();                 
  scl=1;                  
   delay();                    
}
scl=0;     
delay();
sda=1;                              sda=1 这个是是释放总线  ,这样会不会和前面的  sda =CY;有冲突??
delay();
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
qq729101414
2019-07-16 00:57
sda=CY;         这个事循环八次将date 赋值给 sda 么?  这个是的
keil2 对于temp=temp<<1; 汇编如下:
MOV A,Rn
ADD A,ACC(0XE0)  ;这句运行的结果相当于先循环移位再清最低位为0
MOV Rn,A


sda=1这个是没有冲突的,数据位在上一个上升沿的时候已经被IIC器件识别。为了丛机响应应答,才sda=1。{:1:}{:1:}{:1:}

一周热门 更多>