#include "iic.h"
static void SCK_W(unsigned char x) {SCK = x;}
static void SDA_W(unsigned char x) {SDA = x;}
static unsigned char SDA_R(void) {return SDA;}
void iic_start(void)
{
SDA_W(1);
SCK_W(1);
SDA_W(0);
SCK_W(0);
}
void iic_stop(void)
{
SDA_W(0);
SCK_W(1);
SDA_W(1);
}
void iic_ack(void)
{
SDA_W(1);
SCK_W(1);
SCK_W(0);
}
void iic_write_byte(unsigned char byte)
{
unsigned char i;
for(i=0;i<8;i++)
{
SDA_W(byte & 0x80);
byte <<= 1;
SCK_W(1);
SCK_W(0);
}
}
unsigned char iic_read_byte(void)
{
unsigned char i,buf;
for(i=0;i<8;i++)
{
SCK_W(1);
buf <<= 1;
buf |= SDA_R();
SCK_W(0);
}
return buf;
}
评论0