?? i2c.c
字號:
#include "config.h"
bit _b_ack;
void Start_I2C(void) //啟動I2C總線
{
SDA=1;
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SDA=0;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SCL=0;
_Nop();
_Nop();
}
void Stop_I2C(void) //結束I2C總線
{
SDA=0;
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SDA=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
}
void SendByte(unsigned char c)
{
unsigned char counter;
for(counter=0;counter<8;counter++)
{
if((c<<counter)&0x80)
SDA=1;
else
SDA=0;
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SCL=0;
}
_Nop();
_Nop();
SDA=1;
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
if(SDA)
_b_ack=0;
else
_b_ack=1;
SCL=0;
_Nop();
_Nop();
}
unsigned char RcvByte(void)
{
unsigned char retc,counter;
retc=0;
SDA=1;
for(counter=0;counter<8;counter++)
{
_Nop();
SCL=0;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
retc<<=1;
if(SDA)
retc++;
_Nop();
_Nop();
}
SCL=0;
_Nop();
_Nop();
return(retc);
}
void Ack_I2C(bit a)
{
if(a)
SDA=1;
else
SDA=0;
_Nop();
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
_Nop();
SCL=0;
_Nop();
_Nop();
}
/*
bit ISendByte(unsigned char sla,unsigned char c)
{
Start_I2C();
SendByte(sla);
if(!ack)
return(0);
SendByte(c);
if(!ack)
return(0);
Stop_I2C();
return(1);
}
bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)
{
unsigned char i;
Start_I2C();
SendByte(sla);
if(!ack)
return(0);
SendByte(suba);
if(!ack)
return(0);
for(i=0;i<no;i++)
{
SendByte(*s);
if(!ack)
return(0);
s++;
}
Stop_I2C();
return(1);
}
bit IRcvByte(unsigned char sla,unsigned char *c)
{
Start_I2C();
SendByte(sla+1);
if(!ack)
return(0);
*c=RcvByte();
Ack_I2C(1);
Stop_I2C();
return(1);
}
bit IRcvStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)
{
unsigned char i;
Start_I2C();
SendByte(sla);
if(!ack)
return(0);
SendByte(suba);
if(!ack)
return(0);
Start_I2C();
SendByte(sla+1);
if(!ack)
return(0);
for(i=0;i<no-1;i++)
{
*s=RcvByte();
Ack_I2C(0);
s++;
}
*s=RcvByte();
Ack_I2C(1);
Stop_I2C();
return(1);
}*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -