微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 大神 请帮我解惑

大神 请帮我解惑

时间:10-02 整理:3721RD 点击:
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();
}

sda=CY;         这个事循环八次将date 赋值给 sda 么?  这个是的
keil2 对于temp=temp<<1; 汇编如下:
MOV A,Rn
ADD A,ACC(0XE0)  ;这句运行的结果相当于先循环移位再清最低位为0
MOV Rn,A

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top