?? twi.c
字號:
void starti2c()
{ uchar i=20;
while(i--)
{ sda=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
scl=1;
_nop_();
_nop_();
_nop_();
if(sda)
{ _nop_();
_nop_();
_nop_();
_nop_();
sda=0;
_nop_();
_nop_();
_nop_();
_nop_();
scl=0;
return;
}
_nop_();
_nop_(); //1.2us
_nop_();
scl=0;
}
}
void stopi2c()
{ sda=0;
_nop_();
_nop_();
_nop_();
scl=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
sda=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
scl=0;
}
void mack()
{ scl=0;
sda=0;
_nop_(); //min 0
_nop_();
_nop_();
_nop_();
scl=1;
_nop_(); //min 0.6us
_nop_();
_nop_();
_nop_();
scl=0;
_nop_();
_nop_();
_nop_(); //min 100ns
_nop_();
scl=0;
}
/*
void mnack()
{ sda=1;
_nop_();
_nop_();
_nop_();
_nop_();
scl=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
scl=0;
_nop_();
_nop_();
_nop_();
_nop_();
sda=0;
}
*/
void cack()
{ sda=1;
_nop_();
_nop_();
scl=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
ack=!sda;
scl=0;
_nop_();
_nop_();
_nop_();
_nop_();
}
uchar rdbyte()
{ uchar i,dat;
sda=1;
for(i=0;i<8;i++)
{ scl=0;
_nop_();
_nop_();
_nop_();
_nop_();
scl=1;
_nop_();
_nop_();
_nop_();
_nop_();
dat=dat<<1;
dat|=(uchar)sda;
}
scl=0;
return(dat);
}
void wrbyte(uchar dat)
{ uchar i;
for(i=0;i<8;i++)
{ scl=0;
sda=(bit)(dat&0x80);
dat=dat<<1;
_nop_();
_nop_();
scl=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
scl=0;
}
void wrbytes(uchar idata *dataPtr,uchar romAddr,uchar n)
{ uchar i,romAddrBak,idata *dataPtrBak,m=30;
i=n;romAddrBak=romAddr;dataPtrBak=dataPtr;
while(m--)
{ starti2c();
wrbyte(0xa0);
cack();
if(!ack) continue;
wrbyte(romAddrBak);
cack();
if(!ack) continue;
for(;i>0;i--)
{ wrbyte(*dataPtrBak++);
cack();
if(!ack) break;
}
if(i>0) continue;
break;
}
stopi2c();
}
void rdbytes(uchar romaddr,uchar idata *dataPtr,uchar n)
{ uchar i;
for(i=0;i<30;i++)
{ starti2c();
wrbyte(0xa0);
cack();
if(!ack) continue;
wrbyte(romaddr);
cack();
if(!ack) continue;
starti2c();
wrbyte(0xa1);
cack();
if(!ack) continue;
for(;n>0;n--)
{ *dataPtr++=rdbyte();
mack();
}
break;
}
stopi2c();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -