?? standard_i2c.h
字號:
/*--------------------------------------------------------------------------
I2C.H
Design For : I2C 器件
Description: I2C總線的標準通訊模式(12MHz晶振)
Author:xieqin
CopyRight:2004.9.7
--------------------------------------------------------------------------*/
#ifndef __I2C_H__
#define __I2C_H__
#include<intrins.h>
sbit SCL=P1^1; //串行時鐘口
sbit SDA=P1^0; //串行數據口
void Start_I2C() //申請I2C總線函數
{
SDA=1;
SCL=1;
_nop_(); _nop_();_nop_(); _nop_();
SDA=0;
_nop_(); _nop_();_nop_(); _nop_();
SCL=0;
}
void Stop_I2C() //釋放I2C總線函數
{
SDA=0;
SCL=1;
_nop_(); _nop_();_nop_(); _nop_();
SDA=1;
_nop_(); _nop_(); _nop_(); _nop_();
SCL=0;
}
void AckS_I2C(bit c) //發送應答位函數
{
if(c)SDA=1;
else SDA=0;
SCL=1;
_nop_(); _nop_(); _nop_(); _nop_();
SCL=0;
}
bit SendByte_I2C(unsigned char val)//發送單字節數據函數
{
unsigned char x,i;
bit c;
for(x=0x80,i=0;i<8;i++,x>>=1)
{
if(val&x)SDA=1;
else SDA=0;
SCL=1;
SCL=0;
}
SDA=1;
SCL=1;
_nop_(); _nop_(); _nop_(); _nop_();
c=SDA;
SCL=0;
return c;
}
unsigned char ReadByte_I2C() //接收單字節數據函數
{
unsigned char i,x,val;
for(SDA=1,i=0,x=0x80,val=0x00;i<8;i++,x>>=1)
{
SCL=0;
_nop_(); _nop_(); _nop_(); _nop_();
SCL=1;
if(SDA)val|=x;
}
SCL=0;
return val;
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -