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();
}
keil2 对于temp=temp<<1; 汇编如下:
MOV A,Rn
ADD A,ACC(0XE0) ;这句运行的结果相当于先循环移位再清最低位为0
MOV Rn,A
sda=1这个是没有冲突的,数据位在上一个上升沿的时候已经被IIC器件识别。为了丛机响应应答,才sda=1。{:1:}{:1:}{:1:}
一周热门 更多>